日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

高并發(fā)服務(wù)器邏輯處理瓶頸,如何解決?首先我們先了解什么是并發(fā)!

并發(fā),在操作系統(tǒng)中,是指一個(gè)時(shí)間段中有幾個(gè)程序都處于已啟動(dòng)運(yùn)行到運(yùn)行完畢之間,且這幾個(gè)程序都是在同一個(gè)處理機(jī)上運(yùn)行,但任一個(gè)時(shí)刻點(diǎn)上只有一個(gè)程序在處理機(jī)上運(yùn)行。———來源《百科》

顧名思義,高并發(fā)就是在指定時(shí)間內(nèi),系統(tǒng)同時(shí)能夠處理大量的請求(連接數(shù))。

那么如何衡量高并發(fā)呢?

高并發(fā)衡量指標(biāo)

  • 響應(yīng)時(shí)間:系統(tǒng)對請求做出響應(yīng)的時(shí)間,即一個(gè)http請求返回所用的時(shí)間;
  • 吞吐量:單位時(shí)間內(nèi)處理的請求數(shù)量;
  • QPS(TPS):每秒可以處理的請求數(shù)或事務(wù)數(shù);
  • 并發(fā)用戶數(shù):同時(shí)承載正常使用系統(tǒng)功能的用戶數(shù)量,即多少人同時(shí)使用,系統(tǒng)還能正常運(yùn)行的用戶數(shù)量;

根據(jù)上面衡量指標(biāo)可以看到,提高并發(fā)能力必須解決如下幾個(gè)問題:

  1. 如何提高并發(fā)連接數(shù)?
  2. 那么多的連接數(shù)怎么進(jìn)行業(yè)務(wù)處理?
  3. 應(yīng)用服務(wù)器的處理水平又該怎么提高?
  4. 如何使用微服務(wù)架構(gòu)提升高并發(fā)邏輯?

別著急,這么多問題我們一個(gè)一個(gè)來分析解決!

1)、如何提高并發(fā)連接數(shù)?

如下圖所示,常規(guī)的單一網(wǎng)絡(luò)連接模型只能1個(gè)連接對應(yīng)1個(gè)線程,壓力都集中在內(nèi)存,導(dǎo)致內(nèi)存開銷非常大,肯定支撐的連接數(shù)有限!(直接掛掉)

高并發(fā)服務(wù)器邏輯處理瓶頸,如何解決?

單一網(wǎng)絡(luò)連接模型

有道是業(yè)務(wù)寫的再好不如一臺(tái)高性能服務(wù)器,這個(gè)鍋不一定要開發(fā)人員背的哦!!!服務(wù)器的連接入口就那么大(比如Tomcat只有幾千的連接數(shù)),那么處理的能力也只局限于幾千。

怎么解決呢?選用合適的網(wǎng)絡(luò)IO模型或者selector,通過使用一個(gè)線程輪詢或者事件觸發(fā)的方式,能支持幾萬甚至更多的連接數(shù),再配合上Nginx做負(fù)載就更完美了。

2)那么多的連接數(shù)怎么進(jìn)行業(yè)務(wù)處理?

大家都知道nginx只是具有反向代理和負(fù)載均衡的功能,并不能處理具體的業(yè)務(wù)邏輯,不能擔(dān)當(dāng)應(yīng)用服務(wù)器來使用。例如webSphere 、tomcat和jetty等,但是我們可以利用nginx將接受到的大量連接通過均衡的方式(輪詢,權(quán)重,hash)分配到不同的應(yīng)用服務(wù)器中進(jìn)行業(yè)務(wù)處理!

高并發(fā)服務(wù)器邏輯處理瓶頸,如何解決?

nginx負(fù)載

3)應(yīng)用服務(wù)器的處理水平又該怎么提高?

要提高應(yīng)用服務(wù)器的處理水平就要了解自己的應(yīng)用服務(wù)器的瓶頸在哪里,一般有兩個(gè):

  1. 數(shù)據(jù)庫壓力:數(shù)據(jù)庫是支撐產(chǎn)品業(yè)務(wù)的核心模塊,系統(tǒng)的高并發(fā)的主要壓力也是來源于數(shù)據(jù)庫。處理方式有如下這些:

數(shù)據(jù)庫本身:建立有效索引、讀寫分離、雙主互備、分庫分表(sharding-jdbc等實(shí)現(xiàn))等策略,提高數(shù)據(jù)庫處理能力,減少壓力!

結(jié)合內(nèi)存數(shù)據(jù)庫:例如redid、memcached等,根據(jù)業(yè)務(wù)需要緩存一些數(shù)據(jù)字典、枚舉變量和頻繁使用數(shù)據(jù)等減少數(shù)據(jù)庫訪問次數(shù),提升數(shù)據(jù)庫處理能力。

高并發(fā)服務(wù)器邏輯處理瓶頸,如何解決?

web集群架構(gòu)圖

如上圖web集群架構(gòu)圖所示:

  • 用nginx負(fù)載多臺(tái)應(yīng)用服務(wù)器;
  • 使用redid/memcached做業(yè)務(wù)緩存;
  • 再加上數(shù)據(jù)庫集群;

組成了經(jīng)典的web高并發(fā)集群架構(gòu)。

  1. 代碼中的業(yè)務(wù)邏輯:
  2. 大家可以 參考阿里巴巴JAVA開發(fā)手冊 中的開發(fā)規(guī)范來做就好了,總代來說少創(chuàng)建線程、少創(chuàng)建對象、少加鎖、防止死鎖、少創(chuàng)建線程、注意內(nèi)存回收等策略,來提升代碼性能。
  3. 開發(fā)中可以采用前后端分離的架構(gòu)模式,動(dòng)靜分離、松耦合等提升前后端處理能力。

4)如何使用微服務(wù)架構(gòu)提升高并發(fā)邏輯?

先看一下非常火的這張微服務(wù)架構(gòu)圖:

高并發(fā)服務(wù)器邏輯處理瓶頸,如何解決?

微服務(wù)架構(gòu)圖

主要包含11大核心組件,分別是:

核心支撐組件

  • 服務(wù)網(wǎng)關(guān)Zuul
  • 服務(wù)注冊發(fā)現(xiàn)Eureka+Ribbon
  • 服務(wù)配置中心Apollo
  • 認(rèn)證授權(quán)中心Spring Security OAuth
  • 服務(wù)框架Spring MVC/Boot
  • 監(jiān)控反饋組件

數(shù)據(jù)總線Kafka

  • 日志監(jiān)控ELK
  • 調(diào)用鏈監(jiān)控CAT
  • Metrics監(jiān)控KairosDB
  • 健康檢查和告警ZMon
  • 限流熔斷和流聚合Hystrix/Turbine

總結(jié)

出來上述幾點(diǎn)解決高并發(fā)服務(wù)器邏輯處理瓶頸外,還要考慮網(wǎng)絡(luò)因素,例如采用CDN加速,將不同地點(diǎn)的請求分發(fā)到不同的服務(wù)集群上,避免網(wǎng)絡(luò)對速度的影響!

總之,根據(jù)自身實(shí)際業(yè)務(wù)在合理范圍內(nèi)盡可能的拆分,拆分以后同類服務(wù)可以通過水平擴(kuò)展達(dá)到整體的高性能高并發(fā),同時(shí)將越脆弱的資源放置在鏈路的越末端,訪問的時(shí)候盡量將訪問鏈接縮短,降低每次訪問的資源消耗。服務(wù)之間直接restful模型使用http調(diào)用,或者redis,kafka類的消息中間件通信。單個(gè)服務(wù)直接使用nginx做負(fù)載集群,同時(shí)前后端分離,數(shù)據(jù)庫分庫分表等一整套分布式服務(wù)系統(tǒng)!

高并發(fā)服務(wù)器邏輯處理瓶頸,如何解決?

前后端分離

分享到:
標(biāo)簽:并發(fā) 服務(wù)器
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定