首頁 後端開發 Golang 每個週期的類似事件重複資料刪除

每個週期的類似事件重複資料刪除

Sep 06, 2024 pm 10:30 PM

Similar Event De-duplication per Period

活動方向很棒!

無論您使用的是 GCP Pub/Sub、Kafka、Kinesis、RabbitMQ、NATS JetStream、Redis Pub/Sub 或任何無數的替代方案,您學到的模式都適用於它們。

每個週期的相似事件重複資料刪除

即使您享受一次性交付,您仍然會遇到類似的事件,而您並不想多次對其做出反應。

一個很好的例子就是可操作的警報。當第一次發現問題時,最好升級以引起某人的注意,需要採取行動。第700次只是噪音。

如果您要傳送事件,您有欄位(無論是JSON/protobuf/struct 等),您只需要確定按哪些欄位對事物進行分組,以便將它們分類到您的時間段的同一個儲存桶中。

您可以取得這些事件欄位的任意集合的雜湊值,並計算它們的雜湊值,作為某些持久性來源(鍵值儲存、SQL 等)的關鍵,例如,在Go 中:https: //go。 dev/play/p/Ain8FIJiDit

然後將該雜湊值與過期時間戳一起儲存。如果您在過期時間戳之前遇到任何更多「類似」事件,請忽略它們,因為它們已經引起了某人的注意。

現實生活中的例子

在工作中,我們與學區打交道,他們向我們提供他們的名冊,並定期(每晚)同步。但有時學區的人會犯錯,例如不小心刪除了名冊中的所有學生。哎呀!不過,如果他們沒有解決問題,我們其實不需要多次繼續提醒。

學區以及我們無法對其進行排班的原因是複合唯一鍵。

每當我們提交JIRA 票證(或向Slack 發送警報)時,我們首先計算這兩個鍵的哈希值,並查看是否已發送匹配的哈希值,如果是,則最後一個警報是否已過期(24小時或其他),然後發送新的並更換舊的。例如,一個學區的名冊失敗可能會有一些通用的內容:

v := map[string]any{
        "district":  "00be2b9c-ef18-4c27-8fa9-087dd5f39f27",
        "attention": "rosterops",
        "reason": "roster change exceeds threshold",
    }

直到第二天你才會聽說該學區未能再次進行輪班。但是,如果有人手動嘗試同步,並且該地區發生了不同類型的故障(現在重新運行會給出“服務不可用”,而不是超過更改容忍閾值:

v := map[string]any{
        "district":      "00be2b9c-ef18-4c27-8fa9-087dd5f39f27",
        "attention": "rosterops",
        "reason": "roster provider is unavailable",
    }

同樣,我們可以對這些欄位的任意集合進行雜湊處理,並將其設為警報實體上的索引資料儲存欄位。 https://go.dev/play/p/Ain8FIJiDit

額外獎金

如果您還保留了另一個字段,例如“狀態”,您可以查看是否有人已經在處理它,並將其成為任何任意警報系統的一個不錯的操作項追蹤器。

以上是每個週期的類似事件重複資料刪除的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1604
29
PHP教程
1510
276
如何在GO中構建Web服務器 如何在GO中構建Web服務器 Jul 15, 2025 am 03:05 AM

搭建一個用Go編寫的Web服務器並不難,核心在於利用net/http包實現基礎服務。 1.使用net/http啟動最簡服務器:通過幾行代碼註冊處理函數並監聽端口;2.路由管理:使用ServeMux組織多個接口路徑,便於結構化管理;3.常見做法:按功能模塊分組路由,並可用第三方庫支持複雜匹配;4.靜態文件服務:通過http.FileServer提供HTML、CSS和JS文件;5.性能與安全:啟用HTTPS、限制請求體大小、設置超時時間以提升安全性與性能。掌握這些要點後,擴展功能將更加容易。

進行音頻/視頻處理 進行音頻/視頻處理 Jul 20, 2025 am 04:14 AM

音視頻處理的核心在於理解基本流程與優化方法。 1.其基本流程包括採集、編碼、傳輸、解碼和播放,每個環節均有技術難點;2.常見問題如音畫不同步、卡頓延遲、聲音噪音、畫面模糊等,可通過同步調整、編碼優化、降噪模塊、參數調節等方式解決;3.推薦使用FFmpeg、OpenCV、WebRTC、GStreamer等工具實現功能;4.性能管理方面應注重硬件加速、合理設置分辨率幀率、控制並發及內存洩漏問題。掌握這些關鍵點有助於提升開發效率和用戶體驗。

在GO中開發Kubernetes運營商 在GO中開發Kubernetes運營商 Jul 25, 2025 am 02:38 AM

編寫KubernetesOperator的最有效方式是使用Go語言結合Kubebuilder和controller-runtime。 1.理解Operator模式:通過CRD定義自定義資源,編寫控制器監聽資源變化並執行調和循環以維護期望狀態。 2.使用Kubebuilder初始化項目並創建API,自動生成CRD、控制器和配置文件。 3.在api/v1/myapp_types.go中定義CRD的Spec和Status結構體,運行makemanifests生成CRDYAML。 4.在控制器的Reconcil

Go PostgreSQL/MySQL的查詢優化技術 Go PostgreSQL/MySQL的查詢優化技術 Jul 19, 2025 am 03:56 AM

TooptimizeGoapplicationsinteractingwithPostgreSQLorMySQL,focusonindexing,selectivequeries,connectionhandling,caching,andORMefficiency.1)Useproperindexing—identifyfrequentlyqueriedcolumns,addindexesselectively,andusecompositeindexesformulti-columnquer

GO頻道解釋了 GO頻道解釋了 Jul 15, 2025 am 03:01 AM

Go的通道分為緩沖和非緩衝兩種,非緩衝通道要求發送和接收同時準備好,適合協調同步操作;而緩衝通道允許數據暫存,適合解耦系統組件。使用時需注意避免向滿緩衝通道寫入或從空通道讀取導致阻塞,以及適時關閉通道以通知接收方數據結束。

Go oauth2客戶端和服務器實現 Go oauth2客戶端和服務器實現 Jul 16, 2025 am 02:57 AM

OAuth2實現分為客戶端和服務端。客戶端使用golang.org/x/oauth2包,步驟為:1.引入包;2.配置客戶端信息並構建Config對象;3.生成授權鏈接;4.處理回調獲取Token;5.構造帶授權的HTTP客戶端。服務端以go-oauth2/oauth2為例,流程包括:1.初始化存儲;2.設置客戶端信息;3.創建OAuth2服務實例;4.編寫路由處理授權和Token請求。注意事項有:跨域問題、狀態校驗、啟用HTTPS、Token有效期管理、Scope控製粒度。

以身例子從stdin中讀取 以身例子從stdin中讀取 Jul 27, 2025 am 04:15 AM

使用fmt.Scanf可讀取格式化輸入,適合簡單結構化數據,但字符串遇空格截止;2.推薦使用bufio.Scanner逐行讀取,支持多行輸入、EOF檢測和管道輸入,並可處理掃描錯誤;3.使用io.ReadAll(os.Stdin)一次性讀取全部輸入,適用於處理大塊數據或文件流;4.實時按鍵響應需第三方庫如golang.org/x/term,常規場景使用bufio已足夠;實際建議:交互式簡單輸入用fmt.Scan,行輸入或管道用bufio.Scanner,大塊數據用io.ReadAll,且始終處理

進行科學計算和數值分析 進行科學計算和數值分析 Jul 23, 2025 am 01:53 AM

Go語言可用於科學計算與數值分析,但需了解其優劣。優勢在於並發支持和性能,適合併行算法如分佈式求解、蒙特卡洛模擬等;社區庫如gonum和mat64提供基礎數值計算功能;可通過cgo或接口調用C/C 、Python實現混合編程提昇實用性。局限在於生態不如Python成熟,可視化和高級工具較弱,部分庫文檔不完善。建議結合Go特性選擇合適場景並參考源碼示例深入使用。

See all articles