国产精品chinese,色综合天天综合精品网国产在线,成午夜免费视频在线观看,清纯女学生被强行糟蹋小说

    <td id="ojr13"><tr id="ojr13"><label id="ojr13"></label></tr></td>
        • <source id="ojr13"></source>
            <td id="ojr13"><ins id="ojr13"><label id="ojr13"></label></ins></td>

            Article / 文章中心

            Dubbo-Admin 正式支持 3.0 服務(wù)治理

            發(fā)布時間:2021-12-03 點(diǎn)擊數(shù):648

            前言


            Dubbo 相信大家并不陌生,是一款微服務(wù)開發(fā)框架,它提供了 RPC 通信與微服務(wù)治理兩大關(guān)鍵能力。大家在日常開發(fā)中更多使用的是 dubbo 提供的 RPC 通信這一部分能力,而對其提供的服務(wù)治理的能力使用相對少一些,本文的重點(diǎn)將放在服務(wù)治理這方面。dubbo 框架提供了極其豐富的服務(wù)治理的功能如流量控制、動態(tài)配置、服務(wù) Mock、服務(wù)測試等功能,而 dubbo-admin 的作用在于將 dubbo 框架提供的服務(wù)治理能力提供一個開箱即用的平臺。本文將介紹 dubbo-admin 所提供的功能,讓大家快速了解和使用 dubbo-admin并對 dubbo 所提供的服務(wù)治理能力有個初步的了解。


            服務(wù)詳情


            服務(wù)詳情將以接口為維度展示 dubbo 服務(wù)所提供的服務(wù)信息,包含服務(wù)提供者、消費(fèi)者信息和服務(wù)的元數(shù)據(jù)信息比如提供的方法名和參數(shù)列表。在最新版本支持了 dubbo 3.0 所提供的應(yīng)用級發(fā)現(xiàn)模型,在注冊來源用 應(yīng)用級/接口級 進(jìn)行區(qū)分。


            image


            動態(tài)路由


            Dubbo-Admin 提供了三種路由的支持,分別是條件路由、標(biāo)簽路由、Mesh路由,所提供的功能可以輕松實(shí)現(xiàn)黑白名單、集群隔離、金絲雀發(fā)布等服務(wù)治理的訴求。下面將舉例一一展示這一部分的功能。


            條件路由


            條件路由可以編寫一些自定義路由規(guī)則實(shí)現(xiàn)服務(wù)治理的需求比如黑白名單、讀寫分離等。路由規(guī)則在發(fā)起一次RPC調(diào)用前起到過濾目標(biāo)服務(wù)器地址的作用,過濾后的地址列表,將作為消費(fèi)端最終發(fā)起RPC調(diào)用的備選地址。

            下圖為一個簡單的黑名單功能的實(shí)現(xiàn),該路由規(guī)則的含義為禁止 IP 為 172.22.3.91 消費(fèi)者調(diào)用服務(wù) HelloService,條件路由規(guī)則的格式為:[服務(wù)消費(fèi)者匹配條件] => [服務(wù)提供者匹配條件]


            image


            標(biāo)簽路由


            標(biāo)簽路由通過將某一個或多個服務(wù)的提供者劃分到同一個分組,約束流量只在指定分組中流轉(zhuǎn),從而實(shí)現(xiàn)流量隔離的目的,可以作為藍(lán)綠發(fā)布、灰度發(fā)布等場景的能力基礎(chǔ)。在 provider 應(yīng)用級別上創(chuàng)建規(guī)則,對應(yīng)的靜態(tài)打標(biāo)為 dubbo.provider.tag=tag1 和 @DubboService(tag = "tag2")。



            image


            Mesh路由


            Mesh路由是 dubbo 3.0 推出的全新的路由規(guī)則功能極其強(qiáng)大,使用mesh路由能夠覆蓋上訴兩種路由的功能場景,并且還可以組合出更加復(fù)雜路由場景。


            Mesh路由將整個流量管理分成 VirtualService DestinationRule 兩部分,VirtualService 匹配入口流量,DestinationRule 匹配出口流量。下面將實(shí)現(xiàn)一個案例,通過對服務(wù) HelloService 的 hi 方法通過入?yún)?number 進(jìn)行路由,實(shí)現(xiàn)入?yún)榕紨?shù)的請求路由到 label 為 v1 的服務(wù),入?yún)槠鏀?shù)的服務(wù)路由到 label 為 v2 的服務(wù)的功能。

            public interface HelloService {

             

               String hi(Integer number);

            }

            服務(wù)實(shí)現(xiàn)返回服務(wù)提供方端口。


            public class HelloServiceImpl implements HelloService {

               @Value("${dubbo.protocol.port}")

               private String port;

               @Override

               public String hi(Integer number) {

                   return "hi " + number + ", my port is :" + port;

               }

            }

            第一步:啟動兩個服務(wù)提供方參數(shù)分別為 port = 20883 、dubbo.application.parameters.test-version = v1 和  port = 20884 、dubbo.application.parameters.test-version = v2,通過 dubbo.application.parameters 定義的參數(shù)將會暴露到服務(wù)的URL上。

            dubbo.application.parameters.test-version = v1

            dubbo.protocol.port=20883

            第二步:創(chuàng)建 mesh路由規(guī)則,該路由規(guī)則定義了 VirtualService、DestinationRule 兩部分。DestinationRule 部分將服務(wù)URL參數(shù) test-version=v1 和 test-version=v2 分別劃分為服務(wù) v1 和 v2。VirtualService 則將匹配服務(wù) HelloService#hi 方法的入?yún)?,將偶?shù)路由到v1服務(wù),奇數(shù)路由到 label 為 v2 的服務(wù)。

            apiVersion: service.dubbo.apache.org/v1alpha1

            kind: VirtualService

            metadata:

             name: demo/oddEvenRouter

            spec:

             dubbo:

             - routedetail:

               - match:

                 - method:

                     argc: 1

                     args:

                     - index: 0

                       num_value:

                         oneof:

                         - exact: 0.0

                           mod: 2.0

                       type: int

                     name_match:

                       exact: hi

                 name: even-route

                 route:

                 - destination:

                     host: demo

                     subset: v1

               - match:

                 - method:

                     argc: 1

                     args:

                     - index: 0

                       num_value:

                         oneof:

                         - exact: 1.0

                           mod: 2.0

                       type: int

                     name_match:

                       exact: hi

                 name: odd-route

                 route:

                 - destination:

                     host: demo2

                     subset: v2          

               services:

               - exact: org.test.apache.dubbo.interfaces.HelloService                                

            ---

            apiVersion: service.dubbo.apache.org/v1alpha1

            kind: DestinationRule

            metadata:

             name: test-route

            spec:

             host: demo

             subsets:

               - name: v1

                 labels:

                   test-version: v1

               - name: v2

                 labels:

                   test-version: v2


            第三步:啟動消費(fèi)者進(jìn)行測試,可以看見返回結(jié)果如我們期待的那樣,通過上訴案例實(shí)現(xiàn)了一個簡單的灰度功能,當(dāng)然也可以輕松實(shí)現(xiàn) A/B測試、金絲雀發(fā)布等功能。


            image


            動態(tài)配置


            動態(tài)配置提供了無須重啟可以動態(tài)調(diào)整 RPC 調(diào)用行為的一種能力。比如修改超時時間、權(quán)重、負(fù)載均衡策略調(diào)整、服務(wù)降級等。避免了為了調(diào)整 Dubbo 參數(shù)而需要重啟服務(wù)的局面,下面將展示一些常見的參數(shù)調(diào)整情況。


            1. 超時時間調(diào)整,超時時間調(diào)整為 6000 ms

            configVersion: v2.7

            enabled: true

            configs:

             - addresses: [0.0.0.0]  # 0.0.0.0 for all addresses

               side: consumer        # effective side, consumer or addresses

               parameters:

                 timeout: 6000       # dynamic config parameter

            1. 權(quán)重調(diào)整

            configVersion: v2.7

            scope: application

            key: demo-provider

            enabled: true

            configs:

            - addresses: ["10.20.153.10:20880"]

             side: provider

             parameters:

               weight: 200

            1. 負(fù)載策略調(diào)整

            configVersion: v2.7

            scope: application

            key: demo-consumer

            enabled: true

            configs:

            - side: consumer

             parameters:

               loadbalance: random


            文檔與測試


            接口文檔


            Dubbo-Api-Docs 是一個展示 dubbo 接口文檔,測試接口的工具,相當(dāng)于 swagger 對于 RESTful 風(fēng)格的 Web 服務(wù)的作用。使用該功能需要 dubbo 服務(wù)引入相關(guān)包 dubbo-api-docs-annotations 和 dubbo-api-docs-core,使用使用通過注解的形式描述接口和參數(shù)信息。


            <dependency>

               <groupId>org.apache.dubbo</groupId>

               <artifactId>dubbo-api-docs-annotations</artifactId>

               <version>${dubbo-version}</version>

            </dependency>


            <dependency>

               <groupId>org.apache.dubbo</groupId>

               <artifactId>dubbo-api-docs-core</artifactId>

               <version>${dubbo-version}</version>

            </dependency>


            效果圖如下


            image


            服務(wù)測試


            服務(wù)測試相比 dubbo-api-docs 不需要引入任何依賴就能對 dubbo 服務(wù)進(jìn)行測試,方便快速調(diào)整和驗(yàn)證 dubbo 服務(wù),效果圖如下:


            image


            服務(wù)Mock


            服務(wù)Mock通過無代碼嵌入的方式將Consumer對Provider的請求進(jìn)行攔截,動態(tài)的對Consumer的請求進(jìn)行放行或返回用戶自定義的Mock數(shù)據(jù)。從而解決在前期開發(fā)過程中,Consumer所依賴的Provider未準(zhǔn)備就緒時,造成Consumer開發(fā)方的阻塞問題。

            只需要以下兩步,即可享受服務(wù)Mock功能帶來的便捷:


            第一步:Consumer應(yīng)用引入服務(wù)Mock依賴,添加JVM啟動參數(shù)-Denable.dubbo.admin.mock=true開啟服務(wù)Mock功能。

            <denpendency>

               <groupId>org.apache.dubbo.extensions</groupId>

               <artifactId>dubbo-mock-admin</artifactId>

               <version>last</version>

            </denpendency>


            第二步:在Dubbo Admin中配置對應(yīng)的Mock數(shù)據(jù)。


            image


            小結(jié)


            本文介紹了 dubbo-admin 的大部分功能,覆蓋開發(fā)、測試和線上整個階段。希望本文能夠給使用和入手 dubbo- admin 帶來一些幫助,詳細(xì)的使用細(xì)節(jié)還需要參考官網(wǎng),也希望 dubbo-admin 能夠給 dubbo 使用者帶來一個全新的體驗(yàn),更方便快速的使用 dubbo 所提供出來服務(wù)治理的能力。