精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

聊一聊微服務的一些基礎架構,入門篇

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

微服務這幾年不可謂不火,很多技術團隊都開始在自己的項目上引入了微服務。一方面這些團隊確實很好的推動了微服務的應用和發展,另一方面也可以看到一些盲目追技術熱點的行為所帶來的危害,比如很多中小團隊對微服務的基礎知識只是做了很淺顯的了解就開始盲目的推動微服務的實施,最后導致了項目的失敗。

微服務要想做好是一個非常復雜的架構,今天就先只聊一聊微服務的一些基礎架構,算是入門篇。

一、什么是「 微服務 」?

「 微服務 」由 Martin Fowler 提出,它是指一種軟件架構風格。一個大型的系統可以由多個微服務組成,每個微服務是被獨立部署,獨立完成自己的任務單元,微服務之間是通過API方式進行通信調用,是松耦合的。

這個模式聽著是不是很熟悉的感覺?

因為在提出「 微服務 」概念之前,很多互聯網公司的中大型項目早就是按照將業務拆分成獨立單元的形式在部署和架構的,這與微服務的思路是一脈相通的,只不過實現方式沒有現在這么規范與體系。

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

在做一個新項目的時候,一開始項目大多數都很小,都是「 單體應用 」,這是很常見的做法。在項目規模小的時候,這種方式開發效率和運維效率都最高,符合互聯網公司快速響應的要求。

但是隨著業務量越來越大,項目也越來越復雜,開發團隊人員也越來越多。這個時候還采用單體應用,問題就會很明顯了。下面挑選兩個最為常見的問題來舉例:

協同問題:多個人同時開發一份代碼,在工作協同上就會經常遇到代碼沖突問題。

可用性問題:因為是單體應用,即使改個最小的功能,也需要整體發布,不僅直接影響了線上可用性,還可能會對正常功能帶來風險。

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

「 微服務 」的理念提倡每個服務都是單一職責,且每一個服務都能實現自治,因此可以帶來一些明顯好處:

部署簡單:每個微服務都可以獨立去部署,方便快捷。

邏輯清晰:將一個獨立功能邏輯封裝在單一微服務里面,實現整體項目的邏輯清晰。

可擴展:因為可以隨時增加和減少微服務,可以很方便的擴展功能。

可靠性高:某一個功能的異常可以隔離在單一微服務里面,可以提高整體可靠性。

二、「 微服務 」的架構是什么樣?

我們先來看一下「 微服務 」的架構圖:

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

看起來挺復雜對不對,事實上也確實很復雜。

所以微服務并不是適用于所有項目、所有團隊的。在應用之前一定要搞清楚是否適合自己。

要保證這么一套微服務架構能成功運行起來,我們起碼需要以下這些微服務的基礎組件:

服務注冊

部署了一個微服務節點,得讓調用者知道啊,當微服務節點有增加或減少的時候,也得讓調用者及時知曉啊。這些問題都是通過“服務注冊”組件來實現的,服務提供者將自己的服務地址等信息登記到“服務注冊”組件中,調用者需要的時候,每次都先去查詢“服務注冊”即可。免去人工維護微服務節點的信息同步問題。

服務網關

是指提供給外部系統調用的是統一網關。主要做安全和權限控制等。

配置中心

微服務的配置中心是用來統一管理所有微服務節點的配置信息的。因為同一個程序可能要適用于多個環境,所以在微服務實踐中要盡量做到程序與配置分離,將配置進行集中管理。包括微服務節點信息、程序運行時配置、變量配置、數據源配置、日志配置、版本配置等。

服務框架

是指用來規范各個微服務節點之間通信標準的。服務間通信采用什么協議、數據是如何傳輸的、數據格式是什么樣的。有了這個統一的“服務框架”就能保證各個微服務節點之間高效率的協同。

服務監控

微服務運行起來之后,為了能夠監控節點的健康情況,保障節點的高可行,需要對各個服務節點進行收集數據指標、然后對數據進行實時處理和分析,形成監控報表和預警。

服務追蹤

一旦使用了微服務架構,那么當有請求過來時,就會經過多個微服務節點的處理,形成了一個調用鏈。為了進行問題追蹤和故障的定位,需要對請求的完整調用鏈進行記錄。

這里的服務追蹤與上面的服務監控是不同維度的,一個是全局的,一個是微觀的,發揮的作用也不一樣。

服務治理

就是指需要通過準備一些策略和方案,來保障整個微服務架構在生產環境遇到極端情況下也能正常提供服務的措施。比如 熔斷、限流、隔離等等。

當然,上述只是一個微服務架構最為核心的基礎組件,一旦微服務體系過大,例如有幾十上百個微服務節點,那么開發、維護、測試的成本就會非常大。因此一般還會引入 自動化部署 和 自動化測試 來提高協同效率。

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

你以為微服務架構都是下面這樣的嗎?

事實上,更能是下面這樣的,哈哈。

(圖片來源網絡)

大家都在宣揚「 微服務 」多么多么的好,例如:易擴展、松耦合、服務簡單、獨立開發、易維護、輕量級等等。雖然這些優勢也是事實,但是「 微服務 」帶來的問題也很多,尤其是對于剛入門的團隊而言,應用微服務后,趟坑真的可以趟到你崩潰。下面就普及一些常見的問題來給大家打個預防針:

不是所有項目都適用微服務

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

不要拆分過多過細的服務

即使項目經過評估后適合拆為微服務架構,但也不要過度拆解。有的團隊喜歡將項目拆成很細很細的顆粒,最后把項目搞的特別復雜,整個團隊都陷進去了。

拆分服務的顆粒度應該根據業務發展和團隊現狀綜合去考慮。這里可以參考一個很火的理論「 康威定律 」。什么樣的團隊,就產生什么樣的架構,微服務拆分的顆粒度是需要和團隊結構相匹配的。當你著手拆微服務的時候,得先評估一下團隊人員和素質,一般在開發期,2-3個人開發一個服務是合理的,在維護期,1個人維護2-3個服務也是合理的。

如果拆分過細,開發人員跟不上,會嚴重降低大家的工作效率。并且過細的服務,會導致一個請求的調用鏈條很長,不僅會影響請求的響應時間,也會對線上問題排查帶來增加難度。

沒有DevOps就不要急于微服務

一個穩定的微服務架構,是需要 持續集成、自動化部署、自動化測試、健全的監控體系來保障的。如果團隊還不具備DevOps,這些基礎的建設都沒有做好,一上來就搞微服務的話,就會導致實施過程中問題百出,微服務的優勢不能發揮。

以上,就是對架構設計中「 微服務基礎 」的一些思考。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 自動化
    +關注

    關注

    29

    文章

    5519

    瀏覽量

    79118
  • 架構
    +關注

    關注

    1

    文章

    510

    瀏覽量

    25451
  • 微服務
    +關注

    關注

    0

    文章

    134

    瀏覽量

    7328

原文標題:架構設計之「 微服務入門 」

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    消息隊列技術選型的7種消息場景

    我們在做消息隊列的技術選型時,往往會結合業務場景進行考慮。今天來消息隊列可能會用到的 7 種消息場景。
    的頭像 發表于 12-09 17:50 ?1322次閱讀
    <b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>消息隊列技術選型的7種消息場景

    微服務架構和CQRS架構基本概念介紹

    微服務架構現在很熱,到處可以看到各大互聯網公司的微服務實踐的分享總結。但是,我今天的分享和微服務沒有關系,希望可以帶給大家一些新的東西。如果
    發表于 05-22 09:03

    Altium中Fill,Polygon Pour,Plane的區別和用法

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

    stm32的低功耗調試

    前言:物聯網的大部分設備都是電池供電的,設備本身低功耗對延長設備使用至關重要,今天就實際調試總結stm32的低功耗調試。1、stm32在運行狀態下的功耗上圖截圖自stm32l15x手冊
    發表于 08-11 08:18

    平衡小車代碼的實現

    前言今天代碼,只有直立功能的代碼。代碼總體思路給定個目標值,單片機通過IIC和mpu6050通信,得知數據后,根據角度環計算出個P
    發表于 01-14 08:29

    單片機(入門篇

    單片機(入門篇
    發表于 03-21 20:51 ?330次下載

    電子工程師自學速成 - 入門篇

    電子工程師自學速成 - 入門篇電子工程師自學速成 - 入門篇電子工程師自學速成 - 入門篇電子工程師自學速成 - 入門篇電子工程師自學速成 - 入門
    發表于 05-10 15:48 ?0次下載

    關于微服務一些問題的解答

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

    小米米2月19日停止服務宣布關閉服務

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

    FPGA中的彩色轉灰度的算法

    大家好,又到了每日學習的時間了,今天我們來FPGA學習中可以遇到的一些算法,今天就
    的頭像 發表于 04-15 15:47 ?1939次閱讀

    微服務架構有哪些_微服務架構設計模式

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

    【職場雜談】與嵌入式物聯網架構幾個話題

    【職場雜談】與嵌入式物聯網架構幾個話題
    的頭像 發表于 08-23 09:19 ?1304次閱讀
    【職場雜談】與嵌入式物聯網<b class='flag-5'>架構</b>師<b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>幾個話題

    設計微服務架構的原則

    微服務種軟件架構策略,有利于改善整體性能和可擴展性。你可能會想,我的團隊需不需要采用微服務,設計微服務
    的頭像 發表于 11-26 08:05 ?563次閱讀
    設計<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>的原則

    簡單DPT技術-double pattern technology

    今天想來簡單DPT技術-double pattern technology,也就是雙層掩模版技術,在目前先進工藝下,這項技術已經應用的很普遍了。
    的頭像 發表于 12-05 14:26 ?1652次閱讀

    芯片設計的NDR是什么?

    今天突然想route相關的問題,講講NDR是什么,我也梳理總結下我對NDR的認識。
    的頭像 發表于 12-06 15:14 ?1839次閱讀