0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

微服務(wù)優(yōu)缺點(diǎn)解析

lhl545545 ? 來源:電子發(fā)燒友網(wǎng) ? 2018-02-09 09:01 ? 次閱讀

前言

首先,微服務(wù)不是一個(gè)名字,而是一個(gè)架構(gòu)的概念,就像Restful不僅僅是描述api的格式,而更多的是描述基于Restful API的架構(gòu)是一樣的。微服務(wù)架構(gòu)(MSA)是對(duì)原來的大型系統(tǒng)而言的,通過橫向或者縱向、業(yè)務(wù)或者架構(gòu)切分,將一個(gè)大型的系統(tǒng)分散成很多微型小系統(tǒng)。當(dāng)系統(tǒng)復(fù)雜到一定程度時(shí),幾十號(hào)人共同維護(hù)一個(gè)系統(tǒng)的效率很低,而且出問題的風(fēng)險(xiǎn)也很高。

這時(shí)候就需要對(duì)系統(tǒng)進(jìn)行切分,很早之前提出的SOA系統(tǒng),和微服務(wù)的架構(gòu)理念不謀而合。大家現(xiàn)在使用的基于RPC框架(dubbo、thrift等)的架構(gòu)也可以視為一種微服務(wù)。微服務(wù)到現(xiàn)在為止還沒有確切的邊界和定義,貌似計(jì)算機(jī)上很多概念都定義不出來邊界。但是,我理解微服務(wù)之間的通信是http通信,傳統(tǒng)rpc調(diào)用方式并不是嚴(yán)格的微服務(wù),因?yàn)樗荒茏岳?,需要依賴,比如可能必須某個(gè)rpc服務(wù)Producer存在的情況下,rpc服務(wù)的Consumer才能啟動(dòng)起來。所以,下文中的討論,我都以微服務(wù)之間以http通信為前提。

微服務(wù)有什么好處

解耦:對(duì)于我們底層程序員而言,看得見的好處就是解耦。我要實(shí)現(xiàn)一個(gè)功能,可能并不需要很深入的了解別人的代碼,因?yàn)槌绦騿T嘛,可能都覺得別人的代碼是個(gè)渣渣([哭笑不得])。我可以新作一個(gè)微服務(wù),這個(gè)服務(wù)為其他功能提供服務(wù),又不依賴于原來已有的功能,至于業(yè)務(wù)邏輯,可以一邊上手一邊熟悉 內(nèi)聚,可以獨(dú)立部署:意思就是我維護(hù)的這個(gè)微服務(wù),可以獨(dú)立部署,對(duì)其他服務(wù)不會(huì)是強(qiáng)依賴,不會(huì)存在因?yàn)槠渌?wù)不存在而造成我自己的服務(wù)不能啟動(dòng)或者不可用的問題。

分布式:微服務(wù)架構(gòu)下不存在一個(gè)特別大的系統(tǒng)包含很多中心功能,這樣也能提高容錯(cuò)性,一個(gè)服務(wù)的癱瘓并不會(huì)讓整個(gè)系統(tǒng)癱瘓 權(quán)限驗(yàn)證:微服務(wù)是高度內(nèi)聚的服務(wù),我自己的這個(gè)服務(wù),我可以定制任意合理規(guī)則,而這個(gè)規(guī)則又只適用于我自己的服務(wù)。相比于dubbo RPC調(diào)用,http微服務(wù)調(diào)用的權(quán)限驗(yàn)證可以更直接更嚴(yán)格更定制化,而rpc調(diào)用時(shí)的權(quán)限驗(yàn)證,我個(gè)人始終覺得不能做的很優(yōu)雅 數(shù)據(jù)分開治理,自帶分庫屬性:原來的大系統(tǒng)使用一個(gè)數(shù)據(jù)庫,當(dāng)數(shù)據(jù)很多流量很大時(shí),就會(huì)涉及到分庫分表。

而微服務(wù)下,每個(gè)服務(wù)是否使用數(shù)據(jù)庫,數(shù)據(jù)庫是和其他服務(wù)公用還是自建,都有很大靈活性,即我覺得微服務(wù)自帶分庫分表屬性 系統(tǒng)不會(huì)被長(zhǎng)期限制在某個(gè)技術(shù)棧上,在微服務(wù)的架構(gòu)下,整個(gè)系統(tǒng)不會(huì)受限于java或者nodejs 或者go,而是大家協(xié)同不沖突,全部http協(xié)議,json格式 各個(gè)模塊的單元測(cè)試容易自動(dòng)化 等

微服務(wù)面臨的挑戰(zhàn)

通信,http請(qǐng)求速度慢,通常一個(gè)操作可能會(huì)涉及到多個(gè)微服務(wù)的相互調(diào)用,如果為了完成一個(gè)操作而多次從服務(wù)端調(diào)用不同的微服務(wù),http請(qǐng)求的耗時(shí)可能會(huì)成為瓶頸,如圖1所示。

微服務(wù)優(yōu)缺點(diǎn)解析

客戶端與服務(wù)端的通信需要一個(gè) API GateWay:通常情況下,客戶端和微服務(wù)們不在一起,而各個(gè)微服務(wù)會(huì)集中部署在一個(gè)機(jī)房,那微服務(wù)之間的互相調(diào)用是很快速的,但是客戶端和微服務(wù)之間的調(diào)用會(huì)是耗時(shí)的。而且,用戶的一個(gè)動(dòng)作不能在客戶端進(jìn)行多次連續(xù)調(diào)用,這樣一來速度慢,二來會(huì)有泄漏系統(tǒng)架構(gòu)的風(fēng)險(xiǎn)。正常情況下,在客戶端和微服務(wù)架構(gòu)之間會(huì)有一個(gè)API GateWay。

如圖1變成圖2所示,GateWay最重要的作用是為客戶端提供后臺(tái)服務(wù)的聚合,提供一個(gè)統(tǒng)一的服務(wù)出口,解除他們之間的耦合,為了解決API Gateway單點(diǎn)故障點(diǎn)或者性能瓶頸,通常Gateway也是一個(gè)集群,而且客戶端的訪問控制、賬號(hào)管理、登錄管理等切面通常會(huì)在這里處理

微服務(wù)優(yōu)缺點(diǎn)解析

微服務(wù)很多時(shí),整個(gè)鏈路可能很長(zhǎng),調(diào)用失敗的風(fēng)險(xiǎn)高,而且e2e自動(dòng)化測(cè)試會(huì)成為一個(gè)問題 服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn),我司有自己的服務(wù)管理系統(tǒng)。我推薦etcd。Google開源的Kubernetes(k8s)貌似也是使用的這個(gè)。 分布式事務(wù),這個(gè)是微服務(wù)系統(tǒng)的大難點(diǎn),可能需要根據(jù)自己系統(tǒng)的情況和業(yè)務(wù)需求進(jìn)行定制了,我推薦補(bǔ)償性分布式事務(wù)和基于消息的分布式事務(wù)。(下次有時(shí)間介紹一下常用的集中分布式事務(wù)要怎么做)

基于微服務(wù)架構(gòu)和架構(gòu)實(shí)施過程中存在的優(yōu)點(diǎn)和缺點(diǎn):

采用微服務(wù)架構(gòu)的優(yōu)點(diǎn)

采用微服務(wù)架構(gòu)可以更好的實(shí)現(xiàn)DevOps開發(fā)運(yùn)維一體化,同時(shí)因?yàn)槲⒎?wù)架構(gòu)下各個(gè)微服務(wù)模塊相對(duì)獨(dú)立和松耦合,因此在后續(xù)業(yè)務(wù)變更的分析和處理中往往能夠更加敏捷快速的響應(yīng),同時(shí)相對(duì)影響也最小。

整個(gè)業(yè)務(wù)系統(tǒng)水平擴(kuò)展更加容易,單體應(yīng)用要擴(kuò)展往往數(shù)據(jù)庫是大問題,而在微服務(wù)架構(gòu)下實(shí)現(xiàn)了單體應(yīng)用的垂直拆分,可以更加容易的通過廉價(jià)的X86服務(wù)器資源來實(shí)現(xiàn)水平擴(kuò)展。

通過微服務(wù)架構(gòu)可以更好的提升各個(gè)模塊的可復(fù)用性和可組裝性。通過微服務(wù)架構(gòu)更好的實(shí)現(xiàn)了原單體應(yīng)用內(nèi)部各個(gè)組件或模塊的徹底解耦,通過解耦本身也降低了原單體應(yīng)用內(nèi)部的復(fù)雜度。

可以使研發(fā)過程根據(jù)敏捷和小團(tuán)隊(duì)化,包括和敏捷軟件開發(fā)最佳實(shí)踐更好的匹配,每個(gè)微服務(wù)模塊都可以形成獨(dú)立的敏捷小團(tuán)隊(duì)進(jìn)行開發(fā)和部署上線。

進(jìn)一步在傳統(tǒng)單體應(yīng)用內(nèi)部實(shí)施SOA參考架構(gòu)思想,體現(xiàn)業(yè)務(wù)能力組件化,組件能力服務(wù)化,同時(shí)也可以更好貫徹各個(gè)能力中心和前端應(yīng)用組件的分離,實(shí)現(xiàn)共性能力下沉和復(fù)用。

采用微服務(wù)架構(gòu)的缺點(diǎn)或困難

微服務(wù)架構(gòu)需要開發(fā)團(tuán)隊(duì)本身具備較強(qiáng)的團(tuán)隊(duì)管理能力,軟件研發(fā)技能,因?yàn)楣芸氐牧6葐挝灰呀?jīng)從原有業(yè)務(wù)系統(tǒng)變化為了微服務(wù)模塊。

微服務(wù)架構(gòu)本身會(huì)提升開發(fā)難度和工作量,特別是上層的跨多個(gè)微服務(wù)模塊或組件的功能應(yīng)用的實(shí)現(xiàn),往往需要在前端進(jìn)行服務(wù)組合而不是傳統(tǒng)方式在數(shù)據(jù)庫層做SQL關(guān)聯(lián)。

由于各個(gè)微服務(wù)模塊完全相對(duì)獨(dú)立和松耦合,因此對(duì)于跨多模塊業(yè)務(wù)帶來的分布式事務(wù)問題是必須解決或找尋替代方案。特別是在微服務(wù)架構(gòu)下數(shù)據(jù)庫已經(jīng)進(jìn)行了垂直拆分,對(duì)于跨庫訪問本身的分布式事務(wù)一致性問題是最需要和重視的問題。

服務(wù)的治理將成為實(shí)施微服務(wù)架構(gòu)中重點(diǎn)問題,包括了服務(wù)全生命周期管理,服務(wù)后期的運(yùn)維和監(jiān)控,性能分析,服務(wù)鏈監(jiān)控等。如果企業(yè)本身的IT治理和SOA管控治理能力弱,那么及時(shí)開始正常實(shí)施了微服務(wù)架構(gòu),到了后期的運(yùn)維管控也很難做的很好。其核心原因還是管控的粒度更加細(xì),需要管控的微服務(wù)模塊,服務(wù)接口都會(huì)呈現(xiàn)指數(shù)級(jí)增加。

集成復(fù)雜度增加,任何徹底的分解都將帶來集成的復(fù)雜度,即模塊在集成時(shí)候需要外部微服務(wù)模塊更多的配合。

部署復(fù)雜度增加,由于微服務(wù)模塊需要獨(dú)立部署,往往涉及到多達(dá)上100個(gè)容器的安裝和部署和集成等相關(guān)工作,這也是需要和Docker集成并實(shí)現(xiàn)自動(dòng)部署的一個(gè)原因。

微服務(wù)很多時(shí),整個(gè)鏈路可能很長(zhǎng),調(diào)用失敗的風(fēng)險(xiǎn)高,而且e2e自動(dòng)化測(cè)試會(huì)成為一個(gè)問題 服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn),我司有自己的服務(wù)管理系統(tǒng)。我推薦etcd。Google開源的Kubernetes(k8s)貌似也是使用的這個(gè)。 分布式事務(wù),這個(gè)是微服務(wù)系統(tǒng)的大難點(diǎn),可能需要根據(jù)自己系統(tǒng)的情況和業(yè)務(wù)需求進(jìn)行定制了,我推薦補(bǔ)償性分布式事務(wù)和基于消息的分布式事務(wù)。(下次有時(shí)間介紹一下常用的集中分布式事務(wù)要怎么做)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    141

    瀏覽量

    7379
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    寶藏級(jí)微服務(wù)架構(gòu)工具合集

    寶藏級(jí)熱門微服務(wù)架構(gòu)工具包含Spring Boot、Eclipse Vert.X、Kubernetes、Tyk、RabbitMQ、Apache Kafka等。其中,Spring Boot簡(jiǎn)化了微服務(wù)
    的頭像 發(fā)表于 12-21 16:33 ?205次閱讀

    通用型企業(yè)云服務(wù)器的優(yōu)缺點(diǎn)

    通用型企業(yè)云服務(wù)器是一種基于云計(jì)算技術(shù)的服務(wù)器解決方案,它通過虛擬化技術(shù)將計(jì)算資源、存儲(chǔ)資源和網(wǎng)絡(luò)資源提供給用戶,具有多種優(yōu)勢(shì)和一定的局限性。主機(jī)推薦小編為您整理發(fā)布通用型企業(yè)云服務(wù)優(yōu)缺點(diǎn)
    的頭像 發(fā)表于 12-17 09:57 ?113次閱讀

    不同類型UPS電源的優(yōu)缺點(diǎn)

    不間斷電源(UPS)是為關(guān)鍵設(shè)備提供穩(wěn)定、不間斷電力供應(yīng)的重要設(shè)備。根據(jù)設(shè)計(jì)和功能的不同,UPS可以分為幾種類型,每種類型都有其獨(dú)特的優(yōu)缺點(diǎn)。以下是一些常見的UPS類型及其優(yōu)缺點(diǎn)的概述: 在線式
    的頭像 發(fā)表于 10-28 10:45 ?748次閱讀

    微服務(wù)架構(gòu)與容器云的關(guān)系與區(qū)別

    微服務(wù)架構(gòu)與容器云密切相關(guān)又有所區(qū)別。微服務(wù)將大型應(yīng)用拆分為小型、獨(dú)立的服務(wù),而容器云基于容器技術(shù),為微服務(wù)提供構(gòu)建、發(fā)布和運(yùn)行的平臺(tái)。區(qū)別在于,
    的頭像 發(fā)表于 10-21 17:28 ?263次閱讀

    入門級(jí)攻略:如何容器化部署微服務(wù)?

    第一步理解容器化基礎(chǔ),第二步創(chuàng)建Dockerfile,第三步構(gòu)建推送鏡像,第四步部署微服務(wù),第五步管理微服務(wù)、第六步優(yōu)化更新。容器化部署微服務(wù)是現(xiàn)代軟件開發(fā)中的一種高效方法,可提供良好的可移植性、可擴(kuò)展性和管理性。容器化部署
    的頭像 發(fā)表于 10-09 10:08 ?177次閱讀

    雪崩晶體管有哪些優(yōu)缺點(diǎn)

    雪崩晶體管作為一種特殊的半導(dǎo)體器件,在電子領(lǐng)域具有其獨(dú)特的優(yōu)缺點(diǎn)。
    的頭像 發(fā)表于 09-23 18:05 ?348次閱讀

    什么是壓電陶瓷傳感器?它有哪些優(yōu)缺點(diǎn)?

    壓電陶瓷傳感器是一種基于壓電效應(yīng)的傳感器,廣泛應(yīng)用于多個(gè)領(lǐng)域,如醫(yī)療設(shè)備、工業(yè)自動(dòng)化、科學(xué)研究、汽車、航空航天等。以下是對(duì)壓電陶瓷傳感器的詳細(xì)解析,包括其定義、工作原理、特點(diǎn)、應(yīng)用以及優(yōu)缺點(diǎn)等方面。
    的頭像 發(fā)表于 08-09 17:42 ?2181次閱讀

    采用OpenUSD和NVIDIA NIM微服務(wù)創(chuàng)建精準(zhǔn)品牌視覺

    全球領(lǐng)先的創(chuàng)意和制作服務(wù)機(jī)構(gòu)率先采用 OpenUSD 和 NVIDIA NIM 微服務(wù)來創(chuàng)建精準(zhǔn)的品牌視覺。
    的頭像 發(fā)表于 08-01 14:33 ?460次閱讀

    AI大模型與小模型的優(yōu)缺點(diǎn)

    在人工智能(AI)的廣闊領(lǐng)域中,模型作為算法與數(shù)據(jù)之間的橋梁,扮演著至關(guān)重要的角色。根據(jù)模型的大小和復(fù)雜度,我們可以將其大致分為AI大模型和小模型。這兩種模型在定義、優(yōu)缺點(diǎn)及應(yīng)用場(chǎng)景上存在著顯著的差異。本文將從多個(gè)維度深入探討AI大模型與小模型的特點(diǎn),并分析其各自的優(yōu)缺點(diǎn)
    的頭像 發(fā)表于 07-10 10:39 ?3192次閱讀

    遠(yuǎn)程連接路由器:方法大全與優(yōu)缺點(diǎn)解析

    遠(yuǎn)程連接路由器的方式主要有以下幾種,以下是每種方式的詳細(xì)說明及其優(yōu)缺點(diǎn): 1、使用Web瀏覽器登錄 方法:通過配置路由器的遠(yuǎn)程管理功能,允許用戶通過互聯(lián)網(wǎng)瀏覽器訪問路由器的管理界面。用戶只需輸入
    的頭像 發(fā)表于 06-11 12:05 ?732次閱讀
    遠(yuǎn)程連接路由器:方法大全與<b class='flag-5'>優(yōu)缺點(diǎn)解析</b>

    nbiot和lora的優(yōu)缺點(diǎn)是什么?

    nbiot和lora的優(yōu)缺點(diǎn)
    發(fā)表于 06-04 06:37

    直流電機(jī)的工作原理、類型及優(yōu)缺點(diǎn)

    直流電機(jī),作為一種將直流電能轉(zhuǎn)換為機(jī)械能的設(shè)備,在電力拖動(dòng)、工業(yè)自動(dòng)化、電動(dòng)汽車等領(lǐng)域中發(fā)揮著至關(guān)重要的作用。其工作原理獨(dú)特,類型多樣,且具備一系列優(yōu)點(diǎn)和缺點(diǎn)。本文將對(duì)直流電機(jī)的工作原理、類型以及優(yōu)缺點(diǎn)進(jìn)行深度解析,以期為讀者提
    的頭像 發(fā)表于 05-23 16:43 ?6004次閱讀

    日本大帶寬服務(wù)優(yōu)缺點(diǎn)分析

    日本大帶寬服務(wù)器是很多用戶的選擇,那么日本大帶寬服務(wù)優(yōu)缺點(diǎn)都是什么?Rak部落小編為您整理發(fā)布日本大帶寬服務(wù)優(yōu)缺點(diǎn)分析。
    的頭像 發(fā)表于 03-22 10:08 ?494次閱讀

    DHCP服務(wù)器的優(yōu)缺點(diǎn)簡(jiǎn)介

    DHCP服務(wù)器在自動(dòng)化配置、減少IP地址沖突、靈活性和安全性等方面具有顯著優(yōu)點(diǎn),但也存在單點(diǎn)故障、配置復(fù)雜性、性能瓶頸和安全問題等缺點(diǎn)。在實(shí)際應(yīng)用中,需要根據(jù)網(wǎng)絡(luò)規(guī)模和需求來權(quán)衡這些優(yōu)缺點(diǎn),并采取相應(yīng)的措施來確保網(wǎng)絡(luò)的穩(wěn)定性和安
    的頭像 發(fā)表于 03-21 10:19 ?1200次閱讀

    【算能RADXA微服務(wù)器試用體驗(yàn)】Radxa Fogwise 1684X Mini 規(guī)格

    通過網(wǎng)絡(luò)可以了解到,算能RADXA微服務(wù)器的具體規(guī)格: 處理器:BM1684X 算力:高達(dá)32Tops INT8峰值算力 內(nèi)存:16GB LPDDR4X 內(nèi)存 存儲(chǔ):64GB eMMC 編程框架
    發(fā)表于 02-28 11:21