日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Dubbo(十)之配置加载流程

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dubbo(十)之配置加载流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自??Dubbo配置加載流程

Dubbo 中的配置加載流程介紹

此篇文檔主要講在應用啟動階段,Dubbo框架如何將所需要的配置采集起來(包括應用配置、注冊中心配置、服務配置等),以完成服務的暴露和引用流程。

根據驅動方式的不同(比如Spring或裸API編程)配置形式上肯定會有所差異,具體請參考XML配置、Annotation配置、API配置三篇文檔。除了外圍驅動方式上的差異,Dubbo的配置讀取總體上遵循了以下幾個原則:

  • Dubbo 支持了多層級的配置,并按預定優先級自動實現配置間的覆蓋,最終所有配置匯總到數據總線URL后驅動后續的服務暴露、引用等流程。
  • ApplicationConfig、ServiceConfig、ReferenceConfig 可以被理解成配置來源的一種,是直接面向用戶編程的配置采集方式。
  • 配置格式以 Properties 為主,在配置內容上遵循約定的?path-based?的命名規范
  • 配置來源

    首先,從Dubbo支持的配置來源說起,默認有四種配置來源:

    • JVM System Properties,-D 參數
    • Externalized Configuration,外部化配置
    • ServiceConfig、ReferenceConfig 等編程接口采集的配置
    • 本地配置文件 dubbo.properties

    覆蓋關系

    下圖展示了配置覆蓋關系的優先級,從上到下優先級依次降低:

    ?

    點此查看外部化配置詳情

    配置格式

    目前Dubbo支持的所有配置都是.properties格式的,包括-D、Externalized Configuration等,.properties中的所有配置項遵循一種path-based的配置格式:

    # 應用級別 dubbo.{config-type}[.{config-id}].{config-item}={config-item-value} # 服務級別 dubbo.service.{interface-name}[.{method-name}].{config-item}={config-item-value} dubbo.reference.{interface-name}[.{method-name}].{config-item}={config-item-value} # 多配置項 dubbo.{config-type}s.{config-id}.{config-item}={config-item-value}

    應用級別

    dubbo.application.name=demo-provider dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.protocol.port=-1

    服務級別

    dubbo.service.org.apache.dubbo.samples.api.DemoService.timeout=5000 dubbo.reference.org.apache.dubbo.samples.api.DemoService.timeout=6000 dubbo.reference.org.apache.dubbo.samples.api.DemoService.sayHello.timeout=7000

    多配置項

    dubbo.registries.unit1.address=zookeeper://127.0.0.1:2181 dubbo.registries.unit2.address=zookeeper://127.0.0.1:2182dubbo.protocols.dubbo.name=dubbo dubbo.protocols.dubbo.port=20880 dubbo.protocols.hessian.name=hessian dubbo.protocols.hessian.port=8089

    擴展配置

    dubbo.application.parameters.item1=value1 dubbo.application.parameters.item2=value2 dubbo.registry.parameters.item3=value3 dubbo.reference.org.apache.dubbo.samples.api.DemoService.parameters.item4=value4

    幾種編程配置方式

    接下來,我們看一下選擇不同的開發方式時,對應到 ServiceConfig、ReferenceConfig 等編程接口采集的配置的變化。

    Spring XML

    參見示例

    <!-- dubbo-provier.xml --><dubbo:application name="demo-provider"/><dubbo:config-center address="zookeeper://127.0.0.1:2181"/><dubbo:registry address="zookeeper://127.0.0.1:2181" simplified="true"/><dubbo:metadata-report address="redis://127.0.0.1:6379"/><dubbo:protocol name="dubbo" port="20880"/><bean id="demoService" class="org.apache.dubbo.samples.basic.impl.DemoServiceImpl"/><dubbo:service interface="org.apache.dubbo.samples.basic.api.DemoService" ref="demoService"/>

    Spring Annotation

    參見示例

    // AnnotationService服務實現@Servicepublic class AnnotationServiceImpl implements AnnotationService {@Overridepublic String sayHello(String name) {System.out.println("async provider received: " + name);return "annotation: hello, " + name;}} ## dubbo.propertiesdubbo.application.name=annotation-providerdubbo.registry.address=zookeeper://127.0.0.1:2181dubbo.protocol.name=dubbodubbo.protocol.port=20880

    Spring Boot

    參見示例

    ## application.properties# Spring boot applicationspring.application.name=dubbo-externalized-configuration-provider-sample# Base packages to scan Dubbo Component: @com.alibaba.dubbo.config.annotation.Servicedubbo.scan.base-packages=com.alibaba.boot.dubbo.demo.provider.service# Dubbo Application## The default value of dubbo.application.name is ${spring.application.name}## dubbo.application.name=${spring.application.name}# Dubbo Protocoldubbo.protocol.name=dubbodubbo.protocol.port=12345## Dubbo Registrydubbo.registry.address=N/A## DemoService versiondemo.service.version=1.0.0

    API

    參考示例

    public static void main(String[] args) throws IOException {ServiceConfig<GreetingsService> service = new ServiceConfig<>();service.setApplication(new ApplicationConfig("first-dubbo-provider"));service.setRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));service.setInterface(GreetingsService.class);service.setRef(new GreetingsServiceImpl());service.export();System.out.println("first-dubbo-provider is running.");System.in.read(); }

    總結

    以上是生活随笔為你收集整理的Dubbo(十)之配置加载流程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。