色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

高并發系統的藝術:如何在流量洪峰中游刃有余

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-08-05 13:43 ? 次閱讀

前言

我們常說的三高,高并發、高可用、高性能,這些技術是構建現代互聯網應用程序所必需的。對于京東618備戰來說,所有的中臺系統服務,無疑都是圍繞著三高來展開的。而對于京東龐大的客戶群體,高并發的要求尤為重要。用戶對在線服務的需求和期望不斷提高,系統的并發處理能力成為衡量其性能和用戶體驗的關鍵指標之一。高并發系統不僅僅是大型互聯網企業的專利,對于任何希望在市場中占據一席之地的公司來說,能夠處理大量并發請求的能力都是至關重要的。

高并發系統的設計和實現是一個復雜且多層次的過程,涉及到硬件資源的合理利用、系統架構的精心設計、并發控制技術的應用以及性能調優等多個方面。無論是電商平臺在大促期間應對突發流量,還是社交媒體在熱點事件發生時的流量激增,抑或是金融系統在交易高峰期的平穩運行,都需要一個高效、穩定、可擴展的高并發系統作為支撐。

接下來我通過一張思維導圖展開我的分享,幫大家梳理一下一個高并發系統所需要考慮的技術點。

wKgZomawZnKANlnmAAj89Sh41Aw003.png

單機維度

在單機維度上, 我們一般分為硬件維度和代碼維度兩個方向考慮。硬件維度比較簡單,就是提升單機的硬件性能和網絡帶寬。而代碼維度,則是在高并發系統架構設計時,最容易被大家忽視的,尤其是大量的脫離一線研發并進化成PPT架構師的今天,單機維度基本不在考量范圍。

但不積跬步無以至千里,有的時候單機接口的的性能優化,會帶來很高的經濟成本價值。在代碼維度,我這里重點介紹一種情況,關于多線程和異步方法。

a. 多線程和異步方法的誤區

關于多線程和異步方法的概念,我再面試候選人的時候,發現很多人對此都有誤區。在此,我先詳細的一下他倆的概念:

多線程:多線程是指在一個進程中可以同時運行多個線程,每個線程執行不同的任務。Java通過java.lang.Thread類和java.util.concurrent包提供了多線程編程的支持。多線程的主要目的是為了充分利用CPU資源,提高程序的執行效率。

異步方法:異步方法是指在調用某個方法時,不需要等待該方法執行完成即可繼續執行后續代碼。Java通過CompletableFuture和異步回調機制提供了異步編程的支持。異步方法的主要目的是為了提高系統的響應能力和資源利用率。

b. 多線程能夠解決高并發場景么

當大家了解了多線程和異步方法的概念后,那么我們就可以認真思考一下,多線程一定能提升系統的并發能力么?

我的結論是:多線程可以提升部分服務的并發能力,但并不能顯著提高性能。

首先我們先了解,Tomcat的Servlet機制是基于多線程實現的,而如果你在單次請求中在此開辟線程池進行多線程處理,在一定的并發情況下,你可能只是改善了單次請求的TP99,但無法有效提升系統的并發能力。因為多線程的性能提升與CPU核心數密切相關。如果系統只有一個CPU核心,那么多個線程只能在該核心上輪流執行,無法實現真正的并行處理。而我們的宿主機一般也就是8C或者16C,在面單機上千的QPS請求時,多線程只會增加CPU上下文切換的負擔。

舉個簡單并且常見的例子,批量下單接口。我們常見的做法就是在批量下單接口中開辟線程池,然后建個多個下單在線程池中并行處理。這樣做的結果是,在請求量低的情況下,效果還是可以的,單次請求的QPS也會很低,但如果單機面臨每秒上千次的下單請求,這種實現方式就會出現問題。最直觀的觀察,可以通過TP99的監控曲線發現,就是請求量跟TP99呈現嚴重的正相關性。

而真正有效的提升下單接口的并發能力,是通過異步方式實現。但異步方式又會增加系統的設計復雜度,比如下單失敗,異步回調設計和數據一致性設計等等,也在考量范圍之內,這里就不詳細展開說明。

c. 小結

多線程和異步方法是Java開發中兩種重要的并發處理技術,它們在提高系統性能和響應能力方面各有優勢。多線程通過并行處理任務,充分利用CPU資源,適用于CPU密集型任務和需要并行處理的場景。異步方法通過非阻塞I/O操作和異步回調機制,提高系統的響應能力和資源利用率,適用于I/O密集型任務和事件驅動架構。

此外當然還有大家經常樂于討論的JVM調優問題,基于JVM調優,包括垃圾回收器的選擇,參數的合理優化,當然,還有一點,其實大家平時關注不多,就是采用更高版本的JDK和更新的Spring框架,因為高版本的框架會對性能本身有不錯的優化。關于這點,我在另一篇文章中有重點介紹:性能加速包: SpringBoot 2.7&JDK 17,你敢嘗一嘗嗎

多機維度

在多機維度考慮系統的高并發性能,應該是大家最長能夠想到的場景了,也是架構師們最熱衷討論的點。

首先是對系統的拆分角度來說,第一個是單體應用的水平擴展問題,就是我們所說的負載均衡集群,換成我們經常聽到的一個詞: 擴容。擴容一般針對負載均衡集群進行水平擴展,用于解決單機無法承載高并發的情況,這也是互聯網公司解決高并發場景的最常用手段,就比如每次雙十一或者618前夕,我們都會成倍的擴容我們的服務實例。

對系統的另一個拆分角度,叫做垂直拆分,也就是我們常見的分布式系統。比如按照領域劃分,我們將一個大的單體服務,拆分成不同的子領域系統,然后每個子領域系統單獨承擔各自的流量,而不會相互影響。還比如說長江的CQRS設計架構,翻譯過來是指令查詢分離的設計方式,通過查詢和指令服務拆分,來講高并發的查詢場景單獨拆分出來進行設計。

既然采用了分布式的微服務架構,那么分布式系統的一些常見痛點也是高并發要考慮的,比如熔斷,降級,限流,超時等設計,這些本身是為了增強分布式系統的魯棒性,從而間接的增強系統的高并發承載能力。關于微服務架構,在此處不再贅述,有興趣的,可以看我的另一篇文章:【實踐篇】教你玩轉微服務--基于DDD的微服務架構落地實踐之路


垂直維度

所謂垂直維度,是為了區分于單機維度和多機維度的,垂直的意思是針對一個業務系統在系統層級的垂直劃分,包括業務應用和數據庫。要知道,很多高并發場景,不管是寫場景還是讀場景,當數據庫維度出現瓶頸,擴容就不想業務應用服務那么簡單了,所以要區分來說。

a. 業務應用

唯物辯證法中有一個重要概念,就是一切從實際出發,具體問題具體分析。對于高并發系統的構建,雖然有通用的手段和方法論,但沒有統一的落地方案,必須根據具體的業務應用場景進行分析和設計。比如你的系統是高并發讀還是高并發寫,處理思路也是完全不一樣的。當然常見的手段和方法論核心包括兩點:緩存和異步。但具體到相應的業務,需要仔細思考緩存邏輯怎么設計,異步流程怎么設計,如何保證數據一致性等等。

這塊我有一個項目案例,就是在SAAS商城中秒殺場景下,如何設計高性能庫存扣減邏輯,我將這塊內容寫在了我另一篇文章里:高并發場景下的庫存管理,理論與實戰能否兼得?

b. 數據庫

在存儲媒介這塊其實高并發是不好設計的。比如關系型數據庫MySQL, 在進行擴展要比業務應用復雜不少,涉及到的就是數據庫的分庫分表邏輯。

這塊可以參考之前我寫過的一篇文章:分而治之--淺談分庫分表及實踐之路。

而對于讀場景下的高并發請求,還有一種最常見的處理手段,就是異構存儲介質,實現讀寫分離,最常見的就是MySQL關系型數據庫負責寫,ES這種文檔類數據庫負責讀。而他的技術難點則在于數據的同步和數據一致性上。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2966

    瀏覽量

    104702
  • 數據庫
    +關注

    關注

    7

    文章

    3794

    瀏覽量

    64360
收藏 人收藏

    評論

    相關推薦

    水電站生態下泄流量監測系統:實時捕捉流量的細微變化

    水電站生態下泄流量監測系統是一種專門用于監測水電站生態流量的高精度監測系統。該系統通過布設在水電站壩體、引水渠、泄洪口等關鍵位置的
    的頭像 發表于 12-19 17:31 ?80次閱讀
    水電站生態下泄<b class='flag-5'>流量</b>監測<b class='flag-5'>系統</b>:實時捕捉<b class='flag-5'>流量</b>的細微變化

    雷達流量計于天然河流河道及渠道流量監測系統的應用與卓越特性

    雷達流量計于天然河流河道及渠道流量監測系統的應用與卓越特性
    的頭像 發表于 12-06 09:32 ?116次閱讀
    雷達<b class='flag-5'>流量</b>計于天然河流河道及渠道<b class='flag-5'>流量</b>監測<b class='flag-5'>系統</b>的應用與卓越特性

    灌區渠道生態流量監測系統:保障水資源可持續利用的核心利器

    了新的曙光,成為保障農業灌溉順利進行的有力助手。 灌區渠道生態流量監測系統設備 雷達流量計 :利用雷達波測量水位并結合明渠斷面參數計算流量。它具有非接觸、精度
    的頭像 發表于 11-06 17:10 ?305次閱讀
    灌區渠道生態<b class='flag-5'>流量</b>監測<b class='flag-5'>系統</b>:保障水資源可持續利用的核心利器

    生態流量在線監測系統解決方案

    一、背景隨著環境保護意識的日益增強,水資源管理和生態保護成為了全球關注的焦點。在河流、湖泊等水域管理中,生態流量的監測和調控對于維護水生態系統的平衡和生物多樣性具有重要意義。為此,開發一套高效、準確
    的頭像 發表于 10-28 14:43 ?188次閱讀
    生態<b class='flag-5'>流量</b>在線監測<b class='flag-5'>系統</b>解決方案

    何在智能手機系統中使用bq27505

    電子發燒友網站提供《如何在智能手機系統中使用bq27505.pdf》資料免費下載
    發表于 10-17 10:21 ?0次下載
    如<b class='flag-5'>何在</b>智能手機<b class='flag-5'>系統</b>中使用bq27505

    測試聊并發-入門篇

    服務端接口的性能測試中,我們面臨的挑戰不僅僅是處理單個請求的效率,更在于如何在多用戶同時訪問時保持系統的穩定性和響應速度。并發編程和測試,作為性能測試的核心,對于評估系統
    的頭像 發表于 10-15 15:23 ?187次閱讀
    測試聊<b class='flag-5'>并發</b>-入門篇

    重塑定位邊界:革新 UWB 信標定位系統測試套件,精準并發融合引領未來

    面對日益復雜多變的應用場景及并發需求的激增,巍泰技術特隆重推出采用 TurMass 無線通信技術的 UWB 信標定位系統測試套件 WTS-102 ,為各類復雜應用場景提供持續、可靠、精準的定位服務。
    的頭像 發表于 09-23 15:13 ?634次閱讀
    重塑定位邊界:革新 UWB 信標定位<b class='flag-5'>系統</b>測試套件,精準<b class='flag-5'>并發</b>融合引領未來

    “遠程IO控制問題全解析:常見報錯及一站式解決方案”

    想象一下,在一個遙遠的工廠中,機器正在無聲地運轉,而在世界另一端的辦公室里,工程師正通過智能設備監控著這一切。這正是遠程IO技術帶來的奇跡。然而,當這種技術出現問題時,它可能變成一場遠程控制的噩夢。不用擔心,本文將帶您深入了解遠程IO的常見問題,并提供實用的解決方案,讓您在遠程控制的世界中游刃有余
    的頭像 發表于 09-09 16:45 ?310次閱讀
    “遠程IO控制問題全解析:常見報錯及一站式解決方案”

    何在RS-485系統中隔離信號和電源

    電子發燒友網站提供《如何在RS-485系統中隔離信號和電源.pdf》資料免費下載
    發表于 08-27 09:48 ?3次下載
    如<b class='flag-5'>何在</b>RS-485<b class='flag-5'>系統</b>中隔離信號和電源

    大促并發系統性能優化實戰--京東聯盟廣告推薦系統

    當一個推薦系統面臨高頻、瞬時、大幅的流量突變時,如何在維持穩定性的同時,最小化推薦效果損失? ? ? 背景 618對京東來說是一場重要的營銷盛會,大促將為業務各個層面帶來爆發式增長。然而,超大規模
    的頭像 發表于 08-14 10:41 ?318次閱讀
    大促<b class='flag-5'>高</b><b class='flag-5'>并發</b><b class='flag-5'>系統</b>性能優化實戰--京東聯盟廣告推薦<b class='flag-5'>系統</b>

    并發物聯網云平臺是什么

    并發物聯網云平臺是一種能夠處理大量設備同時連接并進行數據交換的云計算平臺。這種平臺通常被設計用來應對來自數以萬計甚至數十億計的物聯網設備的并發請求,保證系統的穩定性和響應速度。 首先
    的頭像 發表于 08-13 13:50 ?249次閱讀

    邁威通信TSN工業自動化系統解決方案助力智能制造實現確定性服務

    在IT、服務器和云基礎設施的支撐下,邁威通信推出的工業自動化系統解決方案通過TSN技術實現精確的時間同步,確保關鍵控制數據的實時傳輸。無論是SCADA控制、網絡管理還是視頻和帶寬數據處理,我們都游刃有余!
    的頭像 發表于 05-23 17:20 ?403次閱讀
    邁威通信TSN工業自動化<b class='flag-5'>系統</b>解決方案助力智能制造實現確定性服務

    stm32wb55rg ZigBee和藍牙并發運行時,連接藍牙失敗的原因?怎么解決?

    在使用rt thread系統移植官方ZigBee_ble_dynamic的示例程序時,兩者都能并發廣播,但是一旦到藍牙連接時,系統就會停止,一直卡在ZbStartupWait info-&
    發表于 03-15 07:59

    生態流量動態監測系統解決方案及系統功能

    成都國科EP3000系列流量監測管理系統以自動化流量和視頻監控為主,以各類前端傳感器如水位計、閘位計、流量計、電能表和視頻等相互補充的形式進行水位、
    的頭像 發表于 03-14 10:41 ?654次閱讀
    生態<b class='flag-5'>流量</b>動態監測<b class='flag-5'>系統</b>解決方案及<b class='flag-5'>系統</b>功能

    HarmonyOS如何使用異步并發能力進行開發

    一、并發概述 并發是指在同一時間段內,能夠處理多個任務的能力。為了提升應用的響應速度與幀率,以及防止耗時任務對主線程的干擾,HarmonyOS系統提供了異步并發和多線程
    的頭像 發表于 02-18 09:18 ?526次閱讀
    主站蜘蛛池模板: 狠狠色欧美亚洲狠狠色www| 日韩中文欧美在线视频| 高h乱np甄宓| 野花韩国高清完整版在线| 欧美夜夜噜2017最新| 国产在线精彩亚洲久久| www.av色| 一级毛片免费视频网站| 色欲AV亚洲午夜精品无码| 久久免费特黄毛片| 国产欧美国产综合第一区| 99久久无码一区人妻A片蜜| 亚洲乱亚洲乱妇13p| 日本久久网站| 麻豆人妻无码性色AV| 国产乱人伦AV麻豆网| yellow在线观看免费观看大全| 夜夜躁婷婷AV蜜桃视频| 午夜插插插| 青青草国产自偷拍| 蜜桃成熟时2在线| 久久精品视在线-2| 好爽好深太大了再快一点| 国产精品人妻午夜福利| 成年人免费观看的视频| 99re热精品视频国产免费| 在线播放午夜理论片| 亚洲国产成人精品久久久久| 手机在线观看无码日韩视频| 欧美熟妇互舔20p| 免费观看美女的网站| 久久精品电影| 国产在线精品一区二区网站免费| 富婆大保健嗷嗷叫普通话对白| 99视频在线精品免费观看18| 2019午夜75福利不卡片在线| 一个人免费视频在线观看高清版| 亚洲日韩天堂在线中文字幕| 亚洲免费无l码中文在线视频| 午夜想想爱午夜剧场| 午夜影视不充值观看|