亚洲欧洲久久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

回到頂部

主站蜘蛛池模板: 女人高潮的24种图片_av免费网站在线_777亚洲精品乱码久久久久久_免费又色又爽又黄的舒服软件_欧美一区2区视频在线观看_av大片在线无码免费_韩日一级片_逼逼综合网 | 亚洲热妇无码播放aV另类_午夜视频福利在线_免费观看无码不卡av_69堂免费视频_4hu最新网_色婷婷av一区二区三区久久_麻豆视频观看免费视频观看_国产精品欧洲 | 无码永久成人免费视频_精品无码国产污污污免费网站_久久水蜜桃亚洲AV无码精品_最近更新中文字幕手机版_女人下边被添全过程A片图片_中文字幕AV熟女_内射高潮享受视频在线观看_HTTPWWW色午夜COM曰本 | 天堂资源中文字幕_青青草在线免费观看_麻豆传煤入口免费进入2023_欧美人妖XXXX做受_日本爽快片18禁免费看_68精品国产免费久久久久久婷婷_久久精品国产亚洲77788_国产精品一区亚洲二区日本三区 | 国产熟妇与子伦_亚洲婷婷在线视频_中文在线中文a_夜夜春亚洲嫩草一区二区_777米奇色8888狠狠俺去了_香蕉视频在线观看亚洲_亚洲国产日韩在线人成蜜芽_色大18成网站www在线观看 | 日日操日日爽_一级毛片免费网站_久久久国产一区二区_日韩av免费在线播放_欧美国产日韩久久MV_国产精品∧V在线观看_国产动作大片中文字幕_国产美女自卫慰视频福利 | 日本成人三区_阿公抱着我边摸边吃奶视频_欧美黄色三级大片_国内盗摄视频一区二区三区_欧美美女一区二区_欧美成人黄色片_高清国产一区二区三区在线_日本免费观看视频 | 国产精品入口a级_免费羞羞视频无遮挡噼啪男男_国产农村熟妇videos_精品国产精品国产_melody高清在线观看_亚欧在线高清专区_欧美人免费视频网站在线_中文字字幕乱码视频高清 | 69ww免费视频播放_午夜影院伦理片_久久无码人妻一区二区三区_国产成人亚洲精品无码Av大片_国产在线欧美_重生男人_精品福利一区二区三区_www.久草 | 日本久热_欧美影院_久草视频在线首页_中国业余老太性视频_男的操女的免费视频_一级毛片中国_国产精品99久久久久久宅男小说_麻豆国产精品久久人妻 | 亚洲一区二区三区含羞草_黑人内谢中国女人视频_国产精品亚洲专一区二区三区_国产一区二区福利在线_欧洲免费视频_婷婷影院在线综合免费视频_成人免费视频国一国二在线观看_日本少妇xxxx软件 | 国产精品麻豆久久_日日躁夜夜躁aaaaxxxx_av成人免费看_国产区精品_日韩中文在线_亚洲欧美成人在线_亚洲精品无码久久久久久_亚韩无码一区二区在线视频 | 芭乐草永久视频在线观看_h网站久久久_亚洲激情小视频_日本一本一道高清无_女人被爽到呻吟GIF动态图_男女插插免费视频_天天爱天天射天天干_国产免费久久久久 | 欧美黄色特级视频_日本高清一本视频_成人免费sss片_chinese丰满人妻videos_欧洲成人一区_高清一级淫片a级中文字幕_亚洲专区一_久久久91av | 精品一二三区视频_天天激情综合_国产高潮呻吟久久_国内精品在线一区_91精品国产色综合久久久蜜臀_综合在线视频_国产成人精品午夜福利_国产av无码专区亚洲av软件 | 九色精品91_性做久久久久免费观看_日韩精品123区_国产精品久久9_国产精品色拉拉_国产精品wwwcom976con_亚洲高清资源在线观看_九一精品视频一区二区三区 | 国产精品久久久天天影视香蕉_黄色毛片前黄_一本色道久久88亚洲精品综合_青青草欧美_国产一区二区三区天码_久久久精品区_怡春院性无码免费视频_成人短篇合集t×t | 中日黄色一级片_国产护士在线观看免费_日韩中文字幕网_91p亚洲_色窝窝51精品国产人妻消防_国产一区二区丁香婷婷_国产乱淫片视频_999精品国产人妻无码系列 | 小草莓网站_偷偷操网站_在线播放网站_一区二区三区观看视频_亚洲视频a_久久人妻少妇嫩草AV无码专区_黄色免看_91网站永久免费看 | 男女午夜猛烈啪啦啦视频_蜜臀成人av_国产精久久一区二区三区_国产农村乱_四虎永久在线精品国产馆v视影院_97欧美一乱一性一交一视频_av中出_中文无码乱人伦中文视频在线V | 超碰人人爱_日韩精品中文字幕在线观看_欧美亚洲熟女一区二区视频_国精品产一区二区三区在线播放_女人与动zzz0000xxxx_另类天堂网不卡另类系列_清纯国语对白videoshdcom_久久99精品久久久噜噜最新章节 | 二级片免费_国产精品午夜久久久久久99热_久久av青久久久av三区三区_免费大片AV手机看片高清_久久精品AV无码夜色_欧美XXXX做受欧美69_久在线视频播放免费视频_国产日韩欧美一区 | 久色视频_a视频免费看_强插女教师AV在线_亚洲午夜免费福利视频_日韩第一精品_蜜桃久久精品一区二区_经典久久久_特黄A片女人亚洲一区小说 | 中文字幕人妻在线中字_性色av一区二区三区四区_亚洲永久入口_国内精品二区_日韩毛片网站_最近2019年日本中文免费字幕_亚洲AV无码一区二区三区DV_成人播放视频 | 中文日韩在线视频_无码毛片一级高潮免费视频_毛片黄片_国产成人在线网址_国产特级全黄一级毛片_免费观看在线毛片_人人妻人人澡人人爽超污_日韩欧美国产系列 | 在线观看免费国产小视频_国产黄色在线_久久久久久国产精品免费免费_成全视频在线观看免费高清在线观看_国产精品国产三级国产专播_FREEZEFRAME丰满老妇_国产强伦姧在线观看无码_国产性色强伦免费视频 | HEYZO无码综合国产精品227_欧美图一区_国产呦系列呦交_久热综合在线亚洲精品_免费一级毛片视频_欧美国产成人精品二区芒果视频_黄色影院在线免费观看_jizz在线观看 | 亚洲高清不卡一区_91亚洲精品国产_四虎精品久久_男男无码GV片在线看_亚洲卡通欧美制服中文_伊人久久久AV老熟妇色_国产91影院_老汉影院免费观看 | 欧美成人影片_亚洲午夜一区_亚洲xxxx3d_狠狠色狠狠色很很综合很久久_国产极品91_亚洲熟妇自拍无码区_99免费_国产毛片久久久久久蜜臂媒 热の无码热の有码热の综合_国产在线精品亚洲第一区香蕉_97在线超碰_久久久视频免费观看_国产精品美女一区二区_亚洲精品久久久蜜桃网站_欧美XXXX黑人又粗又长精品_麻豆精品国产 | 男人的天堂Aⅴ在线_国产成人无码av一区二区在线观看_欧美韩国日本一区二区三区_7194中文乱码一二三四芒果_一级片xxxx_99re在线免费视频_av在线干_国产精品美女久久久久久久久久久 | 日日碰狠狠添天天爽超碰97久久_999成人精品_免费黄色毛片_亚洲HEYZO专区无码综合_女人被躁到高潮嗷嗷叫69_国产成人久久综合777777麻豆_韩日在线观看视频_精品国产网站 | 色麒麟影院_碰碰久久_黄免费观看_国产精品久久久久aaaa_毛片爱爱_国产无遮挡猛进猛出免费软件_青青草中文_国产SUV精品一区二区33 | 热99在线观看_亚洲日韩看片无码超清_在线观看ww_亚洲一区二区视频网站_久久精品99视频_A级毛片100部免费观看_国产黑色丝袜流白浆视频_伊人yinren22综合开心 | 狠狠综合久久av一区二区小说_久久只精品99品免费久23_亚洲在线色_免费日韩av_日产日韩在线亚洲欧美_亚洲AV无码一区东京热不卡_欧美拍拍视频免费大全_久久久久久不卡 | 曰韩观看免费_yellow高清免费观看日本_欧美伦理一区二区三区_无码AV无码一区二区桃花岛_亚洲一区二区制服在线_性8sex8亚洲网友自拍_69综合精品国产二区无码_在线免费观看v片 | 欧美熟妇性XXXXX_潜行者40集连续剧免费_一区二区免费在线视频_成人国产一区二区三区精品不卡_午夜影院免费观看_亚洲第一AV导航AV尤物_日韩精品亚洲精品第一页_国产精品欧美一区乱破 | aⅴ成年女人毛片免费观看_国产91视频一区_AV无码免费无禁网站_成人高清在线_亚洲精品成人片在线播放4388_国产精品福利久久久_国产精品一二三区久久狼_国产精品爱久久久久久久 | 国产成人片视频一区二区_91精彩视频_一二三区视频在线_亚洲区综合区小说区激情区_健身房啪啪的av片_国产色视频_亚洲高清国产精品_日韩精品欧美一区 | 亚洲精品一区二区三区四区高清_亚洲熟妇久久精品_无码国产精品一区二区VR老人_一区二区三区免费看视频_国产精品国产a级_特级黄色毛片视频片子_日本黄色毛片_男人视频网站 | 中文字幕一区二区三区免费视频_欧美性影院_国产理论一区二区三区_婷婷色综合久久_久久精品2_免费精品99久久国产综合精品_老司机免费_无码人妻精品一区二区三 | 性欧美精品高清_私人vps毛片_欧美中文网_日本人在线看片免费观看_色资源av_无码AV波多野结衣久久_91干在线_中文字幕在线高清 |