系統設計的幾點思考

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

前言

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

開關

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

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

監控

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

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

報警方式spa

  • 微信報警線程

  • 郵件報警設計

  • 短信報警3d

運營數據可視化

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

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

數據可視化的做用:

  1. 運營效果的體現

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

  1. 系統迭代效果的檢驗

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

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

運營系統建設

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

最後

  上面是近期對系統設計上的幾點思考。有些是從前輩借鑑過來的,有些則是本身以爲有待改進的,沉澱成文章,但願本身可以從這個方向去。


 

相關閱讀:

Java線程池ThreadPoolExecutor

使用 Mybatis 真心不要偷懶!

再談Java 生產神器 BTrace

Java 生產神器  BTrace

相關文章
相關標籤/搜索