<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          抗住百萬高并發(fā)的 6 個關鍵技術!

          共 1609字,需瀏覽 4分鐘

           ·

          2020-09-07 06:40

          Java技術棧

          www.javastack.cn

          關注閱讀更多優(yōu)質文章



          作者:阿凡盧

          出處:http://www.cnblogs.com/luxiaoxun/

          一、什么是高并發(fā)

          高并發(fā)(High Concurrency)是互聯(lián)網(wǎng)分布式系統(tǒng)架構設計中必須考慮的因素之一,它通常是指,通過設計保證系統(tǒng)能夠同時并行處理很多請求。

          高并發(fā)相關常用的一些指標有響應時間(Response Time),吞吐量(Throughput),每秒查詢率QPS(Query Per Second),每秒事務處理量TPS(Transaction Per Second),并發(fā)用戶數(shù)等。

          響應時間:系統(tǒng)對請求做出響應的時間。

          吞吐量:單位時間內(nèi)處理的請求數(shù)量。

          QPS:每秒響應查詢請求數(shù)。

          TPS:每秒響應事務請求數(shù)。

          并發(fā)用戶數(shù):同時承載正常使用系統(tǒng)功能的用戶數(shù)量。

          二、提升系統(tǒng)的并發(fā)能力

          互聯(lián)網(wǎng)分布式架構設計,提高系統(tǒng)并發(fā)能力的方式,方法論上主要有兩種:垂直擴展(Scale Up)與水平擴展(Scale Out)。

          (1)垂直擴展:提升單機處理能力。垂直擴展的方式又有兩種:

          1)增強單機硬件性能,例如:增加CPU核數(shù)如32核,升級更好的網(wǎng)卡如萬兆,升級更好的硬盤如SSD,擴充硬盤容量如2T,擴充系統(tǒng)內(nèi)存如128G;

          2)提升單機架構性能,例如:使用Cache來減少IO次數(shù),使用異步來增加單服務吞吐量,使用無鎖數(shù)據(jù)結構來減少響應時間;

          (2)水平擴展:只要增加服務器數(shù)量,就能線性擴充系統(tǒng)性能。水平擴展對系統(tǒng)架構設計是有要求的,如何在架構各層進行可水平擴展的設計是本文重點討論的內(nèi)容。

          1、系統(tǒng)集群化部署+負載均衡

          (1)添加負載均衡層,將請求均勻打到系統(tǒng)層。

          (2)系統(tǒng)層采用集群化多活部署,扛住初步的并發(fā)壓力。

          2、數(shù)據(jù)庫分庫分表+讀寫分離+分布式數(shù)據(jù)庫

          (1)分庫分表:水平拆分、垂直拆分(弊端太多如關聯(lián)查詢)。

          (2)讀寫分離:主庫寫,從庫讀(數(shù)據(jù)同步延遲)。

          (3)分布式數(shù)據(jù)庫:TiDB(HTAP、兼容MySQL協(xié)議、水平擴展、分布式事務)

          3、緩存

          (1)本地緩存:本地磁盤或內(nèi)存。

          (2)分布式緩存用緩存集群抗住大量的讀請求。

          (3)預緩存,多級緩存。

          4、消息中間件

          (1)系統(tǒng)解耦,數(shù)據(jù)同步。

          (2)請求異步化處理,實現(xiàn)削峰填谷的效果。

          5、應用拆分(微服務)

          (1)按業(yè)務拆分、減少耦合。

          (2)分級部署,擴容縮容。

          (3)應用資源隔離。

          6、CDN(內(nèi)容分發(fā)網(wǎng)絡)

          (1)盡可能避開互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié), 使內(nèi)容傳輸?shù)母旄€(wěn)定。

          (2)CDN能夠實時地根據(jù)網(wǎng)絡流量和各節(jié)點的鏈接,負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節(jié)點上。

          本文版權歸作者和博客園共有,歡迎轉載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
          最近熱文:
          1、我用 Java 8 寫了一段邏輯,同事直呼看不懂
          2、Spring Boot 學習筆記,這個太全了!
          3、吊打 Tomcat ,Undertow 性能很炸!!
          4、Spring Boot 太狠了,一次發(fā)布 3 個版本!
          5、Spring Boot 如何快速集成 Redis?
          6、《Java開發(fā)手冊(嵩山版)》最新發(fā)布
          7、Spring Boot Redis 實現(xiàn)分布式鎖,真香!
          8、國人開源了一款小而全的 Java 工具類庫
          9、國人開源了一款超好用的 Redis 客戶端!!
          10、同事寫了個隱藏 bug,我排查了 3 天!
          掃碼關注Java技術棧公眾號閱讀更多干貨。

          點擊「閱讀原文」獲取面試題大全~

          瀏覽 82
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩一区二区三区视频在线观看 | 国产成人a亚洲精品 | 豆花精品在线视频 | 大鸡巴视频在线免费观看 | 在线播放亚洲高清 |