• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

      陶璐

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

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

      中圖分類號(hào): TP312 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 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è)計(jì)算領(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ù)處理的過程,這些過程對(duì)于業(yè)務(wù)人員更為直觀,調(diào)整也比hardcode的代碼更容易。當(dāng)然企業(yè)還需要對(duì)服務(wù)治理,比如服務(wù)注冊(cè)庫(kù),監(jiān)控管理等。我們知道企業(yè)計(jì)算領(lǐng)域,如果不是交易系統(tǒng)的話,并發(fā)量都不是很大的,所以大多數(shù)情況下,一臺(tái)服務(wù)器就容納將許許多多的服務(wù),這些服務(wù)采用統(tǒng)一的基礎(chǔ)設(shè)施,可能都運(yùn)行在一個(gè)應(yīng)用服務(wù)器的進(jìn)程中。雖然說是面向服務(wù)了,但還是單一的系統(tǒng)。

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

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

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

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

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

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

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

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

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

      4 結(jié)語(yǔ)

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

      【參考文獻(xiàn)】(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)與實(shí)踐[M].西安:電子工業(yè)出版社,2015.

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

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

      猜你喜歡
      微服務(wù)
      基于供給側(cè)改革理論的圖書館社交網(wǎng)絡(luò)微服務(wù)研究
      微信公眾平臺(tái)在醫(yī)院圖書館的應(yīng)用現(xiàn)狀調(diào)查
      基于微信企業(yè)號(hào)的校園移動(dòng)服務(wù)
      微服務(wù)視角下高職圖書館數(shù)字資源使用分析
      中文信息(2016年10期)2016-12-12 10:09:57
      從單一模式系統(tǒng)架構(gòu)往微服務(wù)架構(gòu)遷移轉(zhuǎn)化技術(shù)研究
      基于微信公眾平臺(tái)的高校圖書館微服務(wù)現(xiàn)狀及對(duì)策
      大田县| 社旗县| 永福县| 佳木斯市| 台北市| 雷山县| 衡水市| 涟源市| 买车| 青冈县| 广东省| 贺兰县| 五大连池市| 龙口市| 荣昌县| 深水埗区| 运城市| 长海县| 许昌市| 扎囊县| 拜城县| 苏尼特左旗| 青冈县| 玛沁县| 佛坪县| 同仁县| 黄龙县| 通海县| 错那县| 曲沃县| 时尚| 景宁| 贡嘎县| 清原| 台北县| 北宁市| 兴城市| 屏东市| 当雄县| 罗山县| 涞水县|