系統設計的幾點思考

首發於個人公衆號《andyqian》,期待你的關注!

前言

  又有好一陣子沒有更新文章了,今天聊聊系統設計的幾點思考。對於我們來說,始終會獨自設計,研發,迭代系統。爲系統的演進,整個生命週期負責。而負責的系統到底處於什麼狀態?是否健康?是否出現問題?這些都是需要考慮的問題。

開關

  1. 對關鍵流程,進行開關設置。例如:交易開關,資金池開關。對於金融系統而言,特別是出金端,要做好嚴格的把控。其目的主要是:兜底,及時止損。例如系統出現漏洞,安全事件時,能夠及時將其關閉,停止交易。

  2. 對於 TO B 應用而言,則可以定製化開關。如關閉某個企業的出金,交易等。避免系統雪崩,其目的是將系統的影響降到最低。總之可以根據系統的特徵,識別系統的關鍵點,對其進行開關的設置。

監控

  1. 業務監控 (在一定時間內,業務處理數是否達標。) 低於閥值時進行業務報警。

  2. 數據監控,對主流程的關鍵數據進行監控。例如:每日的交易數,交易額,成功筆數,失敗筆數,以及進行 Top 10 的失敗原因進行分析。

報警方式

  • 微信報警

  • 郵件報警

  • 短信報警

運營數據可視化

  1. 對於系統中的關鍵數據,進行可視化展示,並與上一週期進行比較。從而可以通過數據的差異發現問題,從而及時解決問題。例如: 每日的交易數,交易額,成功率,失敗率,與前一日進行比較,前三日,前一週等等進行比較。

  1. 通過圖表的形式,展示每日的註冊數,活躍數 等關鍵數據,並與同期數據進行比較。

數據可視化的作用:

  1. 運營效果的體現

  將同期數據進行比較,及時發現問題。也可以通過數據的增長,體現運營效果,營銷效果。例如:投遞了廣告,做了營銷,是否有效果,效果怎麼樣?就可以通過數據上進行得出。

  1. 系統迭代效果的檢驗

  對於系統中主流程的迭代上線,雖然進行了線上驗證。但始終沒有覆蓋到全部場景,生產流量進來後。通過觀察數據,查看關鍵指標是否降低,以及降低的原因是什麼?從而達到上線質量的驗證。

在沒有引用大數據處理方案時,數據的可視化,則建議在從庫中進行。這樣能避免降低主庫的TPS,因爲可能會涉及到多表連接查詢,從而導致一些無法優化的慢SQL。

運營系統建設

  最近發現,有很多的程序員以及公司,在這方面都很缺乏。系統上線時,對於參數的配置,調整,都是人肉進行SQL調整。這樣耗時耗力,極大的降低了生產效率。而運營系統建設是一種不錯的方式。以前我一直認爲運營系統是輔助性的,不重要,可以隨便寫,只要能用就行。經過一段時間的驗證,這樣的看法有所改觀。現在我認爲運營系統應該歸屬於系統建設的一部分,寫的好更加能夠提高效率。

最後

  上面是近期對系統設計上的幾點思考。有些是從前輩借鑑過來的,有些則是自己覺得有待改進的,沉澱成文章,希望自己能夠從這個方向去。


 

相關閱讀:

Java線程池ThreadPoolExecutor

使用 Mybatis 真心不要偷懶!

再談Java 生產神器 BTrace

Java 生產神器  BTrace

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章