成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

對號入座,快看看你的應用系統用了哪些高并發技術?

開發 架構
業務數據通常存儲在支持事務的關系型數據庫中,當在面對復雜查詢場景時捉襟見肘,可將數據通過binlog異構到ES中,ES支持復雜場景的查詢并且有較高的性能,輕松突破數據庫單表數據量大及多表關聯查詢瓶頸。

一 系統簡介

百舸流量運營平臺承接著京東金融APP核心資源位和京東APP部分重要資源位,大促單接口QPS達到10w+,壓測單接口到20w+,典型的c端讀鏈路高并發場景。接下來,聊聊我們的系統都有哪些應對高并發的“武功秘籍”。

二 “武功秘籍”

1 緩存(redis緩存,本地緩存)

緩存是提高系統的并發和提升系統的性能利器。redis分布式緩存用來解決緩存容量和性能問題,本地緩存用來解決redis的熱key問題和提升性能。

詳情可以查看之前的文章《服務端應用多級緩存架構方案》。

2 限流

限流是保護系統的一種策略,限流是控制接受請求的速率,通過壓測提前預知系統可承載的并發量,是對系統資源的前置保護,保證系統容量范圍內的請求能夠正常返回,超過容量的請求丟棄。

可通過JSF配置限流或者sentinel實現限流。經典算法:令牌桶,漏桶,滑動時間窗口。

3 熔斷降級

熔斷也是保護系統的一種手段,分布式系統中系統之間通過微服務調用,偶爾會出現依賴的某個服務不可用或者耗時驟增,導致耗盡業務線程池,從而拖垮整個服務,可通過sentinel配置慢調用比例或者異常比例策略,達到熔斷閾值后,接下來的熔斷時長內請求會自動被熔斷。經過熔斷時長后熔斷器會進入探測恢復狀態(HALF-OPEN 狀態),若接下來的一個請求成功通過后,則結束熔斷,否則繼續熔斷。 實際過程中,需要結合上下游鏈路,設置合理的超時時間以及兜底數據。

常見的降級類型有:日常降級;大促非核心接口降級;大促日志降級,只打印error級別日志。

4 異步(CompletableFuture,MQ)

系統解耦:完成一項業務指令通常需要多個微服務協作,核心業務完成后,可通過消息的方式進行異步解耦,讓其他服務訂閱消息,完成各自的業務邏輯,適用于無需用戶等待感知的場景。

提升性能:在C端用戶等待的感知的場景,需要多個微服務協作,如果串行RPC調用,耗時是每個服務耗時之和,可通過CompletableFuture實現RPC異步調用,當使用時匯總結果,提升系統的性能。

5 池化技術

池化技術思想: 池化思想的解決的核心思想是通過預先創建數據庫連接或者線程放入池中,以便在需要時可以重復使用,減少創建和銷毀的開銷,提高系統的性能和并發。

數據庫連接池:如果是部署多臺機器,注意多臺機器連接數是否超過數據庫最大連接數,避免出現連接不上問題。

業務線程池:自定義線程池,根據業務采用合適的拒絕策略,注意線程隔離,避免某個接口異常拖垮整個應用。

6 代碼優化

減少調用鏈路,優化代碼邏輯執行順序,將阻斷校驗流程前置,優化數據結構和算法,優化查詢邏輯,減少IO次數等。

7 JVM調優

使用G1垃圾回收器,應用系統根據自己的業務情況配置JVM參數,常規4C8G通用配置可參考:

-Xms4096m -Xmx4096m -XX:MaxMetaspaceSize=256m -XX:MetaspaceSize=256m -XX:+UseG1GC -XX:MaxGCPauseMillis=80

核心參數:-Xms初始堆大小,-Xmx最大堆大小,MaxMetaspaceSize最大元空間大小,MetaspaceSize表示Metaspace首次使用不足時觸發Full GC(全面垃圾回收)的閾值,垃圾回收機制使用G1回收器,MaxGCPauseMillis在jvm垃圾回收過程中允許停頓的最大毫秒時間。

8 分治思想,橫向擴展,

應用服務應該設計為無狀態的,可通過增加應用實例數量來應對突發流量,將流量分到每臺機器上,同樣可以將應用進行按照業務拆分,單獨部署,提高系統并發。

合并批量請求,將多次調用改為一次批量調用,減少網絡開銷。

9 預熱

通過定時任務或者初始化腳本提前將數據加載到內存,提高系統的性能,常見的有緩存數據預熱,ES數據預熱等。

針對應用升級或者重啟抖動,可以通過JSF預熱的方式,應用重啟后,在預熱時間內,流量逐漸增加的方式,減少抖動。

JSF預熱可參考文章《后端服務之應用預熱》

10 數據異構

業務數據通常存儲在支持事務的關系型數據庫中,當在面對復雜查詢場景時捉襟見肘,可將數據通過binlog異構到ES中,ES支持復雜場景的查詢并且有較高的性能,輕松突破數據庫單表數據量大及多表關聯查詢瓶頸。

數據異構可參考文章《記一次生產慢sql索引優化及思考》 中的目錄五:長期優化方案。

11 分庫分表,數據庫優化

分庫和分表各抗什么?

分表:當一個表中的數據量過大時,會導致查詢速度變慢、插入和更新操作效率下降等問題。通過分表,每個小表的數據量就相對較小,性能問題得以緩解。

分庫:當一個數據庫實例無法承受大量數據的存儲和并發時,可通過分庫來分散系統壓力。

通常情況下,分庫和分表是結合使用的。

數據庫優化中常見的是sql優化,是否命中索引,提高服務器硬件配置。

三 總結

以上為百舸系統處理高并發問題的一些策略,高并發架構是演進而來,避免過度設計,沒有一個技術能解決所有的問題,抓住關鍵矛盾,使用前一定要做好調研和評估,還有哪些?歡迎補充。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2010-07-07 09:10:58

Linux

2020-11-07 16:37:36

程序員技術工資

2010-06-30 10:37:33

職業性格

2013-10-14 13:38:16

飛魚星無線云飛魚星路由器飛魚星

2020-11-19 08:58:00

程序員數字強迫癥

2010-04-16 16:56:14

服務器租用數據融合數據中心

2022-12-01 11:44:32

數據分析項目B2B

2011-03-01 10:07:04

系統更新

2022-12-22 11:37:05

HUAWEI

2021-06-10 14:11:56

微信新功能移動應用

2016-09-01 09:01:00

MySQLRedisJMQ

2022-03-31 17:38:09

高并發系統架構設計負載均衡

2021-03-26 10:48:14

代碼語言提交

2022-03-16 15:28:17

黑產安全網絡

2021-12-26 22:55:26

Python下劃線編程

2011-03-09 10:44:48

MySQLPythonPHP

2021-09-23 22:20:17

數字人民幣支付寶微信

2018-11-12 13:08:05

蘋果維修顯示屏

2017-11-16 13:31:41

大數據淘寶雙11

2019-11-06 15:01:30

大數據Hadoop技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 综合另类 | 久久久精品视频一区二区三区 | 国产激情一区二区三区 | 久久九九影视 | 草久久免费视频 | 免费黄色网址视频 | 一级黄在线观看 | 亚洲狠狠丁香婷婷综合久久久 | 亚洲人人 | 亚洲精品一区中文字幕 | www.久草.com| 一区二区三区在线看 | 国产精品久久久久久久久久免费看 | 草久久久 | 亚洲国产精选 | 亚洲国产精品一区二区三区 | 成人黄色电影在线播放 | 国产毛片视频 | 国产一区二区三区视频免费观看 | 精品久久久久久久久久久下田 | 91精品国产91久久综合桃花 | 欧美黄在线观看 | 人操人人| 欧美一二三四成人免费视频 | 国产在线一区二 | 中文字幕在线免费观看 | 精品一区二区三区av | 亚洲一区国产 | 国产欧美久久精品 | 精品美女视频在免费观看 | 一级片子 | 欧美日韩国产一区 | 久久久久久国产 | 国产精品久久久久久久久久免费看 | 色综合色综合色综合 | 久久丝袜视频 | 99精品视频在线观看 | 精品自拍视频在线观看 | 亚洲一区二区三区在线视频 | 日本人爽p大片免费看 | 欧美精品中文字幕久久二区 |