电竞比分网-中国电竞赛事及体育赛事平台

分享

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

 CCI16 2016-12-12

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

互聯(lián)網(wǎng)的普及促進(jìn)了各種創(chuàng)新應(yīng)用的涌現(xiàn),不過(guò),由于是創(chuàng)新的應(yīng)用,在搭建這些應(yīng)用時(shí)也出現(xiàn)了各種各樣的誤區(qū),比如:

想要搭建一個(gè)電子商務(wù)的應(yīng)用,首先想到的是套用阿里的方案,其實(shí)由于公司業(yè)務(wù)方向不同,很難直接套用別人的方案,更合適的做法是讓互聯(lián)網(wǎng)的技術(shù)架構(gòu)隨著業(yè)務(wù)的發(fā)展而不斷拓展,這樣既節(jié)省成本又提升效率;

還有一個(gè)明顯的誤區(qū)是,為了追求技術(shù)而技術(shù),很多架構(gòu)師為了嘗鮮,喜歡采用最新的技術(shù),而采用新技術(shù)一般需要付出更高的成本,更重要的是,新技術(shù)能否支撐業(yè)務(wù)也是一個(gè)未知數(shù),因?yàn)榛ヂ?lián)網(wǎng)的架構(gòu)和傳統(tǒng)軟件有較大區(qū)別,傳統(tǒng)的應(yīng)用軟件在開(kāi)始建設(shè)時(shí)就知道要實(shí)現(xiàn)的功能,但互聯(lián)網(wǎng)應(yīng)用都是創(chuàng)新的應(yīng)用,剛開(kāi)始時(shí)大家并不完全確定業(yè)務(wù)方向和具體功能,需要根據(jù)具體的業(yè)務(wù)摸索著前進(jìn),新技術(shù)能否隨著業(yè)務(wù)的演進(jìn)而演進(jìn)也是要充分考慮的。

那到底互聯(lián)網(wǎng)應(yīng)用的技術(shù)架構(gòu)該如何演進(jìn)呢?用友能源研發(fā)中心副總經(jīng)理閆建偉在用友能源技術(shù)交流會(huì)上做了《互聯(lián)網(wǎng)架構(gòu)演化》的主題分享與溝通,對(duì)這一問(wèn)題進(jìn)行了詳細(xì)的解讀和分析,據(jù)他介紹,互聯(lián)網(wǎng)創(chuàng)新應(yīng)用技術(shù)架構(gòu)的演進(jìn)可以通過(guò)以下十步逐級(jí)實(shí)現(xiàn):

一、采用簡(jiǎn)單的LAMP架構(gòu)

要做一個(gè)互聯(lián)網(wǎng)應(yīng)用,我們首先想到的應(yīng)該是快速地開(kāi)發(fā)出這個(gè)應(yīng)用,推向市場(chǎng),讓市場(chǎng)去對(duì)其進(jìn)行驗(yàn)證。在這個(gè)階段一般是采用簡(jiǎn)單的技術(shù),簡(jiǎn)單的設(shè)備,通常的技術(shù)架構(gòu)是采用LAMP架構(gòu),L是Linix 、A 是Apache、M是 Mysql、P是 PHP,可以看出整個(gè)技術(shù)架構(gòu)比較簡(jiǎn)單,但可以快速上線。

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

LAMP架構(gòu)

二、應(yīng)用服務(wù)與數(shù)據(jù)服務(wù)分離

隨著業(yè)務(wù)增加和用戶訪問(wèn)量的增加,一臺(tái)應(yīng)用服務(wù)器已經(jīng)無(wú)法滿足網(wǎng)站的正常運(yùn)行時(shí),怎么辦呢?在技術(shù)上,通常的做法是把應(yīng)用和數(shù)據(jù)分開(kāi)進(jìn)行獨(dú)立部署,根據(jù)業(yè)務(wù)發(fā)展情況,可以將1臺(tái)服務(wù)器分成3臺(tái)服務(wù)器,分別運(yùn)行應(yīng)用程序、數(shù)據(jù)庫(kù)和文件系統(tǒng),這3臺(tái)服務(wù)器部署不同,對(duì)性能要求也不同,比如應(yīng)用服務(wù)器通常需要處理大量的應(yīng)用邏輯,那就需要更強(qiáng)、更快的CPU;數(shù)據(jù)庫(kù)服務(wù)器通常要做大量的檢索,因而需要更大的內(nèi)存和更快的硬盤(pán)響應(yīng)速度;文件服務(wù)器通常需要存儲(chǔ)大量的文件,所以需要很大的存儲(chǔ)硬盤(pán)。

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

服務(wù)器分離結(jié)構(gòu)

三、使用緩存改善網(wǎng)站性能

上面講到了對(duì)服務(wù)器的要求,而隨著服務(wù)的增加,數(shù)據(jù)會(huì)變多,這會(huì)造成數(shù)據(jù)服務(wù)器壓力過(guò)大,整個(gè)網(wǎng)站的應(yīng)用性能下降。我們知道,客戶訪問(wèn)一般也存在二八原則,大量的訪問(wèn)會(huì)集中到少量的數(shù)據(jù)上,比如我們通常會(huì)點(diǎn)擊那些評(píng)價(jià)好、信用好的商家的貨物,這樣就會(huì)造成某幾個(gè)商品的點(diǎn)擊率特別高,我們的技術(shù)對(duì)策是把經(jīng)常訪問(wèn)的數(shù)據(jù)放到緩存里,不讓他訪問(wèn)數(shù)據(jù)庫(kù),這樣可以加快數(shù)據(jù)的訪問(wèn)速度,同時(shí)減少數(shù)據(jù)庫(kù)的壓力。

緩存主要分為:第一、應(yīng)用服務(wù)器本地緩存,應(yīng)用服務(wù)器的本地緩存是訪問(wèn)速度最快的一種方式,缺點(diǎn)是應(yīng)用服務(wù)器的緩存不可能無(wú)限擴(kuò)容;第二,遠(yuǎn)程分布式緩存,遠(yuǎn)程分布式緩存可以使用集群方式,這樣大量的服務(wù)器可以作為緩存服務(wù)器,通過(guò)這種方式,在理論上,可以實(shí)現(xiàn)緩存的無(wú)限擴(kuò)容,當(dāng)然,具體情況需要具體分析。使用緩存后,數(shù)據(jù)庫(kù)壓力得到緩解,網(wǎng)站的性能得到整體提升。

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

本地緩存與遠(yuǎn)程分布式緩存

四、使用應(yīng)用服務(wù)器集群改善并發(fā)能力

而隨著業(yè)務(wù)的發(fā)展,業(yè)務(wù)服務(wù)器隨時(shí)面臨高并發(fā)的問(wèn)題,單一的應(yīng)用服務(wù)器不再能支持業(yè)務(wù)的發(fā)展。此時(shí),通常的做法是通過(guò)應(yīng)用服務(wù)器集群來(lái)解決高并發(fā)的問(wèn)題,而不是更換服務(wù)器,不管多強(qiáng)大的服務(wù)器都無(wú)法滿足網(wǎng)站持續(xù)發(fā)展的業(yè)務(wù)需求,因此通過(guò)集群的方式來(lái)分擔(dān)應(yīng)用服務(wù)器的壓力是最優(yōu)的選擇方案。通過(guò)負(fù)載均衡調(diào)度服務(wù)器,可以將用戶的請(qǐng)求分發(fā)到應(yīng)用服務(wù)器集群中的任何一臺(tái)服務(wù)器上,如果有更多的用戶,就在集群中加上更多的應(yīng)用服務(wù)器,從而解決高并發(fā)的問(wèn)題。

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

服務(wù)器集群方式

五、數(shù)據(jù)庫(kù)讀寫(xiě)分離

上面提到通過(guò)緩存、集群可以解決性能和高并發(fā)的問(wèn)題,那如果出現(xiàn)緩存失效和緩存穿透,或有些必須訪問(wèn)服務(wù)器的服務(wù),如何解決性能問(wèn)題呢?一般情況下,我們的服務(wù)器都有主從熱備的功能,相當(dāng)于我們?cè)O(shè)置了服務(wù)器的主從關(guān)系,通過(guò)這個(gè)功能讓數(shù)據(jù)從主服務(wù)器復(fù)制到從服務(wù)器,由此可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離,就是寫(xiě)數(shù)據(jù)的時(shí)候只寫(xiě)到主數(shù)據(jù)服務(wù)器,然后通過(guò)主從復(fù)制的功能,把數(shù)據(jù)從主服務(wù)器復(fù)制到從服務(wù)器,讀的時(shí)候只讀從服務(wù)器,這樣每個(gè)服務(wù)器承載的壓力下降,并發(fā)變小,通常會(huì)設(shè)置一個(gè)服務(wù)器的訪問(wèn)模塊,這樣可降低網(wǎng)站的耦合性。

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

數(shù)據(jù)庫(kù)讀寫(xiě)分離

六、使用反向代理和CDN加速網(wǎng)站響應(yīng)

我們知道,CDN和反向代理都是緩存,只不過(guò)CDN是部署在網(wǎng)絡(luò)運(yùn)營(yíng)商的機(jī)房,反向代理是部署在我們服務(wù)器的中心機(jī)房,他的目的是把一些靜態(tài)資源,比如圖片放到緩存里,這樣用戶訪問(wèn)的時(shí)候是先訪問(wèn)CDN服務(wù)器,也就是用戶是從離他最近的網(wǎng)絡(luò)運(yùn)營(yíng)商的機(jī)房訪問(wèn)用戶希望訪問(wèn)的數(shù)據(jù),這樣可以提高用戶的體驗(yàn)。如果穿透了CDN,這時(shí)來(lái)到反向代理服務(wù)器,從方向代理來(lái)訪問(wèn)資源,也不會(huì)影響用戶的體驗(yàn)。

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

使用CDN和反向代理

七、分布式文件系統(tǒng)和分布式數(shù)據(jù)庫(kù)系統(tǒng)

任何的單一的數(shù)據(jù)服務(wù)器都滿足不了網(wǎng)站業(yè)務(wù)持續(xù)增長(zhǎng)的需求,數(shù)據(jù)庫(kù)經(jīng)過(guò)讀寫(xiě)分離后,從一臺(tái)拆分成兩臺(tái)服務(wù)器,但隨著網(wǎng)站的發(fā)展依然無(wú)法滿足性能的要求,這時(shí)需要使用分布式數(shù)據(jù)庫(kù)和分布式文件系統(tǒng)。常用的方法是按表拆分和按業(yè)務(wù)拆分,最常用的是按業(yè)務(wù)拆分,將不同業(yè)務(wù)的數(shù)據(jù)部署在不同的數(shù)據(jù)庫(kù)服務(wù)器上。按表拆分是數(shù)據(jù)庫(kù)拆分的最后手段,只有在單表規(guī)模非常大的時(shí)候才使用這種方法。

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

分布式文件系統(tǒng)和分布式數(shù)據(jù)庫(kù)

八、使用NOSQL和搜索引擎

隨著網(wǎng)站業(yè)務(wù)越來(lái)越復(fù)雜,對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)和檢索的需求也越來(lái)越復(fù)雜,網(wǎng)站需要采用非關(guān)系型數(shù)據(jù)庫(kù)如NOSQL和非數(shù)據(jù)庫(kù)查詢技術(shù)如搜索引擎來(lái)提升網(wǎng)站性能。NOSQL和搜索引擎是互聯(lián)網(wǎng)廣泛應(yīng)用的技術(shù)手段,他們對(duì)可伸縮的分布式特性可以很好的支持,通過(guò)統(tǒng)一數(shù)據(jù)訪問(wèn)模塊訪問(wèn)各種數(shù)據(jù),減輕應(yīng)用程序管理諸多數(shù)據(jù)源的麻煩。

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

NOSQL和搜索引擎的部署

九、對(duì)系統(tǒng)進(jìn)行業(yè)務(wù)拆分、獨(dú)立部署

大型網(wǎng)站為了應(yīng)付日益復(fù)雜的業(yè)務(wù)場(chǎng)景,通常會(huì)將系統(tǒng)拆分成多個(gè)子系統(tǒng)進(jìn)行獨(dú)立部署。比如滴滴打車,他就分為乘客端、司機(jī)端、支付端、分析系統(tǒng),通常是按業(yè)務(wù)系統(tǒng)來(lái)拆分,然后每個(gè)業(yè)務(wù)系統(tǒng)又獨(dú)立部署,這樣有利于系統(tǒng)維護(hù),同時(shí)減少服務(wù)器并發(fā),有利于應(yīng)用架構(gòu)的承載,各個(gè)系統(tǒng)通過(guò)超鏈接的方式進(jìn)行界面的聯(lián)通,數(shù)據(jù)層通常是采用消息隊(duì)列來(lái)實(shí)現(xiàn)數(shù)據(jù)分發(fā)。

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

對(duì)業(yè)務(wù)進(jìn)行拆分和獨(dú)立部署

十、分布式服務(wù)

隨著業(yè)務(wù)拆分越來(lái)越小,整個(gè)系統(tǒng)越來(lái)越龐大,應(yīng)用系統(tǒng)的整體復(fù)雜度增加,維護(hù)起來(lái)就越困難。通常每一個(gè)應(yīng)用系統(tǒng)都需要執(zhí)行許多相同的業(yè)務(wù)操作,比如用戶管理、商品管理等,那么可以將這些共用的業(yè)務(wù)提取出來(lái),獨(dú)立部署。由這些可復(fù)用的業(yè)務(wù)連接數(shù)據(jù)庫(kù),提供公用服務(wù),而應(yīng)用系統(tǒng)只需要管理用戶界面,通過(guò)分布式服務(wù)調(diào)用共用業(yè)務(wù)服務(wù)完成具體操作。

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

分布式部署

到這一步,一個(gè)創(chuàng)新的互聯(lián)網(wǎng)應(yīng)用的業(yè)務(wù)基本都可以支撐了。

怎么樣,學(xué)會(huì)了嗎?做個(gè)行動(dòng)派吧!

干貨:厲害的來(lái)了!大牛程序員告訴你互聯(lián)網(wǎng)架構(gòu)如何演進(jìn)

關(guān)于用友能源

用友能源是聚焦能源行業(yè)的專業(yè)化公司,為能源行業(yè)用戶提供信息化服務(wù)及企業(yè)互聯(lián)網(wǎng)服務(wù)。信息化服務(wù)包括面向能源行業(yè)客戶提供企業(yè)經(jīng)營(yíng)管理(財(cái)務(wù)、供應(yīng)鏈、人力資源、合同管理、審計(jì)管理等)、工程項(xiàng)目管理(包括核電工程項(xiàng)目管理、輸變電工程項(xiàng)目管理、電廠基建項(xiàng)目管理等)、生產(chǎn)管理(包括資產(chǎn)管理、燃料管理、安健環(huán)HSE、制造執(zhí)行系統(tǒng)MES等)、以及營(yíng)銷側(cè)、售電側(cè)信息化解決方案等一體化的行業(yè)解決方案。企業(yè)互聯(lián)網(wǎng)服務(wù)包括數(shù)字營(yíng)銷、共享服務(wù)、社交協(xié)同、智慧能源等。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多