<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>




      前言


      前陣子有網(wǎng)友詢問,如何優(yōu)化網(wǎng)站?這個(gè)問題真的很大,跟他簡(jiǎn)單的聊了一下,隨便說了幾點(diǎn),覺得有必要整理一篇文章出來,正好前陣子在做爬蟲博客,于是把大體思路分享出來,與大家互通有無,共同進(jìn)步。

      優(yōu)化

      版本一



      系統(tǒng)開始是這樣子的,一個(gè) Tomcat 拖著一個(gè) MySql 服務(wù),跑在一個(gè) 2C 4G 的Linux服務(wù)器上,所有的請(qǐng)求都走 Tomcat,所有的查詢都走
      MySql,看起來像一句廢話?

      資源是有限的,那么如何有效的利用資源,提升服務(wù)性能?Tomcat 號(hào)稱能抗住數(shù)十萬并發(fā)訪問,但是這事也得分場(chǎng)景,還得有足夠牛逼的機(jī)器。

      Tomcat 優(yōu)化

      Tomcat支持以下三種模式:

      *
      BIO:一個(gè)線程處理一個(gè)請(qǐng)求,缺點(diǎn):并發(fā)量高時(shí),線程數(shù)較多,浪費(fèi)資源,Tomcat7或以下在Linux系統(tǒng)中默認(rèn)使用這種方式。

      * NIO:利用Java的異步IO處理,可以通過少量的線程處理大量的請(qǐng)求。Tomcat8在Linux系統(tǒng)中默認(rèn)使用這種方式。Tomcat7
      必須修改Connector配置來啟(conf/server.xml配置文件): <Connector port="8080"
      protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000"
      redirectPort="8443"/>
      * APR(Apache Portable
      Runtime):從操作系統(tǒng)層面解決io阻塞問題。Linux如果安裝了apr和native,Tomcat直接啟動(dòng)就支持apr。
      為了方便易用這里我們選擇NIO模式,小伙伴們直接下載使用 Tomcat8 以上版本即可,連接池什么的一般使用默認(rèn)的即可。

      版本二



      可能部分小伙伴知道 Tomcat 容器處理靜態(tài)請(qǐng)求的性能力并不強(qiáng),所以這里需要一款能處理靜態(tài)文件請(qǐng)求又超牛逼的服務(wù),這里推薦
      Nginx,當(dāng)然你可以使用其變種 Tengine、OpenResty 才實(shí)現(xiàn)動(dòng)靜分離。

      版本三



      后端服務(wù)鏈接資源是寶貴的,在高并發(fā)下,會(huì)拖慢整個(gè)系統(tǒng)的響應(yīng)時(shí)間。這里我們可以把一些熱點(diǎn)數(shù)據(jù)進(jìn)行緩存,后端讀取緩存,如果數(shù)據(jù)存在則直接返回,否則再去讀取數(shù)據(jù)庫。

      版本四




      資源是有限的,但用戶可能是無限的,還可能有一些惡意用戶、爬蟲、熱點(diǎn)搜索。為了大部門用戶可以正常訪問,這里我們使用前置限流,通過令牌桶算法或者漏桶算法實(shí)現(xiàn)多樣的限流方案。

      版本五



      在博客系統(tǒng)中,為了提升響應(yīng)速度,加入了 Redis 緩存,把文章主鍵 ID 作為 key 值去緩存查詢,如果不存在對(duì)應(yīng)的 value,就去數(shù)據(jù)庫中查找
      。這個(gè)時(shí)候,如果請(qǐng)求的并發(fā)量很大,就會(huì)對(duì)后端的數(shù)據(jù)庫服務(wù)造成很大的壓力。這里我們使用布隆過濾器對(duì)空命中進(jìn)行攔截處理。

      終極版



      *
      如果僅僅對(duì)于一個(gè)博客而已一個(gè)Nginx 足夠了,后面可以帶多個(gè)Tomcat 做負(fù)載均衡進(jìn)群

      *
      Nginx 應(yīng)用層面做限流,后端單個(gè)服務(wù)可以做接口限流

      *
      后端服務(wù)用戶 Session 可以集中存儲(chǔ)到 Redsi 中

      *
      布隆過濾攔截防止緩存穿透

      *
      熱點(diǎn)數(shù)據(jù)讀取 Redis 緩存

      *
      如有必要 Redis 、MySql 可以做主從集群

      小結(jié)

      優(yōu)化過程可能僅僅是冰山一角,但大體思路差不多就是這個(gè)樣子,發(fā)現(xiàn)問題然后解決問題,本來架構(gòu)就是演進(jìn)而來的。

      參考

      從SpringBoot構(gòu)建十萬博文聊聊緩存穿透 <https://blog.52itstyle.vip/archives/4259/>

      SpringBoot開發(fā)案例之打造十萬博文Web篇 <https://blog.52itstyle.vip/archives/4219/>

      從SpringBoot構(gòu)建十萬博文聊聊高并發(fā)文章瀏覽量設(shè)計(jì) <https://blog.52itstyle.vip/archives/4271/>

      從0到1構(gòu)建分布式秒殺系統(tǒng),脫離案例講架構(gòu)都是耍流氓 <https://gitee.com/52itstyle/spring-boot-seckill>

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          久久夜色精品国产噜噜v6 | 大鸡巴肏屄视频 | 亚洲无码在线免费 | 午夜影院 日韩 | 特级黄色录像视频 | 四虎大香蕉 | 嫩草一起草久久久久 | 青青草原网站在线观看 | 91蝌蚪在线视频 | 夜夜爽日日澡人人添小说 |