<kbd id="5sdj3"></kbd>
<th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>

    淺談服務(wù)治理與微服務(wù)

    共 3249字,需瀏覽 7分鐘

     ·

    2022-07-23 16:44

    作者:Heaven-Wang
    來源:blog.csdn.net/suifeng3051

    近期都在談微服務(wù),本人也正在做相關(guān)的工作,應(yīng)領(lǐng)導(dǎo)要求做了一個微服務(wù)的分享,本篇文章主要來源于分享的PPT,所以有些簡單,有問題可以在下面留言,大家 一起討論。

    本篇文章先簡單介紹了互聯(lián)網(wǎng)架構(gòu)的演變,進(jìn)而介紹了服務(wù)化,最后再介紹微服務(wù),微服務(wù)是服務(wù)治理的升級也是互聯(lián)網(wǎng)架構(gòu)的進(jìn)一步延伸。

    互聯(lián)網(wǎng)架構(gòu)演變

    一體架構(gòu)

    在計算機軟件發(fā)展早期,一般桌面軟件都是采用這種架構(gòu),不管是界面還是業(yè)務(wù)處理還是數(shù)據(jù)處理都放到一個包中。這種其實談不上架構(gòu),但也可以說是很好的架構(gòu),因為它足夠簡單。

    mvc架構(gòu)

    但隨著瀏覽器的出現(xiàn)便產(chǎn)生了web應(yīng)用,web應(yīng)用的特點是界面部分是顯示在瀏覽器中,服務(wù)處理是在服務(wù)容器中的,頁面顯示一般用css+js+html技術(shù)來處理,而后端可以用java、php等語言,這就產(chǎn)生了前后端分離。對于web系統(tǒng),一體架構(gòu)難以滿足前后端分離的開發(fā)需求,因而便產(chǎn)生了MVC架構(gòu)。


    MVC才算的上真正意義上的架構(gòu),因為它除了解決了前后端分離問題,還引入了一種全新的開發(fā)模式,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,使得整個應(yīng)用層次更加分明,而且各個層次之間不但減低了耦合性,還提高了各個層次的可重用性。


    但隨著應(yīng)用規(guī)模的不斷擴大,應(yīng)用模塊不斷增加,整個應(yīng)用也顯得越來越臃腫,維護(hù)起來也更加困難,因此便又產(chǎn)生了多應(yīng)用架構(gòu)。

    多應(yīng)用架構(gòu)

    多應(yīng)用架構(gòu)很簡單,就是把原來的應(yīng)用按照業(yè)務(wù)特點拆分成多個應(yīng)用。比如一個大型電商系統(tǒng)可能包含用戶系統(tǒng)、商品系統(tǒng)、訂單系統(tǒng)、評價系統(tǒng)等等,我們可以把他們獨立出來形成一個個單獨的應(yīng)用。多應(yīng)用架構(gòu)的特點是應(yīng)用之間各自獨立 ,不相互調(diào)用。


    多應(yīng)用雖然解決了應(yīng)用臃腫問題,但應(yīng)用之間相互獨立,有些共同的業(yè)務(wù)或代碼無法復(fù)用。


    分布式架構(gòu)

    對于一個大型的互聯(lián)網(wǎng)系統(tǒng),一般會包含多個應(yīng)用,而且應(yīng)用之間往往還存在共同的業(yè)務(wù),并且應(yīng)用之間還存在調(diào)用關(guān)系。除此之外 ,對于大型的互聯(lián)網(wǎng)系統(tǒng)還有一些其它的挑戰(zhàn),比如如何應(yīng)對急劇增長的用戶,如何管理好研發(fā)團(tuán)隊快速迭代產(chǎn)品研發(fā),如何保持產(chǎn)品升級更加穩(wěn)定等等 。

    因此,為了使業(yè)務(wù)得到很好的復(fù)用,模塊更加容易拓展和維護(hù),我們希望業(yè)務(wù)與應(yīng)用分離,某個業(yè)務(wù)不再屬于一個應(yīng)用,而是作為一個獨立的服務(wù)單獨進(jìn)行維護(hù)。應(yīng)用本身不再是一個臃腫的模塊堆積,而是由一個個模塊化的服務(wù)組件組合而成。

    服務(wù)化

    服務(wù)化的特點

    上面介紹的分布式架構(gòu)即服務(wù)化。我們再總結(jié)一下,服務(wù)化主要有如下特點:

    • 應(yīng)用按業(yè)務(wù)拆分成服務(wù)

    • 各個服務(wù)均可獨立部署

    • 服務(wù)可被多個應(yīng)用共享

    • 服務(wù)之間可以通信

    服務(wù)化的好處

    那么企業(yè)采用服務(wù)化有哪些好處呢?

    • 架構(gòu)上系統(tǒng)更加清晰

    • 核心模塊穩(wěn)定,以服務(wù)組件為單位進(jìn)行升級,避免了頻繁發(fā)布帶來的風(fēng)險

    • 開發(fā)管理方便

    • 單獨團(tuán)隊維護(hù)、工作分明,職責(zé)清晰

    • 業(yè)務(wù)復(fù)用、代碼復(fù)用

    • 非常容易拓展

    服務(wù)化實現(xiàn)方式

    如果要實現(xiàn)服務(wù)化的話,最常用的方式就是利用RPC框架。因為服務(wù)組件一般分布在不同的服務(wù)器上,所以要實現(xiàn)服務(wù)化需要解決的第一個問題就是RPC遠(yuǎn)程服務(wù)調(diào)用。類似于RPC方案有很多,比如:

    • Java RMI

    • WebService

    • Hessian

    • Http

    • Thrift

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

    上面提到要實現(xiàn)服務(wù)化首先需要解決遠(yuǎn)程服務(wù)調(diào)用問題,除此之外,還有很多其他問題需要解決。

    • 服務(wù)越來越多,配置管理復(fù)雜

    • 服務(wù)間依賴關(guān)系復(fù)雜

    • 服務(wù)之間的負(fù)載均衡

    • 服務(wù)的拓展

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

    • 服務(wù)降級

    • 服務(wù)鑒權(quán)

    • 服務(wù)上線與下線

    • 服務(wù)文檔

    服務(wù)治理

    上面提到了服務(wù)化,其實要想服務(wù)化,服務(wù)治理是關(guān)鍵。那么有沒有好的服務(wù)治理方案呢?答案是有的,而且很多人都在用這個框架,他就是-dubbo。dubbo就是一個帶有服務(wù)治理功能的RPC框架。


    dubbo提供了一套較為完整的服務(wù)治理方案,所以企業(yè)如果要實現(xiàn)服務(wù)化的話,dubbo 是很好的一個選擇。這里簡單介紹一下dubbo服務(wù)治理相關(guān)方案。


    服務(wù)發(fā)現(xiàn)注冊

    服務(wù)治理領(lǐng)域最重要的問題就是服務(wù)發(fā)現(xiàn)與注冊。dubbo中引入了一個注冊中心的概念,服務(wù)的注冊與發(fā)現(xiàn)主要就依賴這個服務(wù)中心。


    dubbo注冊中心服務(wù)注冊發(fā)現(xiàn)的具體過程:
    • 服務(wù)提供者啟動,向注冊中心注冊自己提供的服務(wù)

    • 消費者啟動,向注冊中心訂閱自己需要的服務(wù)

    • 注冊中心返回服務(wù)提供者的列表給消費者

    • 消費者從服務(wù)提供者列表中,按照軟負(fù)載均衡算法,選擇一臺發(fā)起請求

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

    集群容錯

    負(fù)載均衡

    • Random Loadbalance

    • RoundRobin

    • LeastActive

    • ConsistentHash

    dubbo服務(wù)治理優(yōu)勢

    • 注冊中心只負(fù)責(zé)注冊查找,不負(fù)責(zé)請求轉(zhuǎn)發(fā),壓力小

    • 注冊中心宕機影響消費者,消費者本地緩存服務(wù)地址列表

    • 注冊中心對等集群,宕掉一臺自動切換到另外 一臺

    • 服務(wù)提供者無狀態(tài),可動態(tài)部署,注冊中心負(fù)責(zé)推送

    • 統(tǒng)計無壓力,本地內(nèi)存中累計次數(shù),每分鐘發(fā)送注冊中心

    • 消費者調(diào)用服務(wù)者,自動軟負(fù)載均衡

    • 通過服務(wù)中心可追蹤依賴關(guān)系

    • 監(jiān)控中心為擴容和降級提供依據(jù)

    • 可啟用acl機制進(jìn)行鑒權(quán)

    • 與Spring整合,接入簡單松耦合

    • 多種序列化協(xié)議支持

    dubbo的不足

    • 消費者仍需要依賴配置中心

    • 消費者仍需要依賴jar包配置provider

    • 提供者文檔管理功能缺失

    • 無統(tǒng)一入口

    • 不支持OAuth2.0

    • 內(nèi)部鑒權(quán)不方便管理

    • 無外部應(yīng)用鑒權(quán)

    • 接口基本裸奔,無法直接對外暴露服務(wù)

    • IT治理不方便

    微服務(wù)

    現(xiàn)在很多人都在談微服務(wù),那么到底什么是微服務(wù)呢?這里談?wù)勎覍ξ⒎?wù)的理解。

    微服務(wù)有兩個核心:

    • 微:服務(wù)的粒度要細(xì),即服務(wù)要細(xì)化到API

    • 服務(wù):提供好服務(wù),要讓用戶感到好用(要做到這一點很不容易)

    上面兩個核心總結(jié)起來,可以用下面這幅圖表示:


    從上面這幅圖看出,微服務(wù)特別簡單(好的架構(gòu)就應(yīng)該簡單),我們把服務(wù)再拆分成一個個API,API是一個完整的功能。然后我們把API扔到一個“云上”,然后用戶就可以到“云上”獲取所有API的服務(wù),這個“云”保證能提供好的服務(wù)。


    我們可以看到,有了微服務(wù)之后,服務(wù)對用戶來說變得特別簡單,而且上面dubbo的不足之處在微服務(wù)這里都解決了。使用者不再需要依賴任何jar包,不再需要去注冊中心查找服務(wù),不再去做鑒權(quán)處理,不用擔(dān)心服務(wù)掛掉,不用擔(dān)心不會使用服務(wù),所有的問題這個“云”都解決了。這也是微服務(wù)的核心之一,提供好服務(wù)。

    說到這里,大家就應(yīng)該大體知道該怎么做微服務(wù)了,圖中的“云”是關(guān)鍵。下面我們就慢慢撥開這朵云。

    微服務(wù)的實現(xiàn)


    微服務(wù)的關(guān)鍵是服務(wù)網(wǎng)關(guān),所以,上面提到的“云”就是服務(wù)網(wǎng)關(guān)。要做微服務(wù),我們先定義一下微服務(wù)需要具備的特點。


    微服務(wù)的特點

    服務(wù)需要再細(xì)化成API(服務(wù)接口——>服務(wù)API)

    • 每個服務(wù)由一組API組成

    • 以API形式對外提供統(tǒng)一格式的服務(wù)

    • 使用者無需任何配置,直接調(diào)用(http)

    • 完整的API文檔

    • API服務(wù)安全可靠穩(wěn)定

    微服務(wù)要解決的問題

    上面提到了,dubbo還存在一些問題 ,其實dubbo存在的問題 就是 微服務(wù)要解決的問題,這里 再總結(jié)一下。當(dāng)然,dubbo和微服務(wù)的側(cè)重點不一樣,dubbo側(cè)重于內(nèi)部接口之間的RPC,而微服務(wù)則側(cè)重于對外提供服務(wù)。

    • 統(tǒng)一入口

    • 安全控制:防刷限流

    • 統(tǒng)一鑒權(quán):應(yīng)用鑒權(quán)、用戶鑒權(quán)、OAuth鑒權(quán)、ACL

    • 協(xié)議轉(zhuǎn)換:http、dubbo、Protobuf

    • API配置管理

    • API上線、下線

    • API與服務(wù)接口映射

    • 監(jiān)控與報警

    • 整體架構(gòu)的可拓展、高并發(fā)、分布式

    • 服務(wù)容器自動收縮、擴容

    實現(xiàn)方案

    • 負(fù)載均衡層:nginx/lvs/F5

    • 微服務(wù)層

      • 高性能服務(wù)網(wǎng)關(guān)

      • 統(tǒng)一入口、API配置管理、分流鑒權(quán)、服務(wù)監(jiān)控、協(xié)議轉(zhuǎn)換

      • API映射、OAuth2.0、API文檔管理

      • 分布式、可拓展

    • 服務(wù)治理層

      • 成熟的服務(wù)治理框架dubbo

      • MQ服務(wù)之間解耦

    • 彈性云

      • 服務(wù)docker化

      • 基于訪問壓力的實時集群調(diào)度與管理

    彈性云

    這里簡單介紹一下彈性云的概念,微服務(wù)要想提供好服務(wù),保證API不能掛掉并且有好的性能,需要很高的運維要求。這里的彈性云便是自動化運維解決方案,對訪問壓力進(jìn)行監(jiān)控,根據(jù)監(jiān)控解決調(diào)度應(yīng)用的發(fā)布和回收。


    瀏覽 58
    點贊
    評論
    收藏
    分享

    手機掃一掃分享

    分享
    舉報
    評論
    圖片
    表情
    推薦
    點贊
    評論
    收藏
    分享

    手機掃一掃分享

    分享
    舉報

    <kbd id="5sdj3"></kbd>
    <th id="5sdj3"></th>

  • <dd id="5sdj3"><form id="5sdj3"></form></dd>
    <td id="5sdj3"><form id="5sdj3"><big id="5sdj3"></big></form></td><del id="5sdj3"></del>

  • <dd id="5sdj3"></dd>
    <dfn id="5sdj3"></dfn>
  • <th id="5sdj3"></th>
    <tfoot id="5sdj3"><menuitem id="5sdj3"></menuitem></tfoot>

  • <td id="5sdj3"><form id="5sdj3"><menu id="5sdj3"></menu></form></td>
  • <kbd id="5sdj3"><form id="5sdj3"></form></kbd>
    热无码视频一区 | 在线观看视频免费无码 | 91麻豆精品国产91久久久熟女 | 中文字幕第一页精品 | 亚洲经点性视频 |