項目瓶頸一般是數(shù)據(jù)庫,因為機器瓶頸可以用負載均衡器加很多機器解決,數(shù)據(jù)庫讀取的瓶頸可以用多個從庫來解決,可是并發(fā)寫入如何提高呢?特別是那種需要馬上得到插入結(jié)果的,不能用消息隊列解決的如何做呢?
個人一些看法:(什么語言都差不多的,我這邊是Java的)
省略前頭的部分內(nèi)容,畢竟是比較簡單的演化過程
我們將session做成一個session服務(wù)器,browser1通過負載均衡請求服務(wù)器,服務(wù)器將session信息存儲到session服務(wù)器中,當(dāng)想要獲取時就反向進行。(缺點:目前session Server是單點的,如何解決單點,保證可用性)
我們可以將Session Server也做成集群,其適合用于Session數(shù)量與web服務(wù)數(shù)量大的情況下,更改架構(gòu)后,也要修改應(yīng)用存儲session的業(yè)務(wù)邏輯。
接下來我們再看看數(shù)據(jù)庫,讀寫都要經(jīng)過數(shù)據(jù)庫,當(dāng)用戶量達到一定量時,數(shù)據(jù)庫又將成為一個瓶頸,則我們將如何解決?我們可以使用數(shù)據(jù)庫的讀寫分離,主從庫,并通過統(tǒng)一的數(shù)據(jù)訪問模型進行訪問,將所有讀操作引入到Slave服務(wù)器,將寫操作引入到主庫當(dāng)中,由于數(shù)據(jù)庫讀寫分離,所以應(yīng)用程序也要有相應(yīng)的變化,使用數(shù)據(jù)訪問模塊讓應(yīng)用程序開發(fā)人員不用理會讀寫分離的存在,這樣多數(shù)據(jù)源讀寫代碼對我們的業(yè)務(wù)就沒有了侵入(代碼層的演變,如何支持多數(shù)據(jù)源、如何封裝對業(yè)務(wù)沒有侵入、如何使用現(xiàn)用的ORM框架實現(xiàn)數(shù)據(jù)讀寫分離、是否更換ORM、其優(yōu)缺點?)
當(dāng)我們訪問過大,I/O過大,我們數(shù)據(jù)的讀寫分離又將遇到這幾個問題,主從庫復(fù)制時是否延遲(分機房部署、跨機房傳輸),應(yīng)用對于數(shù)據(jù)源的路由問題,接著我們?yōu)榱颂岣叻?wù)器,增加了CND和反向代理服務(wù)器,使用CDN可以解決不同地方訪問速度問題、反向代理可以在機房中緩存用戶的資源。
這時文件服務(wù)器又出現(xiàn)了瓶頸,我們將文件服務(wù)器改為分布式文件服務(wù)器集群,我們要考慮到:如何不影響線上的業(yè)務(wù)訪問,是否需要業(yè)務(wù)部門幫忙清理數(shù)據(jù),是否需要備份服務(wù)器,是否需要重新做域名解析。
這時我們的數(shù)據(jù)庫又出現(xiàn)了新的瓶頸,我們選擇專庫專用的方式,進行數(shù)據(jù)庫的垂直拆分,可以解決寫數(shù)據(jù)、并發(fā)、量大的問題,分庫后又將帶來一些新的問題:跨業(yè)務(wù)的事務(wù)(分布式事務(wù))
當(dāng)某個數(shù)據(jù)的訪問量、數(shù)據(jù)量、日志等過大達到瓶頸時,這時我們就要進行數(shù)據(jù)庫的水平拆分,我們將User拆分成Users1和Users2,水平拆分即將同一個數(shù)據(jù)表的數(shù)據(jù)拆分到兩個數(shù)據(jù)庫當(dāng)中,這時我們就解決了單數(shù)據(jù)庫的瓶頸。
水平拆分后,SQL路由出現(xiàn)一些問題,假設(shè)我們想知道某個用戶是存在Users1還是Users2中,且由于分庫,主鍵的策略也將有所不同,同時也將面臨一個分頁的問題(后臺管理系統(tǒng)在進行展示時還要考慮分頁的問題),當(dāng)完成后,我們又發(fā)現(xiàn)應(yīng)用服務(wù)器的搜索量上升,這時我們將應(yīng)用服務(wù)器的搜索功能提取出來做成搜索引擎,同時部分場景使用NoSQL提高性能,
當(dāng)然以上架構(gòu)還存在部分問題,如負載均衡服務(wù)器是單點,因此也可以將負載均衡服務(wù)器做成集群,進行主從的熱備,同時做一個自動切換的解決方案。
過程中:安全性、數(shù)據(jù)分析、監(jiān)控、反作弊........
繼續(xù)發(fā)展:SOA架構(gòu)、服務(wù)化、消息隊列、任務(wù)調(diào)度、多機房........
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。