亚洲欧洲久久av_极品美女国产精品免费一区_老司机网站免费_免费视频入口_人妻网站成熟人妻VA网站_福利视频网站

構建互聯網高性能WEB系統經驗總結
  • 更新時間:2025-04-21 18:31:30
  • 開發經驗
  • 發布時間:3年前
  • 1243

互聯網發展至今各種應用層出不窮,用戶量動輒上億。所以如何構建一個優秀的高性能、高可靠的應用系統對每一個開發者至關重要。本文將我所學到和在工作中使用到的一些方法歸納總結,希望給其他同學起到一些借鑒作用,在以后的開發中遇到類似的問題,能快速的找到解決方案。本人主要使用語言是JAVA,所以下面不做特殊說明,都是使用JAVA語言

高性能的關鍵

要想做到高性能,我總結了三點:


緩存

DNS緩存

數據庫緩存

分布式緩存

拆分

業務拆分

數據庫拆分

異步

網絡異步

磁盤異步

使用消息

上面舉了一些三點中常見的情況,無論什么地方遇到性能瓶頸,謹記這三點,大多數時候都能找到解決方案。以下分別介紹在整個架構中各個方面對這三點的應用

無狀態服務


說無狀態服務我們首先要想到無狀態對象,無狀態對象簡單的可以理解為沒有Field的對象,比如model/entity對象就不屬于無狀態對象,因為他含有Field,比如典型MVC場景的**Controller,**Service就是無狀態的,他們只含有method。有的也是有狀態的,比如Structs2框架的Action,所以Structs2現在用得比較少了。有了無狀態對象,我們才有可能構建無狀態服務,因為請求鏈路中不包含有狀態對象,所以我們每一次請求都是獨立的,這樣的架構有助于我們服務進行擴展。

無狀態服務有時候不可避免的會遇到一些有狀態的對象,比如最常見的就是session。因為http請求本身是無狀態的,所以必須cookie和session配合使用,才能識別多次http請求屬于同一用戶。一般有兩種方法解決:


使用cookie存儲

使用分布式session服務

第一種就是將對象信息全部存儲在cookie中,通過相應的算法等在服務端將cookie中的信息讀出來。這些信息一般都會進行加密處理。

第二種方法,就是將session存儲在分布式數據庫或者分布式緩存中,一般存在redis或者memcache中。那這種服務擴展會依賴第三方數據庫或緩存的能力。淘寶有類似的組件,開源世界也有基于memcache和redis的分布式session


無狀態服務用到了拆分和緩存

業務拆分

無狀態可以使應用服務水平擴展,但是當單個應用太大太臃腫時,有必要對應用進行拆分。垂直拆分即按業務拆分,比如電商系統中,按照訂單系統,積分系統等進行拆分。拆分可以方便開發,更方便擴展。系統大了以后,每個業務的訪問量是不一樣的,比如買家系統肯定比賣家系統訪問量大得多,這時候就可以只增加買家系統的機器即可。

除了按照業務的不同拆分成不同的系統以外,針對我們的應用分層也可以進行拆分,一般分為應用層、邏輯層和原子層。應用層就是各種數據、邏輯業務的組裝,邏輯層含有大量可重用邏輯,原子層直接操作數據庫,一些基本的數據操作包含在其中。


不論以何種形式拆分,拆分以后的系統在物理層面上就分離開來,所以系統間的通信是拆分中最重要的問題所在。


RPC

在RPC服務之前已經許多系統通信的方法,比如RMI、WebService,但是RPC以更方便,更高效,跨平臺的方式現在成為主流的通信手段。幾乎每個大公司都有自己的RPC框架:淘寶的HSF、58的SCF,也有非常多優秀的開源框架:Dubbo、GRPC、Thrift等等。國內用dubbo的大公司也很多:京東、當當都是。


MQ

RPC調用一般是用在耦合比較重,同步調用的場景下。而MQ作為另一種異步通信的手段也被廣泛使用在各個業務中。常用的有:ActiveMQ、RabbitMQ、Kafka、RocketMQ。前兩個一般作為企業級應用,主要特點是支持非常多的特性和規范。后兩者是互聯網級的,擁有更強力的吞吐和更高的性能,但是犧牲了很多MQ的特性。mq一般用在要求最終一直性即可的場景,比如用戶注冊和發積分這兩個動作,可以用戶注冊以后直接返回前臺成功,然后發送注冊成功消息給mq系統,發積分動作訂閱注冊事件,消費mq的事件信息。


MQ最大的好處就是削峰和解耦,在RPC式的同步調用場景中,如果同一個邏輯中調用A和B,那么在擴展的時候,A和B一定是需要同時擴展的,但是有了消息以后,A發送消息給B,及時B暫時處理不了,也可以等到A峰值過后B繼續處理,即使B短期無法匹配A的發送消息能力也沒有關系。


數據庫拆分

一般項目都會經歷數據量從小到大的變化,所以數據庫拆分也是根據不同的數據量已經不同的階段進行相應的處理。


讀寫分離,這是大多數應用在遇到性能瓶頸第一要干的事。大多數互聯網應用都是讀占道90%以上的場景。所以一主多從,一個master做寫,其他slave做讀即可。但是這種主從模式也存在一些問題,比如有一些數據需要及時性比較高,就是在寫入以后馬上需要讀到。因為主從同步是通過log異步復制,所以存在數據不一致窗口,這個時候必須要通過強行讀取主庫來保證數據的安全,在開發的時候一定要注意。


垂直分割,就是通過拆分將不同的業務放在不同的數據庫中,這樣就可以減少單一數據庫的壓力,提高整體性能。垂直分割要注意的是業務邊界問題,邊界問題就是有一個表,感覺放在A中和放在B庫中都合適。這個就要靠經驗了,不能過分的考慮,因為其實不論你在之前分得有多好,在應用的迭代中,總會出現更多的找不到明確邊界的表。這個問題在業務模塊劃分中也是一樣。


水平分割,一般就是說sharding。將同一個表中的不同字段,拆分成不同的表,或者將同一張表按照hash或者業務字段分成不同的分片。這種一般需要DAL框架的支持,其中有TDDL、Cobar、Mycat等。主要就是通過框架讓程序編寫者對數據庫的拆分不可見,就像操作一個數據庫一樣。不過現在的DAL框架還不能達到這樣的目的,尤其是在跨庫事務的場景下,一般都需要其他方式處理。


跨庫事務/分布式事務

跨庫事務一般都是通過最終一致性來解決,即不強求ACID都能滿足,容許數據不一致的時間窗口,但是總會有一個時間點數據會到最終一致的狀態。解決方案非常的多,不過核心原理都是一樣,不外乎都是靠補償來完成的。


緩存的使用

計算機世界有一句名言:“計算機科學領域的任何問題都可以通過增加一個間接的中間層來解決”。緩存就是一種中間層。



使用緩存的場景非常非常的多,幾乎到了你能想到的所有地方。這里我們講通常的數據庫數據緩存


緩存一般有兩種,local和remote,一般來說使用一種緩存即可,因為緩存雖好,但是維護緩存的更新和刪除卻是一件非常麻煩得事。一般緩存可分為讀緩存(大多數場景)和寫緩存(一般針對數據安全性比較低的場景)。


比如將數據庫中的數據讀出時同時寫入緩存中,下一次讀數據的時候就可以直接讀取緩存中的數據,從而大大減小數據庫的壓力,說起來很簡單,其實這也存在很多種的架構,每種架構都有利弊,大家可以詳細去了解。


寫緩存,就是先將數據寫入緩存中,然后一段時間再持久化,這樣同樣會提高效率,這種方案的問題在于如果這時候宕機,部分數據將會丟失,所以適用于數據安全性較低的場景。


緩存雖然速度快,除了維護更新較為麻煩的是,內存也是較為昂貴的硬件,所以除了將熱點數據存儲在緩存中,一般緩存中維護數據的索引或者主要字段用于列表顯示,真正的大而全的數據還需要其他方法解決。


靜態化

對于大多數場景,我們的數據在一定時間都是不會變化的,或者說即使變化,也只是頁面的一小部分會發生變化,可以將不變化的部分單獨拿出來做靜態化。比如京東商城的頁面就是靜態化的,靜態化以后,數據不用每次都從緩存或者數據庫中取得,然后再封裝成頁面,而是直接請求返回靜態頁面,性能無疑提升了非常大。

除了以上常用的方法外,還要非常多的重要的方法:


CDN加速

DNS緩存

頁面緩存

使用分布式存儲

使用多線程編寫程序

我們專注高端建站,小程序開發、軟件系統定制開發、BUG修復、物聯網開發、各類API接口對接開發等。十余年開發經驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!

本文章出于推來客官網,轉載請表明原文地址:https://www.tlkjt.com/experience/7501.html
推薦文章

在線客服

掃碼聯系客服

3985758

回到頂部

主站蜘蛛池模板: 日韩美女性生活视频_欧美性猛交xxxx乱大交久久_手机在线一区_免费jlzzjlzz在线播放_二区三区偷拍浴室洗澡视频_麻豆专媒体一区二区_精品国产乱_九九九国产视频 | aaaa视频_丁香五月缴情在线中文视频_亚洲国产精品久久久天堂_国产免费AV片无码永久免费_久久国产禁久久_www.亚洲.com_精品一区二区三区久久_无毒不卡在线 欧美日韩高清一区二区_www.se天堂_99国产精成人午夜视频一区二区_亚洲国产高清在线一区二区三区_久久婷婷五月综合色99啪_国产婷婷色一区二区三区在线_小尤奈无码视频_a4yy欧美一区二区三区 | 完全着衣の爆乳お姉さんが_av影视在线播放_奇米国产在线_亚洲女人在线观看_超碰9在线_狠狠综合久久久久综合_成人av专区精品无码国产_亚洲日韩亚洲另类激情文学一 | 3344成人免费高清免费视频_国产乱码精品一区二区三区忘忧草_91精品国产色综合久久不卡蜜臀_黄色免费观看视频网站_无尺码精品日本欧美_日韩AV一中美AV一中文字慕_国产日本亚洲_人妻系列无码专区久久五月天 | 日韩激情综合网_久久精品一日日躁夜夜躁_女十八毛片aaaaaaa片_成人无码黄动漫在线播放_国产午夜福利内射青草_xxxxxx亚洲_不卡视频一区二区三区_亚洲精品v欧洲精品v日韩精品 | 麻豆911传媒_视色视频_91成品人网页进入入口_国产精品亚洲一区二区三区天天看_无码人妻aⅴ一区二区三区鲁大师_男人放进女人阳道动态图_久久久网站_99热99热99 | 久热国产精品视频_波萝蜜A毛黄AAA片_老师掀起裙子让我把j放进去视频_亚洲精品乱码久久久久膏_亚洲欧美一区二区三区_天天躁日日躁狠狠躁aab吃奶_美女又黄又免费视频_日韩无码系列综合区 | avav国产_高清dvd碟片生活片_日韩性公交车上xxhd_青天衙门高清第一部免费观看_人妻引诱中文字幕_国产91av视频在线_在线免费黄色片_jizz欧美性3 | japanese69极品少妇_卡一卡二卡三免费视频_亚洲精品中文字幕无码蜜桃_在线观看美女网站大全免费_中文字幕制服丝袜一区二区三区_久久久精品国产一区_九九九在线观看_想看一级黄色 | 日本一道本免费_一区二区三区日本_久久久久夜夜夜综合国产_日本做受高潮好舒服视频_亚洲AV无码久久三宫椿系列_52综合精品国产二区无码_日日干天夜夜_国产精品黄 | 久久久精品免费_99热3_91精品国产乱码久久久久久久久_最爽古装A片免费视频_色婷婷综合久久久久中国一区二区_午夜男女羞羞爽爽爽视频_国产中文字幕在线播放_欧美视频自拍 | 国产成人亚洲综合_在线观看免费不卡avav_国产精品揄拍一区二区久久_97无码人妻福利免费公开在线视频_chinesepronhdvideos国产91_青青草国产成人a∨_91久久国产视频_欧美成人福利 | 本免费Av无码专区一区_日韩中文不卡_丝袜高潮流白浆潮喷在线播放_亚洲AV无码片区一区二区三区_春色视频成人www_久久久国产一级_日韩精品一二三区_av黄色免费 | wwwxxx在线播放_蜜桃视频在线免费_91中文视频_大地资源网中文第五页_国产精品热久久高潮AV袁孑怡_久久精品黄色片_a级国产视频_91大神在线资源观看无广告 | www.se婷婷_国产第3页_99精品国产福利在线观看免费_日本xxxxxxxxx_www久久综合_九九精品在线_日产精品最新在线_18勿入网站免费永久 | 激情在线视频网站_日韩午夜在线观看_97精品伊人久久久大香线蕉_久久夜色精品亚洲噜噜国产mv_蜜桃嫩草_日本黄色天堂_国产69精品久久久久9999APGF_成人黄色视频免费观看 | 国内精品久久久久国产盗摄_国产免费一区二区在线a片视频_国产一区二区美女_无码精品人妻免费_午夜精品_91av久久_羞羞视频网站免费_精品在线免费看 | 奇米第四影视_精品女厕一区二区三区_国产一区二区三区在线观看免费_国产精品性爱_裸体精品bbbbbbbbb美国_农村妇女野战bbxxx_久久一级精品_国精品久久久久久久久久久58 | 日日躁夜夜躁人人揉av五月天_精品乱码卡1卡2卡3免费开放_国产高清在线精品一本大道_2020av毛片_久久爱一区_亚洲av无码偷拍在线观看_99国产热_亚洲无码精品在线观看影院 | 边摸边脱吃奶边高潮视频免费_91精品国产综合久久久久久久久_无码伊人66久久大杳蕉网站谷歌_国产丝袜精品视频_日本韩国国产_久久精品欧洲_www.99色_www.91桃色 | 91在线勾搭足浴店女技师_日韩欧美精品久久_日韩大片高清播放器大全_久久艳片_中文幕无线码中文字蜜桃_成人免费91_一级毛片免费一级_国产一区二区三区视频在线 | 亚洲精品久久激情国产片_中国大陆黄色片_日韩久久无码免费看A_久久99视频免费_少妇精品久久久一区二区三区_欧美一级性爱免费观看_91免费观看在线_久操新在线 | 欧美日韩中文字幕一区二区高清_人与性动交aaaabbbb_国产一区二区三区四区五区加勒比_国产成人综合欧美精品久久_99久久国产宗和精品1上映_日本丰满人要无码视频_日韩成人区_国产美女视频黄 | 日韩精品中文字幕无码专区_欧美日韩综合精品_91成人看片_蜜臀av免费一区二区三区久久乐_粉色视频在线观看免费观看_亚洲av日韩av综合_日本艳妓BBW高潮一19_女人扒开屁股让男人桶 | 自慰无码一区二区三区_插bb视频青春网站_人人爽久久涩噜噜噜丁香_91精品国产爱久久丝袜脚_手机午夜福利1000视频_大学生疯狂高潮呻吟免费视频_日本大片免费观看视频_色噜噜狠狠成人网p站 | 在线天堂资源www中文_特级无码A级毛片特黄_中文字幕2018第一页_影音先锋成人影院_天天番号网_亚洲经典视频_日本狠狠色_国产乱码久久久久久 | 国产成人在线观看网站_久热RE这里精品视频在线6_鲁大师在线影院免费观看_狠狠综合亚洲综合亚洲色_久久中文字幕亚洲精品最新_亚洲欧美综合_亚洲AV无码日韩AV无码网站冲_特黄一级性片看 | 成人激情自拍_国产传媒原创_99在线视频网站_一本色道久久HEZYO无码_日本精品一区二区三区四区_中国凸偷窥XXXX自由视频妇科_蜜桃精品成人影片_欧洲a视频 | 超碰二区_精品剧情V国产在线观看_色屁屁WWW免费看欧美激情_国产美女裸体丝袜喷水视频_免费又黄又爽又猛大片午夜_在线黄色av网站_国产91白丝在线播放_高潮喷水的网站 | 97视频在线看_亚洲国产成人私人影院tom_5060网免费午夜8050_欧美一二三四_日本高清在线一区二区三区_欧美久久一级片_精品一区二区三区四区蜜桃_00粉嫩高中生洗澡偷拍视频 | 奇米第四影视_精品女厕一区二区三区_国产一区二区三区在线观看免费_国产精品性爱_裸体精品bbbbbbbbb美国_农村妇女野战bbxxx_久久一级精品_国精品久久久久久久久久久58 | 九色免费视频_国产精品一区二区亚洲_www.久久综合_亚洲九九影院_日本国产免费_狠狠色噜噜狠狠狠狠色综合久AV_亚洲精品美女久久777777_中文一区二 | JAPANESE熟女JAPANESEMA_亚洲av无一区二区三区_亚洲综合无码日韩_国产亚洲欧美精品一区_国产h视频在线观看播放_涩涩屋av_国产精品嫩草影院99网站_97干视频 | videos另类灌满极品另类_久久综合九色综合97伊人_天天看片夜夜爽_国产精品国产精品国产_福利片第一页_国产真实露脸乱子伦_久久精品人人_特级全黄男女交高清视频在线观看 | 91在线精品视频观看_亚洲AV永久无码AV激情A片_日韩在线观看视频一区二区_888久久久_中文字幕精品亚洲无线码二区_久草不卡视频_91丨porny丨九色_av日韩中文 | 精品国产色_天天宗合_国产乱国产乱_国内一级视频_亚洲国产高清在线播放_大香伊蕉在人线国产97_亚洲影院丰满少妇中文字幕无码_无码精品A在线观看无 | CAOPORN国产精品免费视频_成人免费视频观看视频_亚洲高清在线看_黄色一级日本_成人va在线_日韩在线精品视频_2020久久超碰国产精品最新_云霸高清中文字幕第一页 | 久久福利一区二区_91av网址_久草午夜_色综合伊人丁香五月桃花婷婷_日本人丰满XXXXHD_一本色道久久亚洲综合精品蜜桃_成人国产三级_欧美黑人牲交videossexeso | 伊人第一页_国产精品爆乳奶水无码视频免费_色偷偷亚洲天堂_狠狠综合久久综合88亚洲_亚洲国产的精品太乱码一区二区_国产一级强片在线观看av_日日噜噜夜夜狠狠久久丁香五月_国产成人无精品久久久久国语 | 国产一级片不卡_欧美操人_国产AV无码国产AV毛片_福利社一区_成人免费a级片_免费日本黄色片_亚洲一区二区视频在线观看_女人天堂在线a在线 | 中文日韩在线视频_无码毛片一级高潮免费视频_毛片黄片_国产成人在线网址_国产特级全黄一级毛片_免费观看在线毛片_人人妻人人澡人人爽超污_日韩欧美国产系列 |