亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于微服務(wù)的大型網(wǎng)站架構(gòu)設(shè)計

        2018-01-16 12:34:48陶璐
        科技視界 2018年28期
        關(guān)鍵詞:微服務(wù)

        陶璐

        【摘 要】微服務(wù)構(gòu)架(Microservice Architecture)體系表述的應(yīng)用設(shè)計方案是一個相對單獨運轉(zhuǎn)工作的構(gòu)架體系。這種構(gòu)架體系以工作自動部署、運轉(zhuǎn)速率、點到點的重組、結(jié)合以及數(shù)據(jù)控制和語言控制的分散性上面展開。微服務(wù)這種架構(gòu)風(fēng)格就是把一組小服務(wù)演化成為一個單一的應(yīng)用的一種方法。每個應(yīng)用都運行在自己的進程中,并通過輕量級的機制保持通信,就像HTTP這樣的API[1]。這些服務(wù)要基于業(yè)務(wù)場景,并使用自動化部署工具進行獨立的發(fā)布??梢杂幸粋€非常輕量級的集中式管理來協(xié)調(diào)這些服務(wù),可以使用不同的語言來編寫服務(wù),也可以使用不同的數(shù)據(jù)存儲。通常微服務(wù)可以針對性的完成一些功能,如訂單統(tǒng)計、用戶統(tǒng)計等。微服務(wù)在實際運用中都是一個擁有自我規(guī)律和自適應(yīng)的小型多邊形應(yīng)用程序。個別的微服務(wù)還將向別的微服務(wù)以及客戶端發(fā)送API。當(dāng)完成Web UI,運算中的云VM(2)以及DOCKER容器[3]都可以成為一個實例。

        【關(guān)鍵詞】服務(wù)構(gòu)架;微服務(wù);SOA;單塊服務(wù)

        中圖分類號: TP312 文獻標(biāo)識碼: A 文章編號: 2095-2457(2018)28-0210-002

        DOI:10.19694/j.cnki.issn2095-2457.2018.28.096

        【Abstract】Microservice architecture is used to describe the design of an independent software application deployment,This architecture is around business capabilities,automated deployment,end to end above decentralized control and the integration of language and data.This microservice architecture style is a group of small service evolution has become a method for a single application.Each application runs in its own process,and maintain communication through a lightweight mechanism,such as HTTP API.These services should be based on the business scene,publish and use automated deployment tool independently.There can be a very lightweight centralized management to coordinate these services,you can use different language services,can also use different data storage.A microservice typically performs a specific function,such as order management,customer management,etc.each of the micro services is a miniature hexagonal application that has its own business logic and adapters.Some microservices will also release API to other micro services and application clients.Other micro services to complete a Web UI,run-time,each instance may be a cloud VM or Docker container.

        【Key words】Service Architecture;Microservice;SOA;Monolith

        1 微服務(wù)與SOA的區(qū)別

        SOA的提出是在企業(yè)計算領(lǐng)域,就是要將緊耦合的系統(tǒng),劃分為面向業(yè)務(wù)的,粗粒度,松耦合,無狀態(tài)的服務(wù)[4]。服務(wù)發(fā)布出來供其他服務(wù)調(diào)用,一組互相依賴的服務(wù)就構(gòu)成了SOA架構(gòu)下的系統(tǒng)?;谶@些基礎(chǔ)的服務(wù),可以將業(yè)務(wù)過程用類似BPEL流程的方式編排起來,而BPEL反映的是業(yè)務(wù)處理的過程,這些過程對于業(yè)務(wù)人員更為直觀,調(diào)整也比hardcode的代碼更容易。當(dāng)然企業(yè)還需要對服務(wù)治理,比如服務(wù)注冊庫,監(jiān)控管理等。我們知道企業(yè)計算領(lǐng)域,如果不是交易系統(tǒng)的話,并發(fā)量都不是很大的,所以大多數(shù)情況下,一臺服務(wù)器就容納將許許多多的服務(wù),這些服務(wù)采用統(tǒng)一的基礎(chǔ)設(shè)施,可能都運行在一個應(yīng)用服務(wù)器的進程中。雖然說是面向服務(wù)了,但還是單一的系統(tǒng)。

        而微服務(wù)架構(gòu)大體是從互聯(lián)網(wǎng)企業(yè)興起的,由于大規(guī)模用戶,對分布式系統(tǒng)的要求很高,如果像企業(yè)計算那樣的系統(tǒng),伸縮就需要多個容納許許多多的服務(wù)的系統(tǒng)實例,前面通過負(fù)載均衡使得多個系統(tǒng)成為一個集群。但這是很不方便的,互聯(lián)網(wǎng)企業(yè)迭代的周期很短,一周可能發(fā)布一個版本,甚至可能每天一個版本,而不同的子系統(tǒng)的發(fā)布周期也是不一樣的。而且,不同的子系統(tǒng)也不像原來企業(yè)計算那樣采用集中式的存儲,使用昂貴的Oracle存儲整個系統(tǒng)的數(shù)據(jù),或使用MongoDB、HBase[5]、Cassandra和其他NoSQL[6]數(shù)據(jù)庫和Redis、MemCache等。那么就傾向采用以子系統(tǒng)為分割,不同的子系統(tǒng)采用自己的架構(gòu),那么各個服務(wù)運行自己的Web容器中,當(dāng)需要增加計算能力的時候,只需要增加這個子系統(tǒng)或服務(wù)的實例就好了,當(dāng)升級的時候,可以不影響別的子系統(tǒng)。這種組織方式大體上就被稱作微服務(wù)架構(gòu)。

        Microservice與SOA相比,Microservice強調(diào)分布式系統(tǒng)的特性,如橫向可伸縮性,服務(wù)識別,負(fù)載均衡,故障扭轉(zhuǎn),高可用?;ヂ?lián)網(wǎng)開發(fā)對服務(wù)治理提出了更多的要求,比如多版本,比如灰度升級,比如服務(wù)降級,比如分布式跟蹤,這些都是在SOA實踐中重視不夠的。Docker容器技術(shù)的出現(xiàn),為微服務(wù)提供了更便利的條件,比如更小的部署單元,每個服務(wù)可以通過類似Node.js或Spring Boot的技術(shù)運行在自己的進程中[7]??赡茉趲资_計算機中運行成千上萬個Docker容器,每個容器都運行著服務(wù)的一個實例。隨時可以增加某個服務(wù)的實例數(shù),或者某個實例崩潰后,在其他的計算機上再創(chuàng)建該服務(wù)的新的實例。

        2 傳統(tǒng)網(wǎng)站架構(gòu)模式

        傳統(tǒng)模式下我們所開發(fā)的服務(wù)對應(yīng)的代碼是由多個項目組成的,每個項目都具有一個明確的范圍,來提供自身會相應(yīng)的功能。如圖1所示,以下項目在編輯過程中被逐個打成JAR包,最后統(tǒng)一打成WAR包。接著,我們將該WAR包上傳至Web容器中,解壓縮WAR包、重啟服務(wù)器。在一系列操作執(zhí)行后,我們就完成了服務(wù)的編譯和部署。在這個WAR包里,含括了這些相關(guān)代碼和所需功能的項目組織被稱之為單塊服務(wù)。在項目較小的情況下,這種代碼組織方式還是可以接受的,更改代碼后,測試開發(fā)者可以單獨部署新編譯的WAR包并測試這些更改。但是隨著項目越來越大,整個開發(fā)過程需要很長時間:縱然只有一行代碼被更改,開發(fā)者也要花費數(shù)十分鐘甚至數(shù)小時來編譯所有代碼,然后花費大量時間重新部署新開發(fā)的產(chǎn)品來驗證所做的修改正確與否。

        假如部署應(yīng)用程序很繁瑣,但是為了測試自己的改進,那么開發(fā)者還需要在部署之前進行大量的環(huán)境設(shè)置,這使得軟件開發(fā)者的工作異常的復(fù)雜和枯燥。正如您在圖2中看到的,開發(fā)者用于編譯和部署上所用的時間線圖多于甚至超過了對代碼進行測試更改的時間線圖,可見效率已經(jīng)變得十分低下。除此之外,因為按單塊服務(wù)所組織的代碼在生成過程中只出現(xiàn)一個具備所有功能項的WAR包,因而為了擴展服務(wù)容量只有選擇反復(fù)生成WAR包。

        如此以來對于資源的占用又是非常大的。以圖3所示:服務(wù)中,負(fù)載的組件數(shù)值已到90%,可以理解為服務(wù)容量已經(jīng)到了必須擴展的時候。而同時工作的另外三個組件還未能達到它所處理能力的20%。由于單塊服務(wù)的每個組件都打包在同一個WAR包中,所以另外增加的一個服務(wù)模式則需要把擴展的組件上的負(fù)載減少到45%,但是也使其他組件的利用率更低[8]。單塊服務(wù)之所以造成眾多不便,主要是服務(wù)的所有功能都在一個WAR包內(nèi)涵蓋了。想要解決這個難題就需要運用微服務(wù)架構(gòu)模式。

        3 微服務(wù)架構(gòu)模式

        微服務(wù)架構(gòu)模式就是把Web化整為零,生成眾多小型的Wed服務(wù)。分解后的Web服務(wù)能夠?qū)崿F(xiàn)編譯、部署,并在各自的API端口基礎(chǔ)上達成聯(lián)系[9]。

        如圖4所示,它們相互配合。作為一個整體為用戶提供功能,又能自由擴容。使用微服務(wù)架構(gòu)模式,開發(fā)者能夠由編譯、重新部署單個子服務(wù)來驗證他們的變更,而無需整體重新編譯,可以省去大量時間和精力。因為子服務(wù)之間是相對并立的,所以每個服務(wù)可以決定其最佳實現(xiàn)方式,使得這些子服務(wù)的開發(fā)變得更為便捷。最后,當(dāng)運轉(zhuǎn)中的系統(tǒng)發(fā)生了容量不足,我們只需要找到形成系統(tǒng)瓶頸對應(yīng)的子服務(wù)項,并擴充該子服務(wù)的容量即可。

        4 結(jié)語

        以上介紹的就是微服務(wù)架構(gòu)模式。事實中,這種構(gòu)架模式是在不斷的發(fā)展、進步、完善。在許多文獻及研討中,還沒有就模式的標(biāo)準(zhǔn)實現(xiàn)和最佳實踐形成一個大家一致認(rèn)同的強有力的說法。因此,本文提到的一系列經(jīng)驗,也是在參考文獻和討論中達成的基本共識的。大家在實現(xiàn)自己的Microservice構(gòu)架模式時,可以學(xué)習(xí)這些經(jīng)驗,也可以對微服務(wù)構(gòu)架模式的體現(xiàn)方式作出一些調(diào)整來完成項目自身的需求。

        【參考文獻】(References)

        [1]VILLAMIZAR M,GARCES O,CASTRO H,et al.Evaluating the monolithic and the microservice architecture pattern to deploy web applications in the cloud[C]//2015 10th Computing Colombian Conference,Bogota:IEEE,2015.

        [2]Smith JE,Nair R.The architecture of virtual machines[J]. IEEE Transaction on Computer,2005,(5):32-38.

        [3]Dua,Bangalore,Raja.Virtualization vs Containerization to Support Paa S.IEEE,2014,41:610-614.

        [4]ERL T.Service-oriented architecture(SOA):concepts,technology,and design[J].Concepts,2005,118(2):33-37.

        [5]Krisitina Chodorow.Scaling MongoDB.Sebastopol,CA:O'Reilly Media,2011.1-3

        [6]Rick Cattell.Scalable SQL and NOSQL data stores.SIGMOD Record.2010.United States.Association for Computing Machinery.l2-13.

        [7]RAUCH Guillermo.Smashing Node.js[M].America:Wiley,2012.

        [8]王磊.微服務(wù)架構(gòu)與實踐[M].西安:電子工業(yè)出版社,2015.

        [9]王磊.基于微服務(wù)架構(gòu),改造企業(yè)核心系統(tǒng)之實踐.http://chuansong.me/n/969980351082.

        [10]肖勤.微服務(wù)架構(gòu)實踐經(jīng)驗分享.http://www.csdn.net/article/2015-08-07/2825412.[2015-08-07].

        猜你喜歡
        微服務(wù)
        基于供給側(cè)改革理論的圖書館社交網(wǎng)絡(luò)微服務(wù)研究
        微信公眾平臺在醫(yī)院圖書館的應(yīng)用現(xiàn)狀調(diào)查
        基于微信企業(yè)號的校園移動服務(wù)
        微服務(wù)視角下高職圖書館數(shù)字資源使用分析
        中文信息(2016年10期)2016-12-12 10:09:57
        從單一模式系統(tǒng)架構(gòu)往微服務(wù)架構(gòu)遷移轉(zhuǎn)化技術(shù)研究
        基于微信公眾平臺的高校圖書館微服務(wù)現(xiàn)狀及對策
        国产激情久久99久久| 日本少妇春药特殊按摩3| 亚洲色无码国产精品网站可下载| 国产精品久免费的黄网站| 亚洲一区二区三区在线中文| 精品一区二区av在线| 久久精品国产自在天天线| √天堂中文官网8在线| 自慰高潮网站在线观看 | 最新精品亚洲成a人在线观看| 国产毛片三区二区一区| 国产成人亚洲一区二区| 国内精品视频在线播放不卡| 9191在线亚洲精品| 日本一区二区三区一级免费| 肥老熟女性强欲五十路| 水蜜桃精品一二三| 中文人妻无码一区二区三区信息| 亚洲av男人免费久久| 伊人久久综合无码成人网| 精品人妻人人做人人爽夜夜爽| 日韩av二区三区一区| 亚洲天堂一区二区三区 | 久久精品国产亚洲AⅤ无码| 日本一区二区精品色超碰| 真实夫妻露脸自拍视频在线播放| 无码人妻精品一区二区三区不卡| 国产精品每日更新在线观看 | 白天躁晚上躁麻豆视频| 午夜视频网址| 久久亚洲精品一区二区三区| 国内精品久久久久国产盗摄| 国产乱沈阳女人高潮乱叫老| 国内色精品视频在线网址| 开心五月婷婷激情综合网| 亚洲色在线v中文字幕| 午夜国产一区二区三区精品不卡| 亚洲国产91精品一区二区| 妺妺窝人体色www看人体| 国模精品无码一区二区二区 | 亚洲国产区中文在线观看|