1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        一張圖,理清微服務(wù)架構(gòu)路線(收藏)

        共 5245字,需瀏覽 11分鐘

         ·

        2022-01-10 10:03




        -? ? ?我為什么選擇微服務(wù)架構(gòu)? ? -


        眾所周知,單體應(yīng)用程序,由于其種種不足,幾乎不支持敏捷方法。如果你想為一個(gè)大型或復(fù)雜的業(yè)務(wù)創(chuàng)建一個(gè)軟件項(xiàng)目,最好從微服務(wù)架構(gòu)開(kāi)始。


        微服務(wù)架構(gòu)是一種靈活的架構(gòu),可以顯著性地提高應(yīng)用程序靈活性、可擴(kuò)展性等。



        -? ? ?微服務(wù)架構(gòu)路線? ? -


        據(jù)我了解很多開(kāi)發(fā)者,想知道他們應(yīng)該如何開(kāi)始微服務(wù)架構(gòu)旅程,雖然有成千上萬(wàn)的資源可以使用,但是資源到處分散。我決定通過(guò)為微服務(wù)架構(gòu)學(xué)習(xí)定義路線圖,使這段旅程更加清晰。



        -? ? ?基本思路? ? -


        基于微服務(wù)的架構(gòu)通常有幾個(gè)獨(dú)立的單元,它們協(xié)同工作以接收和處理各種請(qǐng)求。這個(gè)復(fù)雜的某些部分可以是插件,這意味著在需要的情況下,你可以在不干擾應(yīng)用程序的整體工作情況下, 新增一個(gè)新插件或刪除一個(gè)插件。


        例如,如果你決定實(shí)現(xiàn)一個(gè)微服務(wù)架構(gòu),你應(yīng)該熟悉應(yīng)用程序生命周期中的各種關(guān)注點(diǎn),如持久化、日志記錄、監(jiān)控、負(fù)載均衡、緩存等,此外你還應(yīng)該知道哪些哪些工具比較好或哪些堆棧更適合你的應(yīng)用程序。


        本文,我將從以下幾個(gè)方面來(lái)介紹各種關(guān)注點(diǎn)

        1. 它是什么?

        2. 我為什么要使用它?

        3. 哪些工具比較好?


        請(qǐng)注意,我在哪些工具比較好部分提到了兩三個(gè)哪些工具比較好,當(dāng)然,我們還有很多其他哪些工具比較好,選擇這些哪些工具比較好的標(biāo)準(zhǔn)是業(yè)務(wù)需求,受歡迎程度、性能、開(kāi)源以及更新頻率。


        再次注意,我們還有基于云的服務(wù),這不在本文討論的范圍內(nèi)。



        本文,我用上圖作為架構(gòu)圖示例。這個(gè)圖涉及到大部分微服務(wù)架構(gòu)組件,雖然不是也很全面,但是微服務(wù)架構(gòu)的標(biāo)準(zhǔn)模型。


        本文將會(huì)介紹微服務(wù)架構(gòu)的關(guān)注點(diǎn)有:

        • Docker

        • 容器編排

        • Docker容器管理

        • API網(wǎng)關(guān)

        • 負(fù)載均衡

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

        • 事件總線

        • 日志記錄

        • 監(jiān)控和警報(bào)

        • 分布式追蹤

        • 數(shù)據(jù)持久化

        • 緩存

        • 云供應(yīng)商



        -? ? ?Docker? ? -


        它是什么:


        Docker 是一個(gè)開(kāi)源平臺(tái),用于容器化你的應(yīng)用程序,其中包含你的應(yīng)用程序在各種環(huán)境中運(yùn)行所需的類庫(kù)和依賴項(xiàng)。在 Docker 的幫助下,開(kāi)發(fā)團(tuán)隊(duì)能夠?qū)?yīng)用程序打包到容器中。


        我為什么要使用它:


        實(shí)際上,Docker 是容器化應(yīng)用程序的哪些工具比較好之一,你也可以在不使用 Docker 的情況下創(chuàng)建容器,Docker 的真正好處是使這個(gè)過(guò)程更容易、更安全、更簡(jiǎn)單。


        哪些工具比較好:Docker



        -? ? ?容器編排? ? -


        它是什么:

        在容器化應(yīng)用程序后,你將需要一些哪些工具比較好來(lái)管理容器化應(yīng)用程序,以執(zhí)行一些手動(dòng)和自動(dòng)操作,例如水平擴(kuò)展。


        我為什么要使用它:

        這些哪些工具比較好為你的應(yīng)用程序管理提供一些服務(wù),例如自動(dòng)負(fù)載均衡,保證服務(wù)的高可用性。


        這種服務(wù)是通過(guò)定義多個(gè)管理器節(jié)點(diǎn)來(lái)完成的,如果一個(gè)節(jié)點(diǎn)管理器出現(xiàn)任何故障,其他管理器可以保持應(yīng)用程序服務(wù)可用。


        哪些工具比較好:

        Kubernetes or K8s,Docker Swarm



        -? ? ?Docker 容器管理? ? -


        它是什么:

        管理 Docker 環(huán)境、配置、安全等。


        我為什么要使用它:

        為用戶提供了一個(gè)基于 GUI 的Docker 容器管理,可以使他們不必處理不舒服的 CLI。這些工具也為開(kāi)發(fā)人員提供了豐富的 UI 來(lái)構(gòu)建和發(fā)布他們的鏡像,還可以通過(guò)提供簡(jiǎn)化的用戶界面來(lái)更輕松地執(zhí)行一些操作任務(wù),例如服務(wù)水平擴(kuò)展。


        哪些工具比較好:

        Portainer , DockStation, Kitematic,Rancher



        -? ? ?API網(wǎng)關(guān)? ? -


        它是什么:

        API 網(wǎng)關(guān)可以被視為一種充當(dāng)你的應(yīng)用程序服務(wù)和不同客戶端之間的中間件。API 網(wǎng)關(guān)可以管理許多事情,例如:

        Routing :網(wǎng)關(guān)接收所有 API 請(qǐng)求并將它們轉(zhuǎn)發(fā)到目標(biāo)服務(wù)。

        Logging :你將能夠在一處記錄所有請(qǐng)求。

        Authorization: 檢查你作為用戶是否有資格訪問(wèn)該服務(wù),如果沒(méi)有,可以拒絕該請(qǐng)求

        Performance profiling:你可以估計(jì)每個(gè)請(qǐng)求的執(zhí)行時(shí)間并檢查你的應(yīng)用程序瓶頸。

        Caching:通過(guò)在網(wǎng)關(guān)級(jí)別處理緩存,你將消除服務(wù)上的大量流量。


        事實(shí)上,它是作為一個(gè)反向代理工作的,客戶端只需要知道你的網(wǎng)關(guān),應(yīng)用服務(wù)就可以隱藏起來(lái),不直接向其他系統(tǒng)暴露。


        我為什么要使用它:

        如果沒(méi)有 API 網(wǎng)關(guān),你可能需要在每個(gè)服務(wù)中做一些橫切關(guān)注點(diǎn),例如,如果你想記錄服務(wù)的請(qǐng)求和響應(yīng)。此外,如果你的應(yīng)用程序由多個(gè)服務(wù)組成,你的客戶端需要知道每個(gè)服務(wù)地址,并且在更改服務(wù)地址的情況下,應(yīng)該更新多個(gè)地方。


        哪些工具比較好:

        Kong,Ocelot



        -? ? ?負(fù)載均衡? ? -


        它是什么:

        我們選擇微服務(wù)架構(gòu)最重要的原因是可擴(kuò)展性,這意味著我們將能夠通過(guò)運(yùn)行更多服務(wù)實(shí)例來(lái)處理更多請(qǐng)求,但問(wèn)題是,哪個(gè)實(shí)例應(yīng)該接收請(qǐng)求,或客戶端如何知道哪個(gè)服務(wù)實(shí)例應(yīng)該處理請(qǐng)求?


        這些問(wèn)題的答案是負(fù)載均衡。負(fù)載均衡是高可用網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的關(guān)鍵組件,通常用于將工作負(fù)載分布到多個(gè)服務(wù)器來(lái)提高網(wǎng)站、應(yīng)用、數(shù)據(jù)庫(kù)或其他服務(wù)的性能和可靠性。


        我為什么要使用它:

        為了擴(kuò)展你的獨(dú)立服務(wù),你需要運(yùn)行多個(gè)服務(wù)實(shí)例。使用負(fù)載均衡器,客戶端不需要知道服務(wù)的正確實(shí)例。


        哪些工具比較好:

        Traefik , NGINX,Seesaw



        -? ? ?服務(wù)發(fā)現(xiàn)? ? -


        它是什么:

        隨著你的應(yīng)用服務(wù)的數(shù)量越來(lái)越多,服務(wù)需要知道彼此的服務(wù)實(shí)例地址,但是在有很多服務(wù)的大型應(yīng)用中,這是無(wú)法處理的。因此我們需要服務(wù)發(fā)現(xiàn),它負(fù)責(zé)提供應(yīng)用程序中所有組件的地址,它們可以輕松地向服務(wù)發(fā)現(xiàn)系統(tǒng)發(fā)送請(qǐng)求并獲取可用的服務(wù)實(shí)例地址。


        我為什么要使用它:

        當(dāng)你的應(yīng)用程序中可以有多個(gè)服務(wù)時(shí),服務(wù)發(fā)現(xiàn)對(duì)于你的應(yīng)用程序來(lái)說(shuō)是必不可少的。你的應(yīng)用服務(wù)不需要知道每個(gè)服務(wù)實(shí)例地址,這意味著服務(wù)發(fā)現(xiàn)為你鋪平了道路。


        哪些工具比較好:

        Consul,Zookeeper,Eureka,etcd和Keepalived



        -? ? ?事件總線? ? -


        它是什么:

        在微服務(wù)架構(gòu)模式中,你將使用兩種不同類型的通信,同步通信以及異步通信。同步通信是指服務(wù)之間通過(guò) HTTP 或 GRPC 相互調(diào)用。異步通信意味著服務(wù)通過(guò)消息總線或事件總線相互交互,這意味著服務(wù)之間沒(méi)有直接連接。


        你的架構(gòu)可以同時(shí)使用兩種通信方式,例如在在線商店示例中,你可以在訂單注冊(cè)時(shí)發(fā)送消息,并且訂閱了特定頻道的服務(wù)將收到該消息。但有時(shí)你可能需要一些實(shí)時(shí)的查詢,例如,你需要知道一個(gè)物品的數(shù)量,你可能會(huì)在服務(wù)之間使用 GRPC 或 HTTP 調(diào)用來(lái)獲取響應(yīng)。


        我為什么要使用它:

        如果你想要一個(gè)包含多個(gè)服務(wù)的可擴(kuò)展應(yīng)用程序,你將遵循的原則之一是創(chuàng)建松散耦合的服務(wù),這些服務(wù)通過(guò)事件總線相互交互。此外,如果你需要?jiǎng)?chuàng)建一個(gè)能夠插入新服務(wù)以接收一系列特定消息的應(yīng)用程序,則需要使用事件總線。


        哪些工具比較好:

        RabbitMQ,Kafka



        -? ? ?日志記錄? ? -


        它是什么:

        使用微服務(wù)架構(gòu)模式時(shí),最好將服務(wù)日志集中起來(lái)。這些日志將用于調(diào)試問(wèn)題或根據(jù)其類型聚合日志以供分析使用。


        我為什么要使用它:

        系統(tǒng)調(diào)試時(shí),如果沒(méi)有提前集中在一個(gè)地方收集服務(wù)日志,你可能會(huì)遇到困難。你還可以將與特定請(qǐng)求相關(guān)的日志與唯一的相關(guān) ID 關(guān)聯(lián)。這意味著與請(qǐng)求相關(guān)的不同服務(wù)中的所有日志都可以通過(guò)此關(guān)聯(lián) ID 訪問(wèn)。


        哪些工具比較好:

        Elastic Logstash



        -? ? ?監(jiān)控和警報(bào)? ? -


        它是什么:

        在微服務(wù)架構(gòu)中,如果你想要一個(gè)可靠的應(yīng)用程序或服務(wù),你必須監(jiān)控應(yīng)用程序的功能、性能、通信和任何其他方面,以實(shí)現(xiàn)一個(gè)負(fù)責(zé)任的應(yīng)用程序。


        我為什么要使用它:

        你需要監(jiān)控整體功能和服務(wù)健康狀況,還需要監(jiān)控性能瓶頸,并準(zhǔn)備解決故障的計(jì)劃。通過(guò)在關(guān)鍵點(diǎn)定義服務(wù)的早期警報(bào)來(lái)減少服務(wù)的停機(jī)時(shí)間,從而優(yōu)化用戶體驗(yàn)。當(dāng)負(fù)載較重時(shí)等,可以監(jiān)控服務(wù)的整體資源消耗。


        哪些工具比較好:

        Prometheus , Kibana,Graphana



        -? ? ?分布式追蹤? ? -


        它是什么:

        調(diào)試始終是開(kāi)發(fā)人員最關(guān)心的問(wèn)題之一,因?yàn)槟愣加懈櫥蛘{(diào)試單體引用程序的經(jīng)驗(yàn)。那是非常直接和容易,但是在微服務(wù)架構(gòu)上,因?yàn)橐粋€(gè)請(qǐng)求可能會(huì)通過(guò)不同的服務(wù),這使得調(diào)試和跟蹤變得困難,因?yàn)榉?wù)不在一個(gè)地方,所以分布式追蹤工具將會(huì)有所幫助。


        我為什么要使用它:

        如果沒(méi)有分布式跟蹤哪些工具比較好,通過(guò)不同的服務(wù)跟蹤你的請(qǐng)求會(huì)令人沮喪或不可能。你可以借助用于演示請(qǐng)求流的豐富 UI 輕松跟蹤請(qǐng)求和事件。


        哪些工具比較好:

        OpenTelemetry , Jeager,Zipkin



        -? ? ?數(shù)據(jù)持久化? ? -


        它是什么:

        在大多數(shù)系統(tǒng)中,我們需要持久化數(shù)據(jù),將應(yīng)用程序的數(shù)據(jù)寫(xiě)入具有不同結(jié)構(gòu)的物理文件中,以便數(shù)據(jù)用于進(jìn)一步的處理或報(bào)告。


        我為什么要使用它:

        在單體應(yīng)用程序中,我們?cè)?jīng)有一種或兩種不同的持久性類型,大多數(shù)單體應(yīng)用程序使用關(guān)系數(shù)據(jù)庫(kù),如 SQL Server、Oracle、MySQL。但是在微服務(wù)架構(gòu)中,我們應(yīng)該遵循“DataBase Per Service”模式,這意味著保持每個(gè)微服務(wù)的持久數(shù)據(jù)對(duì)該服務(wù)是私有的,并且只能通過(guò)其 API 訪問(wèn)。


        對(duì)于不同的用途和場(chǎng)景,你將擁有不同的數(shù)據(jù)庫(kù)。例如,數(shù)據(jù)展示服務(wù)可能會(huì)使用像 ElasticSearch 或 MongoDB 這樣的 NoSQL 數(shù)據(jù)庫(kù),因?yàn)樗鼈兪褂梦臋n基礎(chǔ)結(jié)構(gòu),這意味著這些數(shù)據(jù)庫(kù)中持久化數(shù)據(jù)的結(jié)構(gòu)與關(guān)系數(shù)據(jù)庫(kù)不同,更適用于具有讀多寫(xiě)少的服務(wù)。


        另一方面,在某些微服務(wù)中,你可能需要 Oracle 或 SQL SERVER 等關(guān)系數(shù)據(jù)庫(kù),或者你可能還需要一些支持圖結(jié)構(gòu)或鍵值結(jié)構(gòu)的數(shù)據(jù)庫(kù)。


        所以,在微服務(wù)架構(gòu)中,根據(jù)服務(wù)的使命,你會(huì)需要不同類型的數(shù)據(jù)庫(kù)。


        哪些工具比較好:

        關(guān)系數(shù)據(jù)庫(kù)或 RDBMS : PostgreSQL, MySQL, SQL SERVRE, Oracle

        NoSQL 數(shù)據(jù)庫(kù) : MongoDB, Cassandra,Elasticsearch



        -? ? ?緩存? ? -


        它是什么:

        緩存減少了微服務(wù)架構(gòu)的服務(wù)到服務(wù)通信的延遲。緩存是高速數(shù)據(jù)存儲(chǔ)層。當(dāng)從緩存中請(qǐng)求數(shù)據(jù)時(shí),它的速度比訪問(wèn)硬盤中的數(shù)據(jù)要快。


        我為什么要使用它:

        在微服務(wù)架構(gòu)中,有許多策略可以通過(guò)這些方式實(shí)現(xiàn)緩存。考慮以下:

        1:嵌入式緩存(分布式和非分布式)

        2:客戶端-服務(wù)器緩存(分布式)

        3:反向代理緩存(Sidecar)


        為了減少延遲,可以在不同的層中實(shí)現(xiàn)緩存。此外,你還可以實(shí)現(xiàn)分布式緩存,它可以被多個(gè)微服務(wù)訪問(wèn)。它們還有不同的用途,比如限流,限流的目的是通過(guò)對(duì)并發(fā)訪問(wèn)/請(qǐng)求進(jìn)行限速或者一個(gè)時(shí)間窗口內(nèi)的的請(qǐng)求進(jìn)行限速來(lái)保護(hù)系統(tǒng),一旦達(dá)到限制速率則可以拒絕服務(wù)。


        哪些工具比較好

        Redis (Remote Dictionary Server), Apache Ignite,Hazelcast IMDG



        -? ? ?云供應(yīng)商? ? -


        它是什么:

        云服務(wù)提供商是一個(gè)第三方公司,提供基于云的平臺(tái),基礎(chǔ)設(shè)施,應(yīng)用程序或存儲(chǔ)服務(wù)。就像房主為電力或天然氣等公用事業(yè)付費(fèi)一樣,公司通常只需根據(jù)業(yè)務(wù)需求為他們使用的云服務(wù)數(shù)量付費(fèi)。


        云提供商最重要的類別:

        • 軟件即服務(wù) (SaaS)。

        • 平臺(tái)即服務(wù) (PaaS)。

        • 基礎(chǔ)設(shè)施即服務(wù) (IaaS)。



        -? ? ?我為什么要使用它? ? -


        使用云計(jì)算服務(wù)的一個(gè)好處是,公司可以避免搭建和維護(hù)自己的 IT 基礎(chǔ)設(shè)施的前期成本和復(fù)雜性,而只需在使用時(shí)為所用的東西付費(fèi)。今天,公司可以租用從應(yīng)用程序到存儲(chǔ)的任何東西,而不是擁有自己的計(jì)算基礎(chǔ)設(shè)施或數(shù)據(jù)中心。


        哪些工具比較好:

        Amazon Web Services (AWS), Microsoft Azure, Google Cloud,Alibaba Cloud



        -? ? ?總結(jié)? ? -


        在本文中,我試圖展示一個(gè)與微服務(wù)架構(gòu)模式相關(guān)的路線圖。如果你想從頭開(kāi)始實(shí)現(xiàn)微服務(wù)架構(gòu)或?qū)误w架構(gòu)遷移到微服務(wù)架構(gòu),你將需要了解這些概念。


        除了這些概念之外,我們還有其他概念,如服務(wù)網(wǎng)格、緩存、持久性,它們可能是本路線圖的一部分,但為了簡(jiǎn)單起見(jiàn),我故意沒(méi)有提及它們。

        作者:王延飛

        來(lái)源www.kubernetes.org.cn/9711.html




        轉(zhuǎn)載申明:轉(zhuǎn)載本號(hào)文章請(qǐng)注明作者來(lái)源,本號(hào)發(fā)布文章若存在版權(quán)等問(wèn)題,請(qǐng)留言聯(lián)系處理,謝謝。


        推薦閱讀

        更多架構(gòu)相關(guān)技術(shù)知識(shí)總結(jié)請(qǐng)參考“架構(gòu)師全店鋪技術(shù)資料打包”相關(guān)電子書(shū)(37本技術(shù)資料打包匯總詳情可通過(guò)“閱讀原文”獲取)。

        全店內(nèi)容持續(xù)更新,現(xiàn)下單“全店鋪技術(shù)資料打包(全)”,后續(xù)可享全店內(nèi)容更新“免費(fèi)”贈(zèng)閱,價(jià)格僅收198元(原總價(jià)350元)。



        溫馨提示:

        掃描二維碼關(guān)注公眾號(hào),點(diǎn)擊閱讀原文鏈接獲取架構(gòu)師技術(shù)全店資料打包匯總(全)電子書(shū)資料詳情。


        瀏覽 86
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            《乳色吐息》免费 | 爱啪啪网站| 亚洲天堂色图 | gay男男屁股眼扒开来露出来 | 人人看大香蕉 | 国产靠逼网站 | 少妇高潮a8198v在线观看 | 男生下面插女生下面 | 尤物视频网址 | 宅男噜噜噜66国产免费观看 |