女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

微服務架構與實踐基礎篇

阿銘linux ? 來源:未知 ? 作者:李倩 ? 2018-04-10 14:23 ? 次閱讀

看到最近“微服務架構”這個概念這么火,作為一個積極上進的程序猿,

成小胖忍不住想要學習學習。

而架構師老王(不是隔壁老王)

最近剛好在做公司基礎服務的微服務化研究和落地,對此深有研究。

于是成小胖馬上屁顛屁顛的跑過去向老王請教:

“王哥,我看微服務架構這么火,我也想學,您給我講講啥是微服務架構唄?”

老王笑了笑說:

“要想知道什么是微服務架構,你得先知道什么系統架構設計。”

成小胖的理想是成為一名架構師,平時積累了不少知識,因此對“系統架構設計”這個概念還是很熟悉的,因此他馬上就給出了答案【1】:

系統架構設計描述了在應用系統的內部,如何根據業務、技術、組織、靈活性、可擴展性以及可維護性等多種因素,將應用系統劃分成不同的部分,并使這些部分彼此之間相互分工、相互協作,從而為用戶提供某種特定的價值的方式。

老王滿意的點點頭,繼續問:

“你看最近我在做微服務的研究和落地,你知道為什么要做這個事情嗎?”

“因為目前的三層架構存在很多弊端,不滿足業務發展的需求了唄。”

“對的,我看你對公司目前的架構也非常熟悉了,你來仔細說說現在的三層架構吧。”

于是成小胖拿了一張A4紙,圖文并茂地給老王講了他對三層架構的理解:

三層架構是指在業務和技術的發展過程中,系統中不同職責的部分被定義在不同的層次,每一層負責的功能更加具體化。三層架構通常包括表示層、業務邏輯層和數據訪問層,層與層之間互相連接、互相協作,構成一個整體,并且層的內部可以被替換成其他可以工作的部分,但對整體的影響不大。

以 Web 應用程序為例,早期是將所有的表示邏輯、業務邏輯和數據訪問邏輯放在一起,這就是一層架構。

后來隨著 java、.NET 等高級語言的發展,提供了越來越方便的數據訪問機制,如 java 的 JDBC 和 .NET 的 ADO.NET。這時數據訪問部分被分離開來,形成了二層架構。

再后來,隨著面向對象設計、企業架構模式等理念的不斷發展,表示邏輯和業務邏輯也被分離開來,形成了現在的三層架構。

三層架構的具體內容如下

表示層:用戶使用應用程序時,看到的、聽見的、輸入的或者交互的部分。

業務邏輯層:根據用戶輸入的信息,進行邏輯計算或者業務處理的部分。

數據訪問層:關注有效地操作原始數據的部分,如將數據存儲到存儲介質(如數據庫、文件系統)及從存儲介質中讀取數據等。

老王對這個解釋非常滿意,作了進一步的補充:

“你看雖然現在程序被分成了三層,但只是邏輯上的分層,并不是物理上的分層。也就是說,對不同層的代碼而言,經過編譯、打包和部署后,所有的代碼最終還是運行在同一個進程中。而這,就是所謂的單塊架構。”

成小胖撓了撓頭:“原來單塊架構是這個意思啊~~”

“嗯。根據你的實際工作經驗,你再總結下單塊架構的優缺點吧。”

平時勤于總結的成小胖很快便列出了單塊架構的優缺點:

優點

1易于開發:

開發方式簡單,IDE 支持好,方便運行和調試。

2易于測試:

所有功能運行在一個進程中,一旦進程啟動,便可以進行系統測試。

3易于部署:

只需要將打好的一個軟件包發布到服務器即可。

4易于水平伸縮:

只需要創建一個服務器節點,配置好運行時環境,再將軟件包發布到新服務器節點即可運行程序(當然也需要采取分發策略保證請求能有效地分發到新節點)。

缺點

1維護成本大:

當應用程序的功能越來越多、團隊越來越大時,溝通成本、管理成本顯著增加。當出現 bug 時,可能引起 bug 的原因組合越來越多,導致分析、定位和修復的成本增加;并且在對全局功能缺乏深度理解的情況下,容易在修復 bug 時引入新的 bug。

2持續交付周期長:

構建和部署時間會隨著功能的增多而增加,任何細微的修改都會觸發部署流水線。

3新人培養周期長:

新成員了解背景、熟悉業務和配置環境的時間越來越長。

4技術選型成本高:

單塊架構傾向于采用統一的技術平臺或方案來解決所有問題,如果后續想引入新的技術或框架,成本和風險都很大。

5可擴展性差:

隨著功能的增加,垂直擴展的成本將會越來越大;而對于水平擴展而言,因為所有代碼都運行在同一個進程,沒辦法做到針對應用程序的部分功能做獨立的擴展。

2

2

老王拍了拍成小胖的肩膀,眼睛瞇成了一條縫:

“小伙子總結的很不錯!既然你已經對目前的單塊架構的優缺點有了很好的理解,那現在咱們就可以開始來學習微服務架構了。”

老王先從網上搜索“微服務架構”關鍵字,出來這么一段話:

微服務架構是一種架構模式,它提倡將單一應用程序劃分成一組小的服務,服務之間互相協調、互相配合,為用戶提供最終價值。每個服務運行在其獨立的進程中,服務于服務間采用輕量級的通信機制互相溝通(通常是基于 HTTP 的 RESTful API)。每個服務都圍繞著具體業務進行構建,并且能夠被獨立地部署到生產環境、類生產環境等。另外,應盡量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建。

成小胖看完了這段話,說:

“看著有點暈,云里霧里的感覺……”

老王嘿嘿一笑:

“莫慌,現在就給你詳細講講微服務架構的特性。”

1. 單一職責

微服務架構中的每個服務,都是具有業務邏輯的,符合高內聚、低耦合原則以及單一職責原則的單元,不同的服務通過“管道”的方式靈活組合,從而構建出龐大的系統。

2. 輕量級通信

服務之間通過輕量級的通信機制實現互通互聯,而所謂的輕量級,通常指語言無關、平臺無關的交互方式。

對于輕量級通信的格式而言,我們熟悉的 XML 和 JSON,它們是語言無關、平臺無關的;對于通信的協議而言,通常基于 HTTP,能讓服務間的通信變得標準化、無狀態化。目前大家熟悉的 REST(Representational State Transfer)是實現服務間互相協作的輕量級通信機制之一。使用輕量級通信機制,可以讓團隊選擇更適合的語言、工具或者平臺來開發服務本身。

3. 獨立性

每個服務在應用交付過程中,獨立地開發、測試和部署。

在單塊架構中所有功能都在同一個代碼庫,功能的開發不具有獨立性;當不同小組完成多個功能后,需要經過集成和回歸測試,測試過程也不具有獨立性;當測試完成后,應用被構建成一個包,如果某個功能存在 bug,將導致整個部署失敗或者回滾。

在微服務架構中,每個服務都是獨立的業務單元,與其他服務高度解耦,只需要改變當前服務本身,就可以完成獨立的開發、測試和部署。

4. 進程隔離

單塊架構中,整個系統運行在同一個進程中,當應用進行部署時,必須停掉當前正在運行的應用,部署完成后再重啟進程,無法做到獨立部署。

有時候我們會將重復的代碼抽取出來封裝成組件,在單塊架構中,組件通常的形態叫做共享庫(如 jar 包或者 DLL),但是當程序運行時,所有組件最終也會被加載到同一進程中運行。

在微服務架構中,應用程序由多個服務組成,每個服務都是高度自治的獨立業務實體,可以運行在獨立的進程中,不同的服務能非常容易地部署到不同的主機上。

理論上所有服務可以部署在同一個服務器節點,但是并不推薦這么做,因為微服務架構的主旨就是高度自治和高度隔離。

“王哥你真厲害,您這么一說我的思維清晰了很多!”成小胖激動的幾乎要叫起來。

“我之前了解過 SOA,好像跟微服務架構的思想很像啊,您能幫我區分一下嗎?”

成小胖追問到。

老王嘿嘿一笑,拿起成小胖手上的A4紙,翻到另外一面畫了個表格:

接著老王又畫了一張圖:

成小胖看了之后說:

“您這么一畫我倒是大概明白了,但是圖里面的 DevOps 這個概念我不懂誒……”

“這個 DevOps 就說來話長了,有時間你自己先去查查資料了解下吧。”

“好的。現在我對微服務架構的概念有了了解,您能再深入剖析下它的本質嗎?”

“好,你可仔細聽好了哈!”

1. 服務作為組件

微服務也可以被認為是一種組件,但是跟傳統組件的區別在于它可以獨立部署,因此它的一個顯著的優勢。另外一個優點是,它在組件與組件之間定義了清晰的、語言無關、平臺無關的規范接口,耦合度低,靈活性非常高。但它的不足之處是,分布式調用嚴重依賴于網絡的可靠性和穩定性。

2. 圍繞業務組織團隊

在單塊架構中,企業一般會根據技能劃分團隊,在這種組織架構下,即便是簡單的需求變更都有可能需要跨團隊協作,溝通成本很高。而在微服務架構中,它提倡以業務為核心,按照業務能力來組織團隊,團隊中的成員具有多樣性的技能。

3. 關注產品而非項目

在單塊架構中,應用基本上是基于“項目模式”構建的,即項目啟動時從不同技能資源池中抽取相關資源組成團隊,項目結束后釋放所有資源。這種情況下團隊成員缺乏主人翁意識和產品成就感。

在微服務架構中,提倡采用“產品模式”構建,即更傾向于讓團隊負責整個服務的生命周期,以便提供更優質的服務。

4. 技術多樣性

微服務架構中,提倡針對不同的業務特征選擇合適的技術方案,有針對性的解決具體業務問題,而不是像單塊架構中采用統一的平臺或技術來解決所有問題。

5. 業務數據獨立

微服務架構提供自主管理其相關的業務數據,這樣可以隨著業務的發展提供數據接口集成,而不是以數據庫的方式同其他服務集成。另外,隨著業務的發展,可以方便地選擇更合的工具管理或者遷移業務數據。

6. 基礎設施自動化

在微服務架構的實踐過程中,對持續交付和部署流水線的要求很高,將促進企業不斷尋找更高效的方式完成基礎設施的自動化及 DevOps 運維能力的提升。

3

聽完成小胖忍不住表達了敬佩之意:

“老司機就是老司機,噢說錯了……架構師就是架構師,總結得這么簡潔又深刻!”

“咳咳,低調低調……”

“聽您講解了這么多,我覺得微服務架構解決了很多當前三層架構的痛點。不過我覺得沒有任何一項技術或架構是完美的。”

“非常正確。進行微服務架構的落地是存在很多挑戰的。”

1. 分布式系統的復雜性

微服務架構是基于分布式的系統,而構建分布式系統必然會帶來額外的開銷。

性能:分布式系統是跨進程、跨網絡的調用,受網絡延遲和帶寬的影響。

可靠性:由于高度依賴于網絡狀況,任何一次的遠程調用都有可能失敗,隨著服務的增多還會出現更多的潛在故障點。因此,如何提高系統的可靠性、降低因網絡引起的故障率,是系統構建的一大挑戰。

異步:異步通信大大增加了功能實現的復雜度,并且伴隨著定位難、調試難等問題。

數據一致性:要保證分布式系統的數據強一致性,成本是非常高的,需要在 C(一致性)A(可用性)P(分區容錯性) 三者之間做出權衡。

2. 運維成本

運維主要包括配置、部署、監控與告警和日志收集四大方面。微服務架構中,每個服務都需要獨立地配置、部署、監控和收集日志,成本呈指數級增長。

3. 自動化部署

在微服務架構中,每個服務都獨立部署,交付周期短且頻率高,人工部署已經無法適應業務的快速變化。因此如何有效地構建自動化部署體系,是微服務面臨的另一個挑戰。

4. DevOps 與組織架構

在微服務架構的實施過程中,開發人員和運維人員的角色發生了變化,開發者將承擔起整個服務的生命周期的責任,包括部署和監控;而運維則更傾向于顧問式的角色,盡早考慮服務如何部署。因此,按需調整組織架構、構建全功能的團隊,也是一個不小的挑戰。

5. 服務間的依賴測試

單塊架構中,通常使用集成測試來驗證依賴是否正常。而在微服務架構中,服務數量眾多,每個服務都是獨立的業務單元,服務主要通過接口進行交互,如何保證依賴的正常,是測試面臨的主要挑戰。

6. 服務間的依賴管理

微服務架構中,服務數量眾多,如何清晰有效地展示服務間的依賴關系也是個不小的挑戰。

“微服務的落地需要經過全面的考察和完善的試驗,并不是每個場景都適合使用微服務架構,也不是每個企業都有能力或者精力去面對這些挑戰。”

老王最后語重心長的說。

“嗯嗯,每件事都有兩面性,最合適的才是最好的!對了王哥,您已經給我上完理論課了,啥時候帶我實踐下唄?”

“你先好好消化完今天講的這些,下次再說吧……”

“好吧,很期待我們的下一次交流……”

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

    關注

    0

    文章

    145

    瀏覽量

    7666

原文標題:成小胖VS老王 「 微服務架構基礎篇 」

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

    微服務與容器技術實踐

    基于微服務架構的技術實踐(點擊下載演講PPT) 普元信息主任架構師顧偉在演講中,分享了他們對微服務架構
    發表于 10-10 10:23 ?1次下載
    <b class='flag-5'>微服務</b>與容器技術<b class='flag-5'>實踐</b>

    微服務架構實踐摘要

    本文主要類容是對微服務架構實踐摘要解析。微服務架構中的 “微” 體現了其核心要素,即服務的微型
    的頭像 發表于 02-07 16:57 ?6303次閱讀
    <b class='flag-5'>微服務</b><b class='flag-5'>架構</b>與<b class='flag-5'>實踐</b>摘要

    微服務優勢_微服務架構的好處與不足

    微服務是用一組小服務的方式來構建一個應用,服務獨立運行在不同的進程中,服務之間通過輕量的通訊機制(如RESTful接口)來交互,并且服務可以
    發表于 02-23 11:24 ?4501次閱讀

    什么是微服務架構_微服務架構的優缺點及應用

    什么是微服務架構 簡單地說,微服務是系統架構上的一種設計風格, 它的主旨是將一個原本獨立的系統拆分成多個小型服務,這些小型
    的頭像 發表于 06-02 10:03 ?1.8w次閱讀
    什么是<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>_<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>的優缺點及應用

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

    小伙伴們知道常用的微服務架構框架有哪些嗎?上回我們介紹了一些常用的微服務架構設計模式,這次我們就來了解一下一些常用的微服務
    的頭像 發表于 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>設計模式

    微服務架構的特點_微服務架構適用場景

     微服務架構是一項在云中部署應用和服務的新技術。
    的頭像 發表于 05-17 17:28 ?5399次閱讀

    微服務軟件架構應用研究綜述

    自2014年,微服務架構概念經Martin Flower提出以來,受到廣泛關注,為更好了解微服務架構風格,本文首先分析、梳理了軟件架構的發展
    發表于 05-26 09:26 ?2次下載

    微服務架構中的服務之間如何互相調用呢?

    微服務架構中,需要調用很多服務才能完成一項功能。服務之間如何互相調用就變成微服務架構中的一個關
    的頭像 發表于 01-31 09:46 ?2457次閱讀

    什么是微服務架構

    在Medium,我們的技術堆棧始于2012年的單片Node.js應用程序。我們已經構建了幾個衛星服務,但我們還沒有制定一個系統地采用微服務架構的策略。隨著系統變得越來越復雜并且團隊不斷發展,我們在2018年初轉向了
    的頭像 發表于 02-24 11:15 ?1542次閱讀
    什么是<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>?

    從分層架構微服務架構介紹(五)

    本文要介紹的是 服務架構 (Service-Based Architecture, SBA )。 SBA 可以看成是單體架構微服務架構
    的頭像 發表于 05-10 17:02 ?1069次閱讀
    從分層<b class='flag-5'>架構</b>到<b class='flag-5'>微服務</b><b class='flag-5'>架構</b>介紹(五)

    springcloud微服務架構

    Spring Cloud是一個開源的微服務架構框架,它提供了一系列工具和組件,用于構建和管理分布式系統中的微服務。它基于Spring框架,旨在通過簡化開發過程和降低系統復雜性來幫助開發人員構建彈性
    的頭像 發表于 11-23 09:24 ?1886次閱讀

    docker微服務架構實戰

    的容器化技術,為微服務架構的實施提供了強大的支持。本文將介紹Docker微服務架構的實戰經驗,包括Docker的概述、微服務
    的頭像 發表于 11-23 09:26 ?813次閱讀

    設計微服務架構的原則

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

    微服務架構與容器云的關系與區別

    微服務架構與容器云密切相關又有所區別。微服務將大型應用拆分為小型、獨立的服務,而容器云基于容器技術,為微服務提供構建、發布和運行的平臺。區別
    的頭像 發表于 10-21 17:28 ?478次閱讀