服務器端開發總結

1.服務異步化
網絡IO處理異步化(NIO, Jetty Continuation,Servlet 3)
服務的異步化(Future, Callable, Runnable, Callback)

2.線程與協程
多線程併發或者協程支持併發,相比而言,協程在處理IO密集型更具優勢

3.緩存無處不在
前端、CGI、後臺能用緩存的地方儘量使用緩存,極大的提高系統性能,包括分佈式緩存,本地緩存等等

4.消息隊列
儘量使用消息隊列解耦系統

5.協議設計
二進制協議或文本協議,常用的PROTOBUF、JSON、XML,或者自定義私有協議,協議設計要儘量保持前向兼容性。

6.核心配置化
對於常用的功能選項以及產品策略,需要做到配置化,變更做到實時下發

7.系統模塊化
大系統儘量模塊化,保持模塊的單一性和模塊間的低耦合,提高模塊的可維護性

8.系統分層
合理的對系統進行分層,保持層次間的獨立變化

9.服務監控
隨時全方位的監控服務狀態,設置合理的服務告警,例如系統請求量,CPU/內存負載情況,消息隊列,成功率,延時等等。

10.服務降級
對於非核心功能支持開關,緊急情況關閉開關降級服務,提供有損服務,避免服務完全不可用。開發設計過程中要區分好關鍵路徑和非關鍵路徑,對於非關鍵路徑允許其失敗,但不影響關鍵路徑

11.服務依賴
對於調用第三方系統接口的情況,根據負載要提前合理設置超時時長,對於第三方系統調用自身接口,主要提前做好頻率限制,防止請求量過大導致雪崩

12.獨立部署
核心模塊與非核心模塊做到獨立部署,應用適當進行拆分部署。即快慢分離,動靜分離,輕重分離

13.業務日誌
系統保留近期的流水日誌,方便問題定位和解決

14.過載保護
前期設計時需要合理評估系統的容量,要設置系統過載閥值,當系統請求量過載時,能運用有效手段進行服務降級。超時必須設置,且要合理預估

15.負載均衡
服務器部署絕對要避免單點,不能因爲一個單點的失敗而使整個系統無法服務,包括接入層、邏輯層、存儲層都要避免單點部署

16.容災備份
核心數據支持跨機房容災,甚至跨城市容災,數據做到熱備或冷備。

17.灰度發佈
新特性發布儘量灰度發佈,能最大程度的減少問題的影響,快速的迭代解決問題

18.服務無狀態
系統儘量做到無狀態,保持橫向的擴展能力,避免有狀態帶來的升級以及維護不方便

19.合理設計
非核心業務,例如業務統計或者上報等等,可以採用無需回包的UDP上報。技術方案有時候要結合具體的業務需求,在性能、一致性等方面可以折中權衡
轉載自:http://blog.csdn.net/kobejayandy/article/details/41741757

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