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

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

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

聊一聊微服務(wù)的一些基礎(chǔ)架構(gòu),入門篇

Linux愛好者 ? 來源:lq ? 2019-05-10 16:28 ? 次閱讀

微服務(wù)這幾年不可謂不火,很多技術(shù)團(tuán)隊(duì)都開始在自己的項(xiàng)目上引入了微服務(wù)。一方面這些團(tuán)隊(duì)確實(shí)很好的推動(dòng)了微服務(wù)的應(yīng)用和發(fā)展,另一方面也可以看到一些盲目追技術(shù)熱點(diǎn)的行為所帶來的危害,比如很多中小團(tuán)隊(duì)對(duì)微服務(wù)的基礎(chǔ)知識(shí)只是做了很淺顯的了解就開始盲目的推動(dòng)微服務(wù)的實(shí)施,最后導(dǎo)致了項(xiàng)目的失敗。

微服務(wù)要想做好是一個(gè)非常復(fù)雜的架構(gòu),今天就先只聊一聊微服務(wù)的一些基礎(chǔ)架構(gòu),算是入門篇。

一、什么是「 微服務(wù) 」?

「 微服務(wù) 」由 Martin Fowler 提出,它是指一種軟件架構(gòu)風(fēng)格。一個(gè)大型的系統(tǒng)可以由多個(gè)微服務(wù)組成,每個(gè)微服務(wù)是被獨(dú)立部署,獨(dú)立完成自己的任務(wù)單元,微服務(wù)之間是通過API方式進(jìn)行通信調(diào)用,是松耦合的。

這個(gè)模式聽著是不是很熟悉的感覺?

因?yàn)樵谔岢觥?微服務(wù) 」概念之前,很多互聯(lián)網(wǎng)公司的中大型項(xiàng)目早就是按照將業(yè)務(wù)拆分成獨(dú)立單元的形式在部署和架構(gòu)的,這與微服務(wù)的思路是一脈相通的,只不過實(shí)現(xiàn)方式?jīng)]有現(xiàn)在這么規(guī)范與體系。

那「 微服務(wù) 」到底是怎么演變過來的呢?

在做一個(gè)新項(xiàng)目的時(shí)候,一開始項(xiàng)目大多數(shù)都很小,都是「 單體應(yīng)用 」,這是很常見的做法。在項(xiàng)目規(guī)模小的時(shí)候,這種方式開發(fā)效率和運(yùn)維效率都最高,符合互聯(lián)網(wǎng)公司快速響應(yīng)的要求。

但是隨著業(yè)務(wù)量越來越大,項(xiàng)目也越來越復(fù)雜,開發(fā)團(tuán)隊(duì)人員也越來越多。這個(gè)時(shí)候還采用單體應(yīng)用,問題就會(huì)很明顯了。下面挑選兩個(gè)最為常見的問題來舉例:

協(xié)同問題:多個(gè)人同時(shí)開發(fā)一份代碼,在工作協(xié)同上就會(huì)經(jīng)常遇到代碼沖突問題。

可用性問題:因?yàn)槭菃误w應(yīng)用,即使改個(gè)最小的功能,也需要整體發(fā)布,不僅直接影響了線上可用性,還可能會(huì)對(duì)正常功能帶來風(fēng)險(xiǎn)。

為了解決這些問題,大家就開始考慮將「 單體應(yīng)用 」進(jìn)行拆分,進(jìn)行服務(wù)化部署。然后又隨著 Martin Fowler對(duì)「 微服務(wù) 」概念的提出,加上 DevOps 的流行,進(jìn)一步促進(jìn)了微服務(wù)的火熱發(fā)展。

「 微服務(wù) 」的理念提倡每個(gè)服務(wù)都是單一職責(zé),且每一個(gè)服務(wù)都能實(shí)現(xiàn)自治,因此可以帶來一些明顯好處:

部署簡(jiǎn)單:每個(gè)微服務(wù)都可以獨(dú)立去部署,方便快捷。

邏輯清晰:將一個(gè)獨(dú)立功能邏輯封裝在單一微服務(wù)里面,實(shí)現(xiàn)整體項(xiàng)目的邏輯清晰。

可擴(kuò)展:因?yàn)榭梢噪S時(shí)增加和減少微服務(wù),可以很方便的擴(kuò)展功能。

可靠性高:某一個(gè)功能的異??梢愿綦x在單一微服務(wù)里面,可以提高整體可靠性。

二、「 微服務(wù) 」的架構(gòu)是什么樣?

我們先來看一下「 微服務(wù) 」的架構(gòu)圖:

(圖片來源網(wǎng)絡(luò),粉絲太少就懶得畫圖了,大家發(fā)揮一下想象力將就的看看,哈哈)

看起來挺復(fù)雜對(duì)不對(duì),事實(shí)上也確實(shí)很復(fù)雜。

所以微服務(wù)并不是適用于所有項(xiàng)目、所有團(tuán)隊(duì)的。在應(yīng)用之前一定要搞清楚是否適合自己。

要保證這么一套微服務(wù)架構(gòu)能成功運(yùn)行起來,我們起碼需要以下這些微服務(wù)的基礎(chǔ)組件:

服務(wù)注冊(cè)

部署了一個(gè)微服務(wù)節(jié)點(diǎn),得讓調(diào)用者知道啊,當(dāng)微服務(wù)節(jié)點(diǎn)有增加或減少的時(shí)候,也得讓調(diào)用者及時(shí)知曉啊。這些問題都是通過“服務(wù)注冊(cè)”組件來實(shí)現(xiàn)的,服務(wù)提供者將自己的服務(wù)地址等信息登記到“服務(wù)注冊(cè)”組件中,調(diào)用者需要的時(shí)候,每次都先去查詢“服務(wù)注冊(cè)”即可。免去人工維護(hù)微服務(wù)節(jié)點(diǎn)的信息同步問題。

服務(wù)網(wǎng)關(guān)

是指提供給外部系統(tǒng)調(diào)用的是統(tǒng)一網(wǎng)關(guān)。主要做安全和權(quán)限控制等。

配置中心

微服務(wù)的配置中心是用來統(tǒng)一管理所有微服務(wù)節(jié)點(diǎn)的配置信息的。因?yàn)橥粋€(gè)程序可能要適用于多個(gè)環(huán)境,所以在微服務(wù)實(shí)踐中要盡量做到程序與配置分離,將配置進(jìn)行集中管理。包括微服務(wù)節(jié)點(diǎn)信息、程序運(yùn)行時(shí)配置、變量配置、數(shù)據(jù)源配置、日志配置、版本配置等。

服務(wù)框架

是指用來規(guī)范各個(gè)微服務(wù)節(jié)點(diǎn)之間通信標(biāo)準(zhǔn)的。服務(wù)間通信采用什么協(xié)議、數(shù)據(jù)是如何傳輸?shù)?、?shù)據(jù)格式是什么樣的。有了這個(gè)統(tǒng)一的“服務(wù)框架”就能保證各個(gè)微服務(wù)節(jié)點(diǎn)之間高效率的協(xié)同。

服務(wù)監(jiān)控

微服務(wù)運(yùn)行起來之后,為了能夠監(jiān)控節(jié)點(diǎn)的健康情況,保障節(jié)點(diǎn)的高可行,需要對(duì)各個(gè)服務(wù)節(jié)點(diǎn)進(jìn)行收集數(shù)據(jù)指標(biāo)、然后對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)處理和分析,形成監(jiān)控報(bào)表和預(yù)警。

服務(wù)追蹤

一旦使用了微服務(wù)架構(gòu),那么當(dāng)有請(qǐng)求過來時(shí),就會(huì)經(jīng)過多個(gè)微服務(wù)節(jié)點(diǎn)的處理,形成了一個(gè)調(diào)用鏈。為了進(jìn)行問題追蹤和故障的定位,需要對(duì)請(qǐng)求的完整調(diào)用鏈進(jìn)行記錄。

這里的服務(wù)追蹤與上面的服務(wù)監(jiān)控是不同維度的,一個(gè)是全局的,一個(gè)是微觀的,發(fā)揮的作用也不一樣。

服務(wù)治理

就是指需要通過準(zhǔn)備一些策略和方案,來保障整個(gè)微服務(wù)架構(gòu)在生產(chǎn)環(huán)境遇到極端情況下也能正常提供服務(wù)的措施。比如 熔斷、限流、隔離等等。

當(dāng)然,上述只是一個(gè)微服務(wù)架構(gòu)最為核心的基礎(chǔ)組件,一旦微服務(wù)體系過大,例如有幾十上百個(gè)微服務(wù)節(jié)點(diǎn),那么開發(fā)、維護(hù)、測(cè)試的成本就會(huì)非常大。因此一般還會(huì)引入 自動(dòng)化部署 和 自動(dòng)化測(cè)試 來提高協(xié)同效率。

三、「 微服務(wù) 」入門如何避免踩坑?

你以為微服務(wù)架構(gòu)都是下面這樣的嗎?

事實(shí)上,更能是下面這樣的,哈哈。

(圖片來源網(wǎng)絡(luò))

大家都在宣揚(yáng)「 微服務(wù) 」多么多么的好,例如:易擴(kuò)展、松耦合、服務(wù)簡(jiǎn)單、獨(dú)立開發(fā)、易維護(hù)、輕量級(jí)等等。雖然這些優(yōu)勢(shì)也是事實(shí),但是「 微服務(wù) 」帶來的問題也很多,尤其是對(duì)于剛?cè)腴T的團(tuán)隊(duì)而言,應(yīng)用微服務(wù)后,趟坑真的可以趟到你崩潰。下面就普及一些常見的問題來給大家打個(gè)預(yù)防針:

不是所有項(xiàng)目都適用微服務(wù)

有些項(xiàng)目規(guī)模還比較小,或者項(xiàng)目才剛立項(xiàng)啟動(dòng),也只有三四個(gè)人負(fù)責(zé)開發(fā)維護(hù),這時(shí)候是不建議一上來就搞微服務(wù)架構(gòu)的。這種情況下搞微服務(wù),不僅是“殺雞用牛刀”,而且還無謂的增加了項(xiàng)目的復(fù)雜度,本身一個(gè)單體結(jié)構(gòu)就可以搞定的事情,非得拆分N多節(jié)點(diǎn),人員又不足以支撐這么多節(jié)點(diǎn)的開發(fā)維護(hù),這完全是自找苦吃。反而是等項(xiàng)目成熟了、規(guī)模大了之后,再開始慢慢將原有結(jié)構(gòu)拆為微服務(wù)才是正確的做法。

不要拆分過多過細(xì)的服務(wù)

即使項(xiàng)目經(jīng)過評(píng)估后適合拆為微服務(wù)架構(gòu),但也不要過度拆解。有的團(tuán)隊(duì)喜歡將項(xiàng)目拆成很細(xì)很細(xì)的顆粒,最后把項(xiàng)目搞的特別復(fù)雜,整個(gè)團(tuán)隊(duì)都陷進(jìn)去了。

拆分服務(wù)的顆粒度應(yīng)該根據(jù)業(yè)務(wù)發(fā)展和團(tuán)隊(duì)現(xiàn)狀綜合去考慮。這里可以參考一個(gè)很火的理論「 康威定律 」。什么樣的團(tuán)隊(duì),就產(chǎn)生什么樣的架構(gòu),微服務(wù)拆分的顆粒度是需要和團(tuán)隊(duì)結(jié)構(gòu)相匹配的。當(dāng)你著手拆微服務(wù)的時(shí)候,得先評(píng)估一下團(tuán)隊(duì)人員和素質(zhì),一般在開發(fā)期,2-3個(gè)人開發(fā)一個(gè)服務(wù)是合理的,在維護(hù)期,1個(gè)人維護(hù)2-3個(gè)服務(wù)也是合理的。

如果拆分過細(xì),開發(fā)人員跟不上,會(huì)嚴(yán)重降低大家的工作效率。并且過細(xì)的服務(wù),會(huì)導(dǎo)致一個(gè)請(qǐng)求的調(diào)用鏈條很長(zhǎng),不僅會(huì)影響請(qǐng)求的響應(yīng)時(shí)間,也會(huì)對(duì)線上問題排查帶來增加難度。

沒有DevOps就不要急于微服務(wù)

一個(gè)穩(wěn)定的微服務(wù)架構(gòu),是需要 持續(xù)集成、自動(dòng)化部署、自動(dòng)化測(cè)試、健全的監(jiān)控體系來保障的。如果團(tuán)隊(duì)還不具備DevOps,這些基礎(chǔ)的建設(shè)都沒有做好,一上來就搞微服務(wù)的話,就會(huì)導(dǎo)致實(shí)施過程中問題百出,微服務(wù)的優(yōu)勢(shì)不能發(fā)揮。

以上,就是對(duì)架構(gòu)設(shè)計(jì)中「 微服務(wù)基礎(chǔ) 」的一些思考。

聲明:本文內(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)投訴
  • 自動(dòng)化
    +關(guān)注

    關(guān)注

    29

    文章

    5612

    瀏覽量

    79495
  • 架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    517

    瀏覽量

    25507
  • 微服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    141

    瀏覽量

    7375

原文標(biāo)題:架構(gòu)設(shè)計(jì)之「 微服務(wù)入門 」

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    消息隊(duì)列技術(shù)選型的7種消息場(chǎng)景

    我們?cè)谧鱿㈥?duì)列的技術(shù)選型時(shí),往往會(huì)結(jié)合業(yè)務(wù)場(chǎng)景進(jìn)行考慮。今天來消息隊(duì)列可能會(huì)用到的 7 種消息場(chǎng)景。
    的頭像 發(fā)表于 12-09 17:50 ?1416次閱讀
    <b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>消息隊(duì)列技術(shù)選型的7種消息場(chǎng)景

    微服務(wù)架構(gòu)和CQRS架構(gòu)基本概念介紹

    微服務(wù)架構(gòu)現(xiàn)在很熱,到處可以看到各大互聯(lián)網(wǎng)公司的微服務(wù)實(shí)踐的分享總結(jié)。但是,我今天的分享和微服務(wù)沒有關(guān)系,希望可以帶給大家一些新的東西。如果
    發(fā)表于 05-22 09:03

    Altium中Fill,Polygon Pour,Plane的區(qū)別和用法

    Fill會(huì)造成短路,為什么還用它呢?來Altium中Fill,Polygon Pour,Plane的區(qū)別和用法
    發(fā)表于 04-25 06:29

    stm32的低功耗調(diào)試

    前言:物聯(lián)網(wǎng)的大部分設(shè)備都是電池供電的,設(shè)備本身低功耗對(duì)延長(zhǎng)設(shè)備使用至關(guān)重要,今天就實(shí)際調(diào)試總結(jié)stm32的低功耗調(diào)試。1、stm32在運(yùn)行狀態(tài)下的功耗上圖截圖自stm32l15x手冊(cè)
    發(fā)表于 08-11 08:18

    平衡小車代碼的實(shí)現(xiàn)

    前言今天代碼,只有直立功能的代碼。代碼總體思路給定個(gè)目標(biāo)值,單片機(jī)通過IIC和mpu6050通信,得知數(shù)據(jù)后,根據(jù)角度環(huán)計(jì)算出個(gè)P
    發(fā)表于 01-14 08:29

    攝像機(jī)基礎(chǔ)培訓(xùn)——入門篇

    攝像機(jī)基礎(chǔ)培訓(xùn)——入門篇
    發(fā)表于 01-04 22:03 ?0次下載

    關(guān)于微服務(wù)一些問題的解答

    微服務(wù)確實(shí)很受歡迎,但是對(duì)于微服務(wù)的誤解也是事實(shí),本文對(duì)這些誤解一一來介紹下: 、微服務(wù)不夠微? 盡管微服務(wù)定義的很明確,但是開發(fā)者社區(qū)對(duì)
    發(fā)表于 10-11 11:27 ?0次下載
    關(guān)于<b class='flag-5'>微服務(wù)</b>的<b class='flag-5'>一些</b>問題的解答

    小米米2月19日停止服務(wù)宣布關(guān)閉服務(wù)

    小米大事件,米將于 2021 年 2 月 19 日 12 點(diǎn) 00 分停止米服務(wù)。 這個(gè)時(shí)候很多人想的是要趕緊把信息、聊天記錄都導(dǎo)出來;停服后將無法導(dǎo)出用戶在米內(nèi)的任何信息。米
    的頭像 發(fā)表于 01-20 05:43 ?6686次閱讀

    FPGA中的彩色轉(zhuǎn)灰度的算法

    大家好,又到了每日學(xué)習(xí)的時(shí)間了,今天我們來FPGA學(xué)習(xí)中可以遇到的一些算法,今天就
    的頭像 發(fā)表于 04-15 15:47 ?1982次閱讀

    微服務(wù)架構(gòu)有哪些_微服務(wù)架構(gòu)設(shè)計(jì)模式

    小伙伴們知道常用的微服務(wù)架構(gòu)框架有哪些嗎?上回我們介紹了一些常用的微服務(wù)架構(gòu)設(shè)計(jì)模式,這次我們就來了解
    的頭像 發(fā)表于 05-17 17:06 ?2.9w次閱讀
    <b class='flag-5'>微服務(wù)</b><b class='flag-5'>架構(gòu)</b>有哪些_<b class='flag-5'>微服務(wù)</b><b class='flag-5'>架構(gòu)</b>設(shè)計(jì)模式

    【職場(chǎng)雜談】與嵌入式物聯(lián)網(wǎng)架構(gòu)幾個(gè)話題

    【職場(chǎng)雜談】與嵌入式物聯(lián)網(wǎng)架構(gòu)幾個(gè)話題
    的頭像 發(fā)表于 08-23 09:19 ?1373次閱讀
    【職場(chǎng)雜談】與嵌入式物聯(lián)網(wǎng)<b class='flag-5'>架構(gòu)</b>師<b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>幾個(gè)話題

    華為云彈性公網(wǎng)IP的那些事兒

    華為云彈性公網(wǎng)IP的那些事兒 如今,企業(yè)上云已成為熱門話題,云可以驅(qū)動(dòng)流程創(chuàng)新和業(yè)務(wù)創(chuàng)新,成為企業(yè)新的利潤(rùn)增長(zhǎng)點(diǎn),被看成是企業(yè)實(shí)現(xiàn)數(shù)字化轉(zhuǎn)型的必經(jīng)之路。彈性公網(wǎng)IP作為種網(wǎng)絡(luò)基
    的頭像 發(fā)表于 11-21 15:20 ?896次閱讀
    <b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>華為云彈性公網(wǎng)IP的那些事兒

    設(shè)計(jì)微服務(wù)架構(gòu)的原則

    微服務(wù)種軟件架構(gòu)策略,有利于改善整體性能和可擴(kuò)展性。你可能會(huì)想,我的團(tuán)隊(duì)需不需要采用微服務(wù),設(shè)計(jì)微服務(wù)
    的頭像 發(fā)表于 11-26 08:05 ?620次閱讀
    設(shè)計(jì)<b class='flag-5'>微服務(wù)</b><b class='flag-5'>架構(gòu)</b>的原則

    簡(jiǎn)單DPT技術(shù)-double pattern technology

    今天想來簡(jiǎn)單DPT技術(shù)-double pattern technology,也就是雙層掩模版技術(shù),在目前先進(jìn)工藝下,這項(xiàng)技術(shù)已經(jīng)應(yīng)用的很普遍了。
    的頭像 發(fā)表于 12-05 14:26 ?2102次閱讀

    芯片設(shè)計(jì)的NDR是什么?

    今天突然想route相關(guān)的問題,講講NDR是什么,我也梳理總結(jié)下我對(duì)NDR的認(rèn)識(shí)。
    的頭像 發(fā)表于 12-06 15:14 ?2251次閱讀