什么是微服務架構?來看看從業(yè)10年的架構師是怎么回答的吧

1 基于Consul的服務注冊與發(fā)現(xiàn)

Consul是HashiCorp公司推出的開源工具,用于實現(xiàn)分布式系統(tǒng)的服務發(fā)現(xiàn)與配置。與其他分布式服務注冊與發(fā)現(xiàn)的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一站式”,內置了服務注冊與發(fā)現(xiàn)框 架、分布一致性協(xié)議實現(xiàn)、健康檢查、Key/Value存儲、多數(shù)據(jù)中心方案,不再需要依賴其他工具(比如ZooKeeper等),使用起來也較 為簡單。

Consul用Golang實現(xiàn),因此具有天然可移植性(支持Linux、windows和Mac OS X);安裝包僅包含一個可執(zhí)行文件,方便部署,與Docker等輕量級容器可無縫配合

2 基于Ocelot實現(xiàn)API網關服務

Ocelot是一個使用.NET Core平臺上的一個API Gateway,這個項目的目標是在.NET上面運行微服務架構。Ocelot框架內部集成了IdentityServer(身份驗證)和Consul(服務注冊發(fā)現(xiàn)),還引入了Polly來處理進行故障處理。目前,騰訊和微軟是Ocelot在官網貼出來的客戶。

3 基于Polly+AspectCore實現(xiàn)熔斷與降級機制

Polly是一個被.NET基金會認可的彈性和瞬態(tài)故障處理庫,允許我們以非常順暢和線程安全的方式來執(zhí)諸如行重試,斷路,超時,故障恢復等策略,其主要功能如下:

功能1:重試(Retry)

功能2:斷路器(Circuit-Breaker)

功能3:超時檢測(Timeout)

功能4:緩存(Cache)

功能5:降級(Fallback)

Polly的策略主要由“故障”和“動作”兩個部分組成,“故障”可以包括異常、超時等情況,“動作”則包括Fallback(降級)、重試(Retry)、熔斷(Circuit-Breaker)等。策略則用來執(zhí)行業(yè)務代碼,當業(yè)務代碼出現(xiàn)了“故障”中的情況時就開始執(zhí)行“動作”。

4 基于IdentityServer建立授權與驗證服務

IdentityServer4(這里只使用版本號為4)是一個基于OpenID Connect和OAuth 2.0的針對http://ASP.NETCore 2.0的框架。IdentityServer是將規(guī)范兼容的OpenID Connect和OAuth 2.0終結點添加到任意http://ASP.NETCore應用程序的中間件。通常,你構建(或重新使用)包含登錄和注銷頁面的應用程序,IdentityServer中間件會向其添加必要的協(xié)議頭,以便客戶端應用程序可以使用這些標準協(xié)議與其對話。

5 基于Exceptionless實現(xiàn)分布式日志記錄

Exceptionless 是一個開源的實時的日志收集框架,它可以應用在基于http://ASP.NET,http://ASP.NETCore,Web API,Web Forms,WPF,Console,http://ASP.NETMVC 等技術開發(fā)的應用程序中,并且提供了REST接口可以應用在 Javascript,Node.js 中。它將日志收集變得簡單易用并且不需要了解太多的相關技術細節(jié)及配置,對于微服務架構的應用程序來說,統(tǒng)一的日志收集系統(tǒng)的建立更是有必要。

6 基于Ocelot+SkyWalking實現(xiàn)分布式追蹤

微服務的特點決定了功能模塊的部署是分布式的,以往在單應用環(huán)境下,所有的業(yè)務都在同一個服務器上,如果服務器出現(xiàn)錯誤和異常,我們只要盯住一個點,就可以快速定位和處理問題,但是在微服務的架構下,大部分功能模塊都是單獨部署運行的,彼此通過總線交互,都是無狀態(tài)的服務,這種架構下,前后臺的業(yè)務流會經過很多個微服務的處理和傳遞,我們會面臨以下問題:

分散在各個服務器上的日志怎么處理?

如果業(yè)務流出現(xiàn)了錯誤和異常,如何定位是哪個點出的問題?

如何快速定位問題?

如何跟蹤業(yè)務流的處理順序和結果?

以前在單應用下的日志監(jiān)控很簡單,在微服務架構下卻成為了一個大問題,如果無法跟蹤業(yè)務流,無法定位問題,我們將耗費大量的時間來查找和定位問題,在復雜的微服務交互關系中,我們就會非常被動。因此,我們需要對其進行追蹤!

SkyWalking-netcore是一個使用Open Tracing規(guī)范來設計追蹤數(shù)據(jù)的開源追蹤組件,只需要做很少的配置即可對經過網關的所有API服務進行Tracing。

7 基于Apollo實現(xiàn)統(tǒng)一配置中心

在微服務架構環(huán)境中,項目中配置文件比較繁雜,而且不同環(huán)境的不同配置修改相對頻繁,每次發(fā)布都需要對應修改配置,如果配置出現(xiàn)錯誤,需要重新打包發(fā)布,時間成本較高,因此需要做統(tǒng)一的配置中心,能做到自動更新配置文件信息,解決以上問題。

Apollo(阿波羅)是攜程框架部門研發(fā)的配置管理平臺,能夠集中化管理應用不同環(huán)境、不同集群的配置,配置修改后能夠實時推送到應用端,并且具備規(guī)范的權限、流程治理等特性。其服務端基于Spring Boot和Spring Cloud開發(fā),打包后可以直接運行,不需要額外安裝Tomcat等應用容器。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容