小雨傘已上線的觸達系統 在過去一年裡,經過多次迭代,已經基本達到當時系統設計的目標。隨著業務接入的增多,也引來了我的一些思考。
當前觸達系統工作模式
觸達系統將要面臨的挑戰
1.隨著大量業務的接入,對於觸達的消費速度會面臨一定挑戰,當然可以通過簡單的擴充套件 消費程序或者直接加機器橫向擴充套件可以解決。
2.觸達系統作為基礎業務,對於增加觸達型別多等操作,存在更大的風險,事故的影響範圍會越來越大,解耦服務及如何在不影響現有服務的情況下新增功能或訊息型別會變得更重要。
3.如何更有效的利用系統資源,現有的程序模式相對執行緒、協程而言,占用更多系統資源(記憶體,cpu),且隨程序增加會越來越明顯(花在上下文切換時間越來越多),系統資源利用率不高。
4.無法做到對某種訊息的單獨擴充套件。比如客服訊息的使用量大,而郵件的使用量相比客服訊息小很多,如果要擴充套件,在現有模式下,只能整體擴充套件,無法單獨擴充套件客服訊息的消費者,以提高某種訊息型別的消費速度。同時各種訊息型別單位時間內處理訊息的條數存在差異。
5.redis作為訊息佇列實現,無法實現消費確認機制,會存在訊息丟失的可能,且在併發速度上,無法和專業的mq軟體到達相同的併發數量級。
觸達系統改進的想法
1.在不改變現有觸達系統的功能和協議的情況下,改進消費者的實現方式。
2.公司現有的基礎支撐
etcd 支撐實現服務註冊和服務發現
rabbitmq 代替 redis 實現更高量級的消費速度和訊息可靠性
go 語言的推廣,go協程模式可實現更少的資源占有和更高的併發速度
3.系統業務架構圖:
系統主要分以下角色
receiver 服務接收由於介面傳送的訊息協議,並解析傳送到對應訊息服務的佇列中。
consumer 負責消費訊息,將訊息傳送到客戶端。
alarm system 告警系統(需要更多業務思考)
優化目的
解耦每種訊息消費者並實現新訊息型別服務註冊與服務發現。做到在不影響現有系統的情況下擴充套件功能。
實現不同訊息的並行消費和水平擴充套件。
更換訊息佇列模式,實現訊息可靠傳遞與消費
減少資源使用提高消費速度。
建立觸達監控機制
除錯觸屏的一些積累
原文 最近在做一些除錯觸屏的工作,經過一段時間的接觸,碰到了一些問題,隨手記下。電容屏的的驅動,常見的問題是 1.虛擬按鍵的敏感區域不正確 比如觸碰虛擬按鍵的圖示,按鍵無反應,但是觸碰按鍵圖示的右上角,按鍵的反應卻正常。2.在觸屏測試時,畫的線不圓滑,有的折線很明顯 觸屏的互動方式有種叫做握手模式,...
Linux 系統優化的一些建議(核心優化)
關閉swap 如果伺服器上有執行資料庫服務或訊息中介軟體服務,請關閉交換分割槽 echo vm.swappiness 0 etc sy程式設計客棧sctl.conf sysctl p oom killer 一般我們的linux服務都是混部服務的,每個程式申請的物理記憶體都是共享的 例如物理記憶體只有...
關於觸屏事件的一些操作
需要在你的viewcontroller裡重寫幾個方法 開始觸控的方法 void touchesbegan nsset touches withevent uievent event 觸控取消的方法 void touchescancelled nsset touches withevent uieve...