<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          圖解微服務(wù)技術(shù)架構(gòu)體系

          共 8159字,需瀏覽 17分鐘

           ·

          2021-08-20 05:48

          來源:juejin.im/post/5c0ba2bef265da614d08fefe

          下文,你將看到業(yè)界主流微服務(wù)框架的核心原理,包括服務(wù)發(fā)現(xiàn),網(wǎng)關(guān),配置中心,監(jiān)控等組件,功能和架構(gòu)原理的簡單介紹。感謝閱讀!??

          Hello,Microservices

          什么是微服務(wù)

          微服務(wù)Microservices之父,馬丁.福勒,對微服務(wù)大概的概述如下:

          就目前而言,對于微服務(wù)業(yè)界并沒有一個(gè)統(tǒng)一的、標(biāo)準(zhǔn)的定義(While there is no precise definition of this architectural style ) 。但通在其常而言,微服務(wù)架構(gòu)是一種架構(gòu)模式或者說是一種架構(gòu)風(fēng)格,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),每個(gè)服務(wù)運(yùn)行獨(dú)立的自己的進(jìn)程中,服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價(jià)值。服務(wù)之間采用輕量級的通信機(jī)制互相溝通(通常是基于 HTTP 的 RESTful API ) 。每個(gè)服務(wù)都圍繞著具體業(yè)務(wù)進(jìn)行構(gòu)建,并且能夠被獨(dú)立地部署到生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等。另外,應(yīng)盡量避免統(tǒng)一的、集中式的服務(wù)管理機(jī)制,對具體的一個(gè)服務(wù)而言,應(yīng)根據(jù)業(yè)務(wù)上下文,選擇合適的語言、工具對其進(jìn)行構(gòu)建,可以有一個(gè)非常輕量級的集中式管理來協(xié)調(diào)這些服務(wù)。可以使用不同的語言來編寫服務(wù),也可以使用不同的數(shù)據(jù)存儲。

          根據(jù)馬丁.福勒的描述,我總結(jié)了一下幾點(diǎn):

          康威定律

          (字差,勿嫌)

          小服務(wù)

          小服務(wù),沒有特定的標(biāo)準(zhǔn)或者規(guī)范,但他在總體規(guī)范上一定是小的。

          進(jìn)程獨(dú)立

          每一組服務(wù)都是獨(dú)立運(yùn)行的,可能我這個(gè)服務(wù)運(yùn)行在tomcat容器,而另一個(gè)服務(wù)運(yùn)行在jetty上。可以通過進(jìn)程方式,不斷的橫向擴(kuò)展整個(gè)服務(wù)。

          通信

          過去的協(xié)議都是很重的,就像ESB,就像SOAP,輕通信,著意味著相比過去更智能更輕量的服務(wù)相互調(diào)用,就所謂smart endpoints and dumb pipes,這些endpoint都是解耦的,完成一個(gè)業(yè)務(wù)通信調(diào)用串起這些micro service就像是linux系統(tǒng)中通過管道串起一系列命令業(yè)務(wù)。

          過去的業(yè)務(wù),我們通常會考慮各種各樣的依賴關(guān)系,考慮系統(tǒng)耦合帶來的問題。微服務(wù),可以讓開發(fā)者更專注于業(yè)務(wù)的邏輯開發(fā)。

          部署

          不止業(yè)務(wù)要獨(dú)立,部署也要獨(dú)立。不過這也意味著,傳統(tǒng)的開發(fā)流程會出現(xiàn)一定程度的改變,開發(fā)的適合也要有一定的運(yùn)維指責(zé)

          管理

          傳統(tǒng)的企業(yè)級SOA服務(wù)往往很大,不易于管理,耦合性高,團(tuán)隊(duì)開發(fā)成本比較大。微服務(wù),可以讓團(tuán)隊(duì)各思其政的選擇技術(shù)實(shí)現(xiàn),不同的service可以根據(jù)各自的需要選擇不同的技術(shù)棧來實(shí)現(xiàn)其業(yè)務(wù)邏輯。

          微服務(wù)的利與弊

          為什么用微服務(wù)呢?因?yàn)楹猛妫?/p>

          不是的。下面是我從網(wǎng)絡(luò)上找到說的比較全的優(yōu)點(diǎn):

          • 優(yōu)點(diǎn)每個(gè)服務(wù)足夠內(nèi)聚,足夠小,代碼容易理解這樣能聚焦一個(gè)指定的業(yè)務(wù)功能或業(yè)務(wù)需求
          • 開發(fā)簡單、開發(fā)效率提高,一個(gè)服務(wù)可能就是專一的只干一件事。
          • 微服務(wù)能夠被小團(tuán)隊(duì)單獨(dú)開發(fā),這個(gè)小團(tuán)隊(duì)是 2 到 5 人的開發(fā)人員組成。
          • 微服務(wù)是松藕合的,是有功能意義的服務(wù),無論是在開發(fā)階段或部署階段都是獨(dú)立的。
          • 微服務(wù)能使用不同的語言開發(fā)。
          • 易于和第三方集成,微服務(wù)允許容易且靈活的方式集成自動部署,通過持續(xù)集成工具,如Jenkins,Hudson,bamboo。
          • 微服務(wù)易于被一個(gè)開發(fā)人員理解,修改和維護(hù),這樣小團(tuán)隊(duì)能夠更關(guān)注自己的工作成果。無需- - 通過合作才能體現(xiàn)價(jià)值。微服務(wù)允許你利用融合最新技術(shù)。
          • 微服務(wù)只是業(yè)務(wù)邏輯的代碼,不會和 HTML,CSS或其他界面組件混合。
          • 每個(gè)微服務(wù)都有自己的存儲能力,可以有自己的數(shù)據(jù)庫。也可以有統(tǒng)一數(shù)據(jù)庫。

          總的來說,微服務(wù)的優(yōu)勢,就是在于,面對大的系統(tǒng),可以有效的減少復(fù)雜程度,使服務(wù)架構(gòu)的邏輯更清晰明了。

          但是這樣也會帶來很多問題,就譬如分布式環(huán)境下的數(shù)據(jù)一致性,測試的復(fù)雜性,運(yùn)維的復(fù)雜性。

          什么組織適合使用微服務(wù)?

          微服務(wù)帶了種種優(yōu)點(diǎn),種種弊端,那么什么組織適合使用微服務(wù)?

          墨菲定律(設(shè)計(jì)系統(tǒng))和康威定律(系統(tǒng)劃分)

          康威定律,是一個(gè)五十多年前就被提出來的微服務(wù)概念。在康威的這篇文章中,最有名的一句話就是:

          Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations. - Melvin Conway(1967)

          中文直譯大概的意思就是:設(shè)計(jì)系統(tǒng)的組織,其產(chǎn)生的設(shè)計(jì)等同于組織之內(nèi)、組織之間的溝通結(jié)構(gòu)。看看下面的圖片(來源于互聯(lián)網(wǎng),侵刪),再想想Apple的產(chǎn)品、微軟的產(chǎn)品設(shè)計(jì),就能形象生動的理解這句話。

          康威定律

          感興趣的各位可以研究一下

          架構(gòu)演化

          架構(gòu)是不斷演化出來的,微服務(wù)也是這樣,當(dāng)從各大科技公司,規(guī)模大到一定程度,完全需要演化成更進(jìn)一步管理的技術(shù)架構(gòu)體系。

          康威定律

          (字差,勿嫌)

          傳統(tǒng)的團(tuán)隊(duì),都是面向過程化的,產(chǎn)品想完了去找策劃,策劃完了找開發(fā),接著順著一步一步找。我們做技術(shù)都是為了產(chǎn)品的,一旦過程出來了什么問題,回溯尋找問題會非常耗時(shí)。

          康威定律

          (字差,勿嫌)

          使用了微服務(wù)架構(gòu)體系,團(tuán)隊(duì)組織方式需要轉(zhuǎn)變成跨職能團(tuán)隊(duì),即每個(gè)團(tuán)隊(duì)都有產(chǎn)品專家,策劃專家,開發(fā)專家,運(yùn)維專家,他們使用API方式發(fā)布他們的功能,而平臺使用他們的功能發(fā)布產(chǎn)品

          DevOps

          devops

          微服務(wù)技術(shù)架構(gòu)體系

          下面我分享一下大部分公司都使用的微服務(wù)技術(shù)架構(gòu)體系。

          康威定律

          (圖差,勿嫌)

          服務(wù)發(fā)現(xiàn)

          主流的服務(wù)發(fā)現(xiàn),分為三種

          康威定律

          第一種,開發(fā)人員開發(fā)了程序以后,會找運(yùn)維配一個(gè)域名,服務(wù)的話通過dns就能找到我們對應(yīng)的服務(wù)

          缺點(diǎn)是,由于服務(wù)沒有負(fù)載均衡功能,對負(fù)載均衡服務(wù),可能會有相當(dāng)大的性能問題。

          康威定律

          第二種,是目前普遍的做法。可以參考我上篇博客分析的zuul網(wǎng)關(guān),每一個(gè)服務(wù)都通過服務(wù)端內(nèi)置的功能注冊到注冊中心,服務(wù)消費(fèi)者不斷輪詢注冊中心發(fā)現(xiàn)對應(yīng)的服務(wù),使用內(nèi)置負(fù)載均衡調(diào)用服務(wù)。

          缺點(diǎn)是,對多語言環(huán)境不是很好,你需要單獨(dú)給消費(fèi)者的客戶端開發(fā)服務(wù)發(fā)現(xiàn)和負(fù)載均衡功能。當(dāng)然了,這個(gè)方法通常都是用在spring cloud上的。

          康威定律

          第三種,是將客戶端和負(fù)載均衡放在同一個(gè)主機(jī),而不是同一個(gè)進(jìn)程內(nèi)。

          這種方法相對第一種第二種方法來說,改善了他們的缺點(diǎn),但是會極大增加運(yùn)維成本。

          網(wǎng)關(guān)

          微服務(wù)的網(wǎng)關(guān)是什么?

          我們可以聯(lián)系生活實(shí)際想一下。每一個(gè)大的公司,都會有一偏屬于自己的建筑區(qū),而這建筑區(qū)內(nèi),都有不少的門衛(wèi)。如果有外來人員進(jìn)入公司,會先和門衛(wèi)打好招呼,才能進(jìn)去。

          將生活實(shí)際聯(lián)系到微服務(wù)上,就不難理解網(wǎng)關(guān)的意思了。

          網(wǎng)關(guān)有什么用

          康威定律

          • 反向路由:很多時(shí)候,公司不想讓外部人員看到我們公司的內(nèi)部,就需要網(wǎng)關(guān)來進(jìn)行反向路由。即將外部請求轉(zhuǎn)換成內(nèi)部具體服務(wù)條用
          • 安全認(rèn)證:網(wǎng)絡(luò)中會有很多惡意訪問,譬如爬蟲,譬如黑客攻擊,網(wǎng)關(guān)維護(hù)安全功能。
          • 限流熔斷:參考我學(xué)好分布式zookepper的博客,當(dāng)請求很多服務(wù)不堪重負(fù),會讓我們的服務(wù)自動關(guān)閉,導(dǎo)致不能用服務(wù)。限流熔斷可以有效的避免這類問題
          • 日志監(jiān)控:所有的外面的請求都會經(jīng)過網(wǎng)關(guān),這樣我們就可以使用網(wǎng)關(guān)來記錄日志信息
          • 灰度發(fā)布,藍(lán)綠部署。是指能夠平滑過渡的一種發(fā)布方式。在其上可以進(jìn)行A/B testing,即讓一部分用戶繼續(xù)用產(chǎn)品特性A,一部分用戶開始用產(chǎn)品特性B,如果用戶對B沒有什么反對意見,那么逐步擴(kuò)大范圍,把所有用戶都遷移到B上面來。

          開源網(wǎng)關(guān)Zuul架構(gòu)

          zuul架構(gòu)

          zuul網(wǎng)關(guān)核心其實(shí)是一個(gè)servlet,所有請求都會經(jīng)過zuul servlet傳到zuulFilter Runner,然后分發(fā)到三種過濾器。

          先說說架構(gòu)圖左半部分,分別是使用Groovy實(shí)現(xiàn)的前置路由過濾器,路由過濾器,后置路由過濾器。

          一般請求都會先經(jīng)過前置路由過濾器 處理,一般的自定義java封裝邏輯也會在這里實(shí)現(xiàn)。

          路由過濾器 ,實(shí)現(xiàn)的是找到對應(yīng)的微服務(wù)進(jìn)行調(diào)用。

          調(diào)用完了,響應(yīng)回來,會經(jīng)過后置路由過濾器 ,通過后置路由過濾器我們可以封裝日志審計(jì)的處理。

          可以說zuul網(wǎng)關(guān)最大的特色就是它三層過濾器。

          架構(gòu)圖右半部分,是zuul網(wǎng)關(guān)設(shè)計(jì)的自定義過濾器加載機(jī)制。網(wǎng)關(guān)內(nèi)部會有生產(chǎn)者消費(fèi)者模型,自動的將過濾器腳本發(fā)布到zuul網(wǎng)關(guān)讀取加載運(yùn)行。

          配置中心

          以前,開發(fā)人員把配置文件放在開發(fā)文件里面,這樣會有很多隱患。譬如,配置規(guī)范不同,無法追溯配置人員。一旦需要大規(guī)模改動配置,改動時(shí)間會很長,無法追溯配置人員,從而影響整個(gè)產(chǎn)品,后果是我們承擔(dān)不起的。

          因此就有配置中心這個(gè)嘍~

          現(xiàn)在的開源中心有百度配置中心 Disconf,spring cloud config,Apollo,今天重點(diǎn)說說現(xiàn)在應(yīng)用質(zhì)量不錯(cuò)的配置中心阿波羅。

          攜程開源的Apollo

          開源地址??:https://github.com/ctripcorp/apollo

          康威定律

          apollo的配置中心規(guī)模比較大,本地應(yīng)用會有響應(yīng)的配置中心客戶端,可以定時(shí)同步配置中心里的配置。如果配置中心怠機(jī),會使用緩存來進(jìn)行配置。

          通訊方式

          關(guān)于通訊方式,一般市面也就是兩種遠(yuǎn)程調(diào)用方式,我整理了一個(gè)表格:


          RPCREST
          耦合性強(qiáng)耦合松散耦合
          消息協(xié)議TCPHTTP
          通訊協(xié)議二進(jìn)制文本XML,Json
          性能低于RPC
          接口契約IDLthrift,protobuf,IdLSwagger
          客戶端強(qiáng)類型客戶端,一般自動生成一般HTTP可訪問,生成強(qiáng)類型客戶端,多語言支持好
          案例Dubbo,Dubbox,motan,tars,grpc,thriftspring boot,tax-rs,dropwizard
          開發(fā)者友好客戶端比較方面,二進(jìn)制消息不能讀可讀消息
          對外開放一般需要轉(zhuǎn)成REST/文本協(xié)議可直接對外開發(fā)

          監(jiān)控預(yù)警

          監(jiān)控預(yù)警對于微服務(wù)很重要,一個(gè)可靠的監(jiān)控預(yù)警體系對微服務(wù)運(yùn)行至關(guān)重要。一般監(jiān)控分為如下層次:

          康威定律

          從基礎(chǔ)設(shè)施到用戶端,層層有監(jiān)控,全方位,多角度,每一個(gè)層面都很重要。總體來說,微服務(wù)可分5個(gè)監(jiān)控點(diǎn):日志監(jiān)控Metrics監(jiān)控健康檢查調(diào)用鏈檢查告警系統(tǒng)

          監(jiān)控架構(gòu)

          下面的圖是大部分公司的一種監(jiān)控架構(gòu)圖。每一個(gè)服務(wù)都有一個(gè)agentagent收集到關(guān)鍵信息,會傳到一些MQ中,為了解耦。同時(shí)將日志傳入ELK,將Metrics傳入InfluxDB時(shí)間序列庫。而像nagios,可以定期向agent發(fā)起信息檢查微服務(wù)。

          康威定律

          調(diào)用鏈監(jiān)控APM

          很多公司都有調(diào)用鏈監(jiān)控,就譬如阿里有鷹眼監(jiān)控,點(diǎn)評的Cat,大部分調(diào)用鏈監(jiān)控(沒錯(cuò),我指的Zipkin)架構(gòu)是這樣的??

          康威定律

          當(dāng)請求進(jìn)入Web容器的時(shí)候,會經(jīng)過創(chuàng)建Tracer,連接spans(模擬潛在的分布式工作的延遲,該模塊還包含在系統(tǒng)網(wǎng)絡(luò)間傳遞跟蹤上下文信息的工具包,如通過http headers)。Spans有一個(gè)上下文,其中包含tracer標(biāo)識符,將其放在表示分布式操作的樹的正確位置。當(dāng)我們把圖中的各種span放到后端的時(shí)候,我們的服務(wù)調(diào)用鏈會動態(tài)的生成調(diào)用鏈。

          下面是一些市場上用的比較多的調(diào)用鏈監(jiān)控:

          1、Pinpoint github地址:GitHub - naver/pinpoint: Pinpoint is an open source APM (Application Performance Management) tool for large-scale distributed systems written in Java. 對java領(lǐng)域的性能分析有興趣的朋友都應(yīng)該看看這個(gè)開源項(xiàng)目,這個(gè)是一個(gè)韓國團(tuán)隊(duì)開源出來的,通過JavaAgent的機(jī)制來做字節(jié)碼代碼植入,實(shí)現(xiàn)加入traceid和抓取性能數(shù)據(jù)的目的。NewRelic、Oneapm之類的工具在java平臺上的性能分析也是類似的機(jī)制。

          2、SkyWalking github地址:wu-sheng/sky-walking 這是國內(nèi)一位叫吳晟的兄弟開源的,也是一個(gè)對JAVA分布式應(yīng)用程序集群的業(yè)務(wù)運(yùn)行情況進(jìn)行追蹤、告警和分析的系統(tǒng),在github上也有400多顆星了。功能相對pinpoint還是稍弱一些,插件還沒那么豐富,不過也很難得了。

          3、Zipkin 官網(wǎng):OpenZipkin · A distributed tracing system github地址:GitHub - openzipkin/zipkin: Zipkin is a distributed tracing system 這個(gè)是twitter開源出來的,也是參考Dapper的體系來做的。

          Zipkin的java應(yīng)用端是通過一個(gè)叫Brave的組件來實(shí)現(xiàn)對應(yīng)用內(nèi)部的性能分析數(shù)據(jù)采集。Brave的github地址:github.com/openzipkin/… 這個(gè)組件通過實(shí)現(xiàn)一系列的java攔截器,來做到對http/servlet請求、數(shù)據(jù)庫訪問的調(diào)用過程跟蹤。然后通過在spring之類的配置文件里加入這些攔截器,完成對java應(yīng)用的性能數(shù)據(jù)采集。

          4、CAT github地址:GitHub - dianping/cat: Central Application Tracking 這個(gè)是大眾點(diǎn)評開源出來的,實(shí)現(xiàn)的功能也還是蠻豐富的,國內(nèi)也有一些公司在用了。不過他實(shí)現(xiàn)跟蹤的手段,是要在代碼里硬編碼寫一些“埋點(diǎn)”,也就是侵入式的。這樣做有利有弊,好處是可以在自己需要的地方加埋點(diǎn),比較有針對性;壞處是必須改動現(xiàn)有系統(tǒng),很多開發(fā)團(tuán)隊(duì)不愿意。

          5、Xhprof/Xhgui 這兩個(gè)工具的組合,是針對PHP應(yīng)用提供APM能力的工具,也是非侵入式的。Xhprof github地址:GitHub - preinheimer/xhprof: XHGUI is a GUI for the XHProf PHP extension, using a database backend, and pretty graphs to make it easy to use and interpret. Xhgui github地址:GitHub - perftools/xhgui: A graphical interface for XHProf data built on MongoDB 我對PHP不熟,不過網(wǎng)上介紹這兩個(gè)工具的資料還是蠻多的。

          康威定律

          熔斷、隔離、限流、降級

          面對巨大的突發(fā)流量下,大型公司一般會采用一系列的熔斷 (系統(tǒng)自動將服務(wù)關(guān)閉防止讓出現(xiàn)的問題最大化)、隔離 (將服務(wù)和服務(wù)隔離,防止一個(gè)服務(wù)掛了其他服務(wù)不能訪問)、限流 (單位時(shí)間內(nèi)之允許一定數(shù)量用戶訪問)、降級 (當(dāng)整個(gè)微服務(wù)架構(gòu)整體的負(fù)載超出了預(yù)設(shè)的上限閾值或即將到來的流量預(yù)計(jì)將會超過預(yù)設(shè)的閾值時(shí),為了保證重要或基本的服務(wù)能正常運(yùn)行,我們可以將一些 不重要或 不緊急 的服務(wù)或任務(wù)進(jìn)行服務(wù)的 延遲使用 或 暫停使用)措施。

          下面介紹一下hystrix的運(yùn)行流程(沒找到架構(gòu)圖不好意思):

          hystrix

          每一個(gè)微服務(wù)調(diào)用時(shí),都會使用hystrixcommand方式(上圖的左上角那個(gè)),然后使用command同步的,或者是響應(yīng)式的,或者是異步的,判斷電路是否熔斷(順著圖從左往右看),

          如果斷路則走降級fallback;

          如果這個(gè)線閉合著,但是線程資源沒了,隊(duì)列滿了,則走限流措施(看圖的第5步);

          如果走完了,執(zhí)行成功了,則走run()方法,獲取response,但是這個(gè)過程如果出錯(cuò)了,則繼續(xù)走降級fallback.

          同時(shí),看圖最上面有一個(gè)后綴是health的,這是一個(gè)計(jì)算整個(gè)鏈路是否健康的組件,每一步操作都被它記錄著。

          容器與服務(wù)編排引擎

          從物理機(jī)到虛擬機(jī),從虛擬機(jī)到容器;從物理集群到open stackopen stackkubernetes;科技不斷的變化,我們的認(rèn)知也沒刷新。

          我們從容器開始說起,它首先是一個(gè)相對獨(dú)立的運(yùn)行環(huán)境,在這一點(diǎn)有點(diǎn)類似于虛擬機(jī),但是不像虛擬機(jī)那樣徹底。?虛擬機(jī)會將虛擬硬件、內(nèi)核(即操作系統(tǒng))以及用戶空間打包在新虛擬機(jī)當(dāng)中,虛擬機(jī)能夠利用“虛擬機(jī)管理程序”運(yùn)行在物理設(shè)備之上。虛擬機(jī)依賴于hypervisor,其通常被安裝在“裸金屬”系統(tǒng)硬件之上,這導(dǎo)致hypervisor在某些方面被認(rèn)為是一種操作系統(tǒng)。一旦 hypervisor安裝完成, 就可以從系統(tǒng)可用計(jì)算資源當(dāng)中分配虛擬機(jī)實(shí)例了,每臺虛擬機(jī)都能夠獲得唯一的操作系統(tǒng)和負(fù)載(應(yīng)用程序)。簡言之,虛擬機(jī)先需要虛擬一個(gè)物理環(huán)境,然后構(gòu)建一個(gè)完整的操作系統(tǒng),再搭建一層Runtime,然后供應(yīng)用程序運(yùn)行。? ? 對于容器環(huán)境來說,不需要安裝主機(jī)操作系統(tǒng),直接將容器層(比如LXC或libcontainer)安裝在主機(jī)操作系統(tǒng)(通常是Linux變種)之上。在安裝完容器層之后,就可以從系統(tǒng)可用計(jì)算資源當(dāng)中分配容器實(shí)例了,并且企業(yè)應(yīng)用可以被部署在容器當(dāng)中。但是,每個(gè)容器化應(yīng)用都會共享相同的操作系統(tǒng)(單個(gè)主機(jī)操作系統(tǒng))。容器可以看成一個(gè)裝好了一組特定應(yīng)用的虛擬機(jī),它直接利用了宿主機(jī)的內(nèi)核,抽象層比虛擬機(jī)更少,更加輕量化,啟動速度極快。

          相比于虛擬機(jī),容器擁有更高的資源使用效率,因?yàn)樗⒉恍枰獮槊總€(gè)應(yīng)用分配單獨(dú)的操作系統(tǒng)——實(shí)例規(guī)模更小、創(chuàng)建和遷移速度也更快。這意味相比于虛擬機(jī),單個(gè)操作系統(tǒng)能夠承載更多的容器。云提供商十分熱衷于容器技術(shù),因?yàn)樵谙嗤挠布O(shè)備當(dāng)中,可以部署數(shù)量更多的容器實(shí)例。此外,容器易于遷移,但是只能被遷移到具有兼容操作系統(tǒng)內(nèi)核的其他服務(wù)器當(dāng)中,這樣就會給遷移選擇帶來限制。因?yàn)槿萜鞑幌裉摂M機(jī)那樣同樣對內(nèi)核或者虛擬硬件進(jìn)行打包,所以每套容器都擁有自己的隔離化用戶空間,從而使得多套容器能夠運(yùn)行在同一主機(jī)系統(tǒng)之上。我們可以看到全部操作系統(tǒng)層級的架構(gòu)都可實(shí)現(xiàn)跨容器共享,惟一需要獨(dú)立構(gòu)建的就是二進(jìn)制文件與庫。正因?yàn)槿绱耍萜鞑艙碛袠O為出色的輕量化特性。

          我們最常用的容器是daocker,網(wǎng)址如下??https://www.docker.com/

          容器編排

          過去虛擬機(jī)可以通過云平臺open stack管理虛擬化,容器時(shí)代如何管理容器呢?這就要看看容器編排引擎了。

          Apache mesos

          mesos是基于master,slave架構(gòu),框架決定如何利用資源,master負(fù)責(zé)管理機(jī)器,slave會定期的將機(jī)器情況報(bào)告給master,master再將信息給框架。master是高可用的,因?yàn)閦k,也有l(wèi)eader的存在。下面是架構(gòu)圖??

          1544264985310

          kubernetes

          kubernetes是最近十分火熱的開源容器編排引擎,具體可以參考kubernetes中文文檔

          k8s

          Kubernetes設(shè)計(jì)理念和功能其實(shí)就是一個(gè)類似Linux的分層架構(gòu),先說說每一個(gè)Kubernetes節(jié)點(diǎn)內(nèi)部,kubelet管理全局全局pod,而每一個(gè)pod承載著一個(gè)或多個(gè)容器,kube-proxy負(fù)責(zé)網(wǎng)絡(luò)代理和負(fù)載均衡 。

          Kubernetes節(jié)點(diǎn)外部,則是對應(yīng)的控制管理服務(wù)器,負(fù)責(zé)統(tǒng)一管理各個(gè)節(jié)點(diǎn)調(diào)度分配與運(yùn)行。

          1. 終于搞懂了Java 8 的內(nèi)存結(jié)構(gòu),再也不糾結(jié)方法區(qū)和常量池了!!

          2. 基于SpringBoot+WebMagic實(shí)現(xiàn)一個(gè)的爬蟲框架

          3. 基于CAS實(shí)現(xiàn)SSO單點(diǎn)登錄

          4. XShell收費(fèi)太貴?快試試開源的NuShell,好用!

          最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。

          獲取方式:點(diǎn)“在看”,關(guān)注公眾號并回復(fù) Java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

          文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。

          謝謝支持喲 (*^__^*)

          瀏覽 65
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费观看黄色电影久久 | 91插插插插插插 | 色婷婷小说| 午夜日韩av | 亚洲色图欧美色图成人电影 |