日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

云原生系列「四」我为啥不看好ServiceMesh?

發(fā)布時間:2024/10/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 云原生系列「四」我为啥不看好ServiceMesh? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

今年,ServiceMesh(服務(wù)網(wǎng)格)概念在社區(qū)里頭非常火,有人提出2018年是ServiceMesh年,還有人提出ServiceMesh是下一代的微服務(wù)架構(gòu)基礎(chǔ)。作為架構(gòu)師,如果你現(xiàn)在還不了解ServiceMesh的話,是否感覺有點(diǎn)落伍了?

那么到底什么是ServiceMesh?它誕生的背景是什么?它解決什么問題?企業(yè)是否適合引入ServiceMesh?根據(jù)近年在一線互聯(lián)網(wǎng)企業(yè)的實(shí)踐和思考,從個人視角出發(fā),我為大家一一解答這些問題。

微服務(wù)架構(gòu)的核心技術(shù)問題

在業(yè)務(wù)規(guī)模化和研發(fā)效能提升等因素的驅(qū)動下,從單塊應(yīng)用向微服務(wù)架構(gòu)的轉(zhuǎn)型(如下圖所示),已經(jīng)成為很多企業(yè)(尤其是互聯(lián)網(wǎng)企業(yè))數(shù)字化轉(zhuǎn)型的趨勢。

在微服務(wù)模式下,企業(yè)內(nèi)部服務(wù)少則幾個到幾十個,多則上百個,每個服務(wù)一般都以集群方式部署,這時自然產(chǎn)生兩個問題(如下圖所示):

一、服務(wù)發(fā)現(xiàn):服務(wù)的消費(fèi)方(Consumer)如何發(fā)現(xiàn)服務(wù)的提供方(Provider)?

二、負(fù)載均衡:服務(wù)的消費(fèi)方如何以某種負(fù)載均衡策略訪問集群中的服務(wù)提供方實(shí)例?

作為架構(gòu)師,如果你理解了這兩個問題,可以說就理解了微服務(wù)架構(gòu)在技術(shù)上的最核心問題。

三種服務(wù)發(fā)現(xiàn)模式

服務(wù)發(fā)現(xiàn)和負(fù)載均衡并不是新問題,業(yè)界其實(shí)已經(jīng)探索和總結(jié)出一些常用的模式,這些模式的核心其實(shí)是代理(Proxy,如下圖所以),以及代理在架構(gòu)中所處的位置,

在服務(wù)消費(fèi)方和服務(wù)提供方之間增加一層代理,由代理負(fù)責(zé)服務(wù)發(fā)現(xiàn)和負(fù)載均衡功能,消費(fèi)方通過代理間接訪問目標(biāo)服務(wù)。根據(jù)代理在架構(gòu)上所處的位置不同,當(dāng)前業(yè)界主要有三種不同的服務(wù)發(fā)現(xiàn)模式:

模式一:傳統(tǒng)集中式代理

這是最簡單和傳統(tǒng)做法,在服務(wù)消費(fèi)者和生產(chǎn)者之間,代理作為獨(dú)立一層集中部署,由獨(dú)立團(tuán)隊(duì)(一般是運(yùn)維或框架)負(fù)責(zé)治理和運(yùn)維。常用的集中式代理有硬件負(fù)載均衡器(如F5),或者軟件負(fù)載均衡器(如Nginx),F5(4層負(fù)載)+Nginx(7層負(fù)載)這種軟硬結(jié)合兩層代理也是業(yè)內(nèi)常見做法,兼顧配置的靈活性(Nginx比F5易于配置)。

這種方式通常在DNS域名服務(wù)器的配合下實(shí)現(xiàn)服務(wù)發(fā)現(xiàn),服務(wù)注冊(建立服務(wù)域名和IP地址之間的映射關(guān)系)一般由運(yùn)維人員在代理上手工配置,服務(wù)消費(fèi)方僅依賴服務(wù)域名,這個域名指向代理,由代理解析目標(biāo)地址并做負(fù)載均衡和調(diào)用。

國外知名電商網(wǎng)站eBay,雖然體量巨大,但其內(nèi)部的服務(wù)發(fā)現(xiàn)機(jī)制仍然是基于這種傳統(tǒng)的集中代理模式,國內(nèi)公司如攜程,也是采用這種模式。

模式二:客戶端嵌入式代理

這是很多互聯(lián)網(wǎng)公司比較流行的一種做法,代理(包括服務(wù)發(fā)現(xiàn)和負(fù)載均衡邏輯)以客戶庫的形式嵌入在應(yīng)用程序中。這種模式一般需要獨(dú)立的服務(wù)注冊中心組件配合,服務(wù)啟動時自動注冊到注冊中心并定期報心跳,客戶端代理則發(fā)現(xiàn)服務(wù)并做負(fù)載均衡。

Netflix開源的Eureka(注冊中心)[附錄1]和Ribbon(客戶端代理)[附錄2]是這種模式的典型案例,國內(nèi)阿里開源的Dubbo也是采用這種模式。

模式三:主機(jī)獨(dú)立進(jìn)程代理

這種做法是上面兩種模式的一個折中,代理既不是獨(dú)立集中部署,也不嵌入在客戶應(yīng)用程序中,而是作為獨(dú)立進(jìn)程部署在每一個主機(jī)上,一個主機(jī)上的多個消費(fèi)者應(yīng)用可以共用這個代理,實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡,如下圖所示。這個模式一般也需要獨(dú)立的服務(wù)注冊中心組件配合,作用同模式二。

Airbnb的SmartStack[附錄3]是這種模式早期實(shí)踐產(chǎn)品,國內(nèi)公司唯品會對這種模式也有探索和實(shí)踐。

三種服務(wù)發(fā)現(xiàn)模式的比較

上面介紹的三種服務(wù)發(fā)現(xiàn)模式各有優(yōu)劣,沒有絕對的好壞,可以認(rèn)為是三種不同的架構(gòu)風(fēng)格,在不同的公司都有成功實(shí)踐。下表總結(jié)三種服務(wù)發(fā)現(xiàn)模式的優(yōu)劣比較,業(yè)界案例和適用場景建議,供架構(gòu)師選型參考:

服務(wù)網(wǎng)格ServiceMesh

所謂的ServiceMesh,其實(shí)本質(zhì)上就是上面提到的模式三~主機(jī)獨(dú)立進(jìn)程模式,這個模式其實(shí)并不新鮮,業(yè)界(國外的Airbnb和國內(nèi)的唯品會等)早有實(shí)踐,那么為什么現(xiàn)在這個概念又流行起來了呢?我認(rèn)為主要原因如下:

  • 上述模式一和二有一些固有缺陷,模式一相對比較重,有單點(diǎn)問題和性能問題;模式二則有客戶端復(fù)雜,支持多語言困難,無法集中治理的問題。模式三是模式一和二的折中,彌補(bǔ)了兩者的不足,它是純分布式的,沒有單點(diǎn)問題,性能也OK,應(yīng)用語言棧無關(guān),可以集中治理。

  • 微服務(wù)化、多語言和容器化發(fā)展的趨勢,企業(yè)迫切需要一種輕量級的服務(wù)發(fā)現(xiàn)機(jī)制,ServiceMesh正是迎合這種趨勢誕生,當(dāng)然這還和一些大廠(如Google/IBM等)的背后推動有關(guān)。

  • 模式三(ServiceMesh)也被形象稱為邊車(Sidecar)模式,如下圖,早期有一些摩托車,除了主駕駛位,還帶一個邊車位,可以額外坐一個人。在模式三中,業(yè)務(wù)代碼進(jìn)程(相當(dāng)于主駕駛)共享一個代理(相當(dāng)于邊車),代理除了負(fù)責(zé)服務(wù)發(fā)現(xiàn)和負(fù)載均衡,還負(fù)責(zé)動態(tài)路由、容錯限流、監(jiān)控度量和安全日志等功能,這些功能是具體業(yè)務(wù)無關(guān)的,屬于跨橫切面關(guān)注點(diǎn)(Cross-Cutting Concerns)范疇。

    在新一代的ServiceMesh架構(gòu)中(下圖上方),服務(wù)的消費(fèi)方和提供方主機(jī)(或者容器)兩邊都會部署代理SideCar。ServiceMesh比較正式的術(shù)語也叫數(shù)據(jù)面板(DataPlane),與數(shù)據(jù)面板對應(yīng)的還有一個獨(dú)立部署的控制面板(ControlPlane),用來集中配置和管理數(shù)據(jù)面板,也可以對接各種服務(wù)發(fā)現(xiàn)機(jī)制(如K8S服務(wù)發(fā)現(xiàn))。術(shù)語數(shù)據(jù)面板和控制面板,估計(jì)是偏網(wǎng)絡(luò)SDN背景的人提出來的。

    上圖左下角,每個主機(jī)上同時居住了業(yè)務(wù)邏輯代碼(綠色表示)和代理(藍(lán)色表示),服務(wù)之間通過代理發(fā)現(xiàn)和調(diào)用目標(biāo)服務(wù),形成服務(wù)之間的一種網(wǎng)絡(luò)狀依賴關(guān)系,控制面板則可以配置這種依賴調(diào)用關(guān)系,也可以調(diào)撥路由流量。如果我們把主機(jī)和業(yè)務(wù)邏輯剝離,就出現(xiàn)一種網(wǎng)格狀架構(gòu)(上圖右下角),服務(wù)網(wǎng)格由此得名。

    Istio[附錄4]是Google/IBM等大廠支持和推進(jìn)的一個ServiceMesh標(biāo)準(zhǔn)化工作組,上圖是Istio給出的ServiceMesh參考架構(gòu)。Istio專注在控制面板的架構(gòu)、功能、以及控制面板和數(shù)據(jù)面板之間API的標(biāo)準(zhǔn)化,它的控制面板功能主要包括:

    • Istio-Manager:負(fù)責(zé)服務(wù)發(fā)現(xiàn),路由分流,熔斷限流等配置數(shù)據(jù)的管理和下發(fā)

    • Mixer:負(fù)責(zé)收集代理上采集的度量數(shù)據(jù),進(jìn)行集中監(jiān)控

    • Istio-Auth:負(fù)責(zé)安全控制數(shù)據(jù)的管理和下發(fā)

    Envoy[附錄5]是目前Istio主力支持的數(shù)據(jù)面板代理,其它主流代理如nginx/kong等也正在陸續(xù)加入這個陣營。kubernetes是目前Isito主力支持的容器云環(huán)境。

    我的建議

    目前我本人并不特別看好ServiceMesh,也不是特別建議企業(yè)在生產(chǎn)上試水ServiceMesh,主要原因如下:

  • ServiceMesh其實(shí)并不是什么新東西,本質(zhì)就是上面提到的服務(wù)發(fā)現(xiàn)模式三~主機(jī)獨(dú)立進(jìn)程模式,這個模式很早就有公司在探索和實(shí)踐,但是一直沒有普遍流行起來,說明這個模式也是存在落地挑戰(zhàn)的。從表面上看,模式三是模式一和模式二的折中,同時解決了模式一和模式二存在的問題,但是在每個主機(jī)上獨(dú)立部署一個代理進(jìn)程,是有很大運(yùn)維管理開銷的,一方面是規(guī)模化部署的問題(考慮服務(wù)很多,機(jī)器也很多的場景);另一方面是如何監(jiān)控治理的問題,代理掛了怎么辦?你的團(tuán)隊(duì)是否具備自動化運(yùn)維和監(jiān)控的能力?另外開發(fā)人員在服務(wù)調(diào)試的時候,會依賴于這個獨(dú)立的代理,調(diào)試排錯比較麻煩,這個問題怎么解決?

  • Istio的確做了一些標(biāo)準(zhǔn)化工作,但是沒有什么特別的創(chuàng)新,可是說換湯不換藥,就是把模式三規(guī)范化和包裝了一下。透過現(xiàn)象看本質(zhì),Google/IBM等行業(yè)大廠在背后推Isito/ServiceMesh,背后有一些市場利益訴求考慮,例如Google要推進(jìn)它的kubernates和公有云生態(tài)。

  • ServiceMesh在年初聲音比較大,最近漸漸安靜下來,我聽到國內(nèi)只有一些大廠(華為,新浪微博,螞蟻金服等)在試水,實(shí)際生產(chǎn)級落地的案例聊聊無幾。大多數(shù)企業(yè)對ServiceMesh只是觀望,很多架構(gòu)師對ServiceMesh實(shí)際落地都存在疑慮。

  • 所以我的個人建議,對于大部分企業(yè)(一般運(yùn)維和研發(fā)能力不是特別強(qiáng)),采用模式一~集中代理模式就足夠了。這個模式比較傳統(tǒng)不新鮮,但是在很多一線企業(yè)已經(jīng)切實(shí)落地,我甚至認(rèn)為,除了一些大廠,大部分中小企業(yè)的服務(wù)發(fā)現(xiàn)架構(gòu)采用的就是集中代理。我本人經(jīng)歷過三家互聯(lián)網(wǎng)公司,大的有eBay,中等有攜程,小的有拍拍貸,都是采用集中式代理模式,而且玩得都很好。我的架構(gòu)理念很簡單,對于生產(chǎn)級應(yīng)用,不追新,老實(shí)采用大部分企業(yè)落地過的方案。

    模式一的最大好處是集中治理,應(yīng)用不侵入,語言棧無關(guān),另外因?yàn)槟J揭皇羌胁渴鸬?#xff0c;不像模式三是分布式部署,所以模式一的運(yùn)維開銷也遠(yuǎn)小于模式三。對于模式一,大家最大的顧慮是性能和單點(diǎn)問題,其實(shí)性能還是OK的,如果架構(gòu)和容量規(guī)劃合理的話,實(shí)際生產(chǎn)中經(jīng)過集中代理的性能開銷一般可以控制在小于10個ms,eBay和攜程等大流量企業(yè)的成功實(shí)踐已經(jīng)驗(yàn)證了這點(diǎn)。單點(diǎn)問題一般建議采用兩層負(fù)載結(jié)構(gòu),例如硬件F5+軟件nginx兩層負(fù)載,F5以主從HA部署,nginx則以集群多實(shí)例部署,這種架構(gòu)兼顧了高可用和配置的靈活性。

    另外,模式一還可以和服務(wù)注冊中心結(jié)合,從而降低手工配置的復(fù)雜性,實(shí)現(xiàn)DevOps研發(fā)自助部署,一種方案如下圖所示:

    服務(wù)啟動時自動注冊到服務(wù)注冊中心并定期報心跳,Proxy則定期到服務(wù)注冊中心同步實(shí)例。這種方式下,不需要為每個服務(wù)申請一個域名,只需一個泛域名即可,消費(fèi)者訪問服務(wù)時采用服務(wù)名+泛域名即可,整個服務(wù)上線流程可以做到DevOps研發(fā)自助。目前社區(qū)流行的一些開源代理如traefik[附錄7]和kong[附錄8]等都支持和多種服務(wù)注冊中心(Consul/Eureka/Etcd/Zookeeper等)進(jìn)行集成。目前這種方案在拍拍貸有初步成功實(shí)踐,采用kong[附錄7]和自研服務(wù)注冊中心Radar[附錄8],同時和容器云調(diào)度平臺配合,實(shí)現(xiàn)了研發(fā)全自助式發(fā)布上線。

    結(jié)論

    1.?服務(wù)注冊發(fā)現(xiàn)和負(fù)載均衡是微服務(wù)架構(gòu)在技術(shù)上的根本問題,解決的辦法是采用代理Proxy。根據(jù)代理在架構(gòu)上的位置不同,服務(wù)發(fā)現(xiàn)代理一般有三種模式:

    • 模式一:集中式代理

    • 模式二:客戶端嵌入式代理

    • 模式三:主機(jī)獨(dú)立進(jìn)程代理 這三種模式?jīng)]有絕對的好還之分,只是三種不同的架構(gòu)風(fēng)格,各有優(yōu)劣和適用場景,在不同企業(yè)都有成功落地案例。

    2.?ServiceMesh本質(zhì)上就是模式三~主機(jī)獨(dú)立進(jìn)程代理,它結(jié)合了模式一和模式二的優(yōu)勢,但是分布式部署運(yùn)維管理開銷大。Istio對ServiceMesh的架構(gòu)、功能和API進(jìn)行了標(biāo)準(zhǔn)化。

    3.?ServiceMesh還在演進(jìn)中,生產(chǎn)落地仍有挑戰(zhàn),一般企業(yè)不建議生產(chǎn)級使用。集中式代理最成熟,對于一般中小企業(yè),建議從集中式代理開始,等達(dá)到一定規(guī)模和具備一定的研發(fā)運(yùn)維能力,再根據(jù)需要考慮其它服務(wù)發(fā)現(xiàn)模式。

    4.?架構(gòu)師不要盲目追新,在理解微服務(wù)架構(gòu)原理的基礎(chǔ)上,可以學(xué)習(xí)和試點(diǎn)新技術(shù),但是對于生產(chǎn)級應(yīng)用,應(yīng)該以成熟穩(wěn)定,有大規(guī)模落地案例作為選型第一準(zhǔn)則。

    附錄:

    1、Netflix Eureka

    https://github.com/netflix/eureka

    2、Netflix Ribbon

    https://github.com/netflix/ribbon

    3、Airbnb SmartStack

    https://medium.com/airbnb-engineering/smartstack-service-discovery-in-the-cloud-4b8a080de619

    4、Istio

    https://istio.io/

    5、Envoy

    https://www.envoyproxy.io/

    6、Traefik

    https://github.com/containous/traefik

    7、Kong

    https://github.com/kong/kong

    8、Radar

    https://github.com/ppdai-incubator/radar

    總結(jié)

    以上是生活随笔為你收集整理的云原生系列「四」我为啥不看好ServiceMesh?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 99在线观看 | 天天插视频 | 日本亚洲最大的色成网站www | 蜜臀av色欲a片无码精品一区 | 黄wwwww| 精品免费囯产一区二区三区 | 日韩三级在线免费观看 | 亚洲欧美视频一区 | 91久久精品国产91久久性色tv | 午夜视频黄 | 91国内在线 | 国产午夜免费福利 | 国产免费观看av | 欧美国产一级片 | 欧美日韩视频网站 | 男女在线观看视频 | 久久久免费观看视频 | 97se在线 | 国产片91 | 亚洲欧美另类一区 | 日韩精品欧美在线 | 欧美性猛交xxxx乱大交3 | 一道本无吗一区 | 亚洲综合一区在线观看 | av生活片 | 白又丰满大屁股bbbbb | 自拍1页| 欧美xxxxav| 亚洲成人黄色小说 | 日韩欧美少妇 | 欧美特黄视频 | 日批在线 | 日本网站在线看 | 中文字幕在线观看免费高清 | h色视频在线观看 | 好色先生tv官网 | 亚洲高h | 久久久av网站 | 亚洲av无码成人精品区 | 中文字幕色图 | 在线观看中文字幕视频 | 激情欧美一区二区 | av狠狠| 91天天 | 91porn破解版 | kendra lust free xxx| 日韩av在线播放观看 | 性生交生活片1 | 亚洲色图视频在线观看 | 色天天综合 | 久热精品视频在线播放 | 蜜桃成人在线视频 | 亚洲a视频在线 | 国产不卡一 | 97精品视频在线观看 | 99欧美精品| 亚洲精品蜜桃 | 国产精品人成在线观看免费 | 无码人妻aⅴ一区二区三区 国产高清一区二区三区四区 | 少妇太爽了太深了太硬了 | 91大奶 | 亚洲蜜桃精久久久久久久久久久久 | 欧美激情欧美激情在线五月 | 国产91网址 | 黄页免费网站 | 麻豆影视在线免费观看 | 天堂网www.| 亚洲国产成人精品无码区99 | 精品自拍视频在线观看 | 亚洲国产精品av | 台湾综合色| 香港三日本三级少妇66 | 五月天狠狠干 | 中文字幕在线视频精品 | 惊艳大片mv视频 | 成年人视频在线免费观看 | 欧美人体一区二区三区 | 他趴在我两腿中间添得好爽在线看 | 日韩黄色一区 | 国产乱人对白 | 日韩欧美一二三 | 影音先锋在线观看视频 | 饥渴少妇勾引水电工av | 啪啪.com| 香蕉狠狠爱视频 | 第一av| 懂色中文一区二区在线播放 | 红桃视频一区二区三区免费 | 欧美一级片免费看 | 国产免费av一区二区三区 | 影音先锋成人资源网站 | 久热精品在线观看视频 | 亚洲欧美综合一区二区 | 精品动漫一区二区三区在线观看 | 色图色小说 | 亚洲三级电影 | 红猫大本营在线观看的 | 日韩在线视频网址 | 91成人在线免费视频 |