P8实战(一):架构概论,从过去到未来
生活随笔
收集整理的這篇文章主要介紹了
P8实战(一):架构概论,从过去到未来
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
P8架構概論
從過去到未來
緩沖、緩存、復用、分治、親密性、技術選型
回顧一下軟件工程學中的幾個重要詞匯,整個信息化進程中,做調優離不開這些:
- buffer 緩沖,包括:消息隊列 ;操作系統中的IO方式(積攢一個buffer),解決上下游處理速度不匹配的問題;批量計算;啤酒理論
- cache 緩存,包括:pagecache頁緩存;緩存熱點數據提升io速度;CPU的多級緩存;數據庫緩存中間件
緩沖是解決單次大小問題的,緩存是用來復用的 - pool 復用,池化,包括:連接池、線程池、對象池、字符串常量池、享元,減少三次握手成本、線程創建成本等各種成本
- sharding 分治,單機多機都使用,包括集群:分片集群,降低復雜度。HashMap也可以。
- sticky 親密(粘性):某一個線程親密到某一個CPU上;threadlocal;數據路由相同ip或session或商品分配到不同的負載機器上。
(可以通過配置負載均衡層的策略實現。例如,并發到來的時候,從C1客戶端發來的請求被轉發Server1上,從C2客戶端發來的請求被轉發到Server2上,這樣在單機使用線程池,在線程池中單機加鎖,要優于在多機加分布式鎖,因為分布式鎖要消耗網絡通信的成本)
再比如,你小區有兩個門,進門需要登記。你這次從北門登記過了,下次再從北門過就不用登記了,你從南門的走話還要再登記。 - balance/trade-off 權衡:做技術選型,相同的需求有很多方法能夠實現,這時候你需要選擇
QPS、TPS、RT、PV、UV、并發數、線程數
查看cpu核心數:lscpu
一般推薦:線程數量是CPU數量的2倍,是根據上面的公式,以掛起時間、運行時間1:1的比例計算的。
推薦一些書:
服務拆解:ESB企業服務總線、SOA->微服務
單體,全量:
SOA,ESB,微服務:
拆解,分層:
- 按照流程拆解,是最常見的方法。如,TCP/IP協議
- 按照服務拆解,如SOA,服務可大可小,偏業務的角度
- 按照功能拆解,登錄(權限認證),購物,支付,比服務更小,最終功能變成獨立的服務運行起來。偏向于微服務。
你做業務拆分的時候,要考量開發的成本,合理根據業務需求,規劃企業架構,而不是因為技術而技術。
拆分的過細,反而會增加負擔。
AKF劃分
三高:高可用,高性能,可擴展
x軸:數據的復制是全量的,基于主備,可以完成主從的讀寫分離,解決可用性,性能優化。
y軸:基于業務的拆分,業務太大超過了CPU算力或超過了硬件的負載,這時候我們按服務拆分。可以將不同的業務放進不同的Redis當中
z軸:在已經按照業務拆分了的情況下,并發量仍然很大,這時解決傾斜的方式:sharding,例如 0-99,100-199,...一般用代理來實現負載均衡。
總結
以上是生活随笔為你收集整理的P8实战(一):架构概论,从过去到未来的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P8-DevOps中的CI/CD环境搭建
- 下一篇: P8实战(二):分布式锁前置技能 etc