[#153] fixed dubbo cache cannot be refreshed, that always using down instance ip for invoking problem (#154) [#153] fixed dubbo cache cannot be refreshed, that always using down instance ip for invoking problem
[#153] fixed dubbo cache cannot be refreshed, that always using down instance ip for invoking problem (#154)
注意:本项目已经停止维护。在项目中请谨慎选择使用。
Dubbo-Serivcecomb 为 Apache Dubbo 开发的微服务应用, 提供注册中心、配置中心、服务治理支持,方便 dubbo 应用使用 华为云微服务引擎 。
dubbo 的微服务概念一直在变化, 2.7.x 之前的版本和之后的版本存在差异。在 2.7.x 之前, dubbo 主要提供 基于接口的服务发现, 2.7.x 以后,为了和主流社区的概念统一 (比如 Spring Cloud, ServiceComb, Istio 等), dubbo 提供了基于服务的服务发现 机制。
基于接口的服务发现
基于服务的服务发现
dubbo-servicecomb 为 dubbo 版本(包括 2.7.x 之前的版本), 提供 基于服务的服务发现。 这样不同的微服务开发框架都可以平滑的接入 华为云微服务引擎,在微服务引擎里面,可以采用统一的微服务模型进行管理和治理。
阅读下面的内容前,请切换对应代码分支,查看需要的版本内容。
Dubbo微服务概念:
ServiceComb微服务概念:
这些概念容易导致冲突,在下面的文档中,除了特殊说明,都会采用ServiceComb微服务概念。
和服务发现一样, dubbo 的服务治理是基于接口的。 dubbo 服务在启动的时候, 会将与接口有关的治理项注册到注册中心。通过注册中心控制台, 可以修改治理项,或者增加新的治理项。 注册中心将治理项的变更,推送给相关的服务订阅者(consumer),从而实现服务治理。
ServiceComb的治理过程和dubbo不同。服务注册的时候,只会将微服务信息、微服务实例信息、契约/接口信息注册到注册中心。微服务实例信息的变更, 注册中心会推送给服务订阅者(consumer)。 单纯通过注册中心,无法实现服务治理。 ServiceComb提供了独立的配置中心,可以在配置中心修改、 增加配置项,配置项的变更会推送给作用域内的微服务。配置项作用域包括全局生效、微服务生效等。 服务订阅者(consumer)通过订阅配置变更实现 服务治理。
基于 dubbo 提供的扩展机制,将 dubbo 的微服务概念和治理模型,转换为 ServiceComb的微服务概念和治理模型。 使用 cse dubbo 接入 CSE 以后,应用视图如下:
dubbo <-------> servicecomb dubbo 应用 服务 无 应用 服务 契约/接口 服务实例 服务实例中的一个端点(endpoint)
一个示例项目的注册信息:
Microserivce: application: Dubbo应用示例 service:dubbo provider schemas: com.dubbo.Foo com.dubbo.Bar MicroserviceInstance: endpoints: dubbo://192.168.1.2/com.dubbo.Foo?methods=sayHello&pid=7504 dubbo://192.168.1.3/com.dubbo.Bar?methods=sayHello&pid=7507
为了实现 dubbo 的原生治理, dubbo-servicecomb 增加了一个配置项:
dubbo.servicecomb.governance: {"providerInfos":[{"serviceName":"price-provider","schemaInfos":[{"schemaId":"com.huaweicloud.it.price.PriceService","parameters":{"timeout":5000}}]}]}
服务订阅者监听这个配置项的变更,模拟 dubbo 原生监听注册信息的变更。 当配置项变更后,会调用 dubbo 的 NotifyListener , 将变更的属性,和 注册属性进行合并(配置变更覆盖注册属性),从而实现对于 dubbo 的服务治理。 上面的配置项演示了设置请求超时时间的功能。
优点
限制
dubbo-servicecomb-sample 提供了使用 dubbo-servicecomb 接入的例子。 可以下载 示例进行本地体验, 本章节简单介绍一个 dubbo 应用, 快速使用 dubbo-servicecomb 接入微服务引擎的过程。
下载本地微服务引擎, 解压后运行 start.bat 启动。 工具会安装注册中心、配置中心,以及控制台。 安装完毕后, 通过 http://localhost:30106/ 可以访问控制台。
start.bat
http://localhost:30106/
POM 中引入依赖
``` <dependency> <groupId>com.huaweicloud.dubbo-servicecomb</groupId> <artifactId>dubbo-servicecomb-solution-spring-boot</artifactId> </dependency> ```
上面两个部件,实现 dubbo 应用的注册和动态配置、服务治理配置项检测等功能。
采用 Spring Boot 启动 Spring 扫描路径中,需要增加 classpath*:spring/dubbo-servicecomb.xml, 举例如下:
classpath*:spring/dubbo-servicecomb.xml
``` @SpringBootApplication @ImportResource({"classpath*:spring/dubbo-provider.xml", "classpath*:spring/dubbo-servicecomb.xml"}) public class PriceApplication { public static void main(String[] args) throws Exception { try { SpringApplication.run(PriceApplication.class); } catch (Throwable e) { e.printStackTrace(); } } } ```
使用 service center 作为注册发现。 在 Spring 配置文件中增加如下配置。 如果配置文件已经配置了 zookeeper, 那么需要使用下面的配置项进行替换。
```xml <dubbo:registry address="sc://127.0.0.1:30100"/> ```
这里配置的地址信息是不重要的。 服务中心和配置中心的实际地址在 dubbo.properties 里面指定。
dubbo.properties
在配置文件 dubbo.properties 或者 application.yml 增加配置项。 基本配置项包括微服务信息、微服务实例信息和服务中心、注册中心地址信息。
application.yml
```yaml PAAS_CSE_SC_ENDPOINT: http://127.0.0.1:30100 PAAS_CSE_CC_ENDPOINT: http://127.0.0.1:30113 #### 服务配置信息 #### dubbo: servicecomb: service: application: basic-application # 所属应用。 name: price-provider # 服务名称。 version: 1.0.0 # 版本。默认为 1.0.0.0 # environmen: production # 环境。默认为空。可选值:development, testing, acceptance, production # project: # project。 默认为 default # instance: # initialStatus: UP # 实例初始状态。可选值: UP, DOWN, STARTING, OUTOFSERVICE registry: address: ${PAAS_CSE_SC_ENDPOINT} config: address: ${PAAS_CSE_CC_ENDPOINT} ```
上面介绍了使用本地微服务引擎开发的过程。华为云微服务引擎接入需要使用 HTTPS,并且需要提供认证信息。 在配置文件增加如下配置即可:
#### 服务中心配置信息 #### dubbo.servicecomb.registry.address=https://cse.cn-north-1.myhuaweicloud.com #### 配置中心配置信息 #### dubbo.servicecomb.config.address=https://cse.cn-north-1.myhuaweicloud.com #### SSL 配置信息 #### dubbo.servicecomb.ssl.enabled=true #### AK/SK 认证配置 #### dubbo.servicecomb.credentials.enabled=true dubbo.servicecomb.credentials.accessKey= Your access key dubbo.servicecomb.credentials.secretKey= Your secret key dubbo.servicecomb.credentials.project=cn-north-1
#### 服务配置信息 #### # 所属应用。 dubbo.servicecomb.service.application=discovery # 服务名称。 dubbo.servicecomb.service.name=price-provider # 版本。默认为 1.0.0.0 dubbo.servicecomb.service.version=1.0.0 # 环境。默认为空。可选值:development, testing, acceptance, production # dubbo.servicecomb.service.environment=production # project。 默认为 default # dubbo.servicecomb.service.project= #### END #### 实例配置信息 #### # 实例初始状态。可选值: UP, DOWN, STARTING, OUTOFSERVICE # dubbo.servicecomb.instance.initialStatus=UP #### END #### 服务中心配置信息 #### dubbo.servicecomb.registry.address=http://127.0.0.1:30100 #### 配置中心配置信息 #### dubbo.servicecomb.config.address=http://127.0.0.1:30113 #### SSL 配置信息 #### #dubbo.servicecomb.ssl.enabled=true # ssl engine. 默认为 JDK, 可选 OPENSSL #dubbo.servicecomb.ssl.engine= # ssl protocols。 默认 TLSv1.2 #dubbo.servicecomb.ssl.protocols= # ssl ciphers。默认 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 #dubbo.servicecomb.ssl.ciphers= #dubbo.servicecomb.ssl.authPeer=false #dubbo.servicecomb.ssl.trustStore= #dubbo.servicecomb.ssl.trustStoreType= #dubbo.servicecomb.ssl.trustStoreValue= #dubbo.servicecomb.ssl.keyStore= #dubbo.servicecomb.ssl.keyStoreType= #dubbo.servicecomb.ssl.keyStoreValue= #dubbo.servicecomb.ssl.crl= #dubbo.servicecomb.ssl.sslCustomClass= #### AK/SK 认证配置 #### #dubbo.servicecomb.credentials.enabled=true #dubbo.servicecomb.credentials.accessKey= #dubbo.servicecomb.credentials.secretKey= #dubbo.servicecomb.credentials.cipher= #dubbo.servicecomb.credentials.project=cn-south-1
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
Dubbo-Serivcecomb | English
Dubbo-Serivcecomb 为 Apache Dubbo 开发的微服务应用, 提供注册中心、配置中心、服务治理支持,方便 dubbo 应用使用 华为云微服务引擎 。
dubbo 的微服务概念一直在变化, 2.7.x 之前的版本和之后的版本存在差异。在 2.7.x 之前, dubbo 主要提供
基于接口的服务发现, 2.7.x 以后,为了和主流社区的概念统一 (比如 Spring Cloud, ServiceComb, Istio 等), dubbo 提供了基于服务的服务发现机制。dubbo-servicecomb 为 dubbo 版本(包括 2.7.x 之前的版本), 提供
基于服务的服务发现。 这样不同的微服务开发框架都可以平滑的接入 华为云微服务引擎,在微服务引擎里面,可以采用统一的微服务模型进行管理和治理。版本配套关系
阅读下面的内容前,请切换对应代码分支,查看需要的版本内容。
dubbo 微服务概念 vs dubbo-servicecomb
Dubbo微服务概念:
ServiceComb微服务概念:
这些概念容易导致冲突,在下面的文档中,除了特殊说明,都会采用ServiceComb微服务概念。
dubbo 服务治理概念 vs dubbo-servicecomb
和服务发现一样, dubbo 的服务治理是基于接口的。 dubbo 服务在启动的时候, 会将与接口有关的治理项注册到注册中心。通过注册中心控制台, 可以修改治理项,或者增加新的治理项。 注册中心将治理项的变更,推送给相关的服务订阅者(consumer),从而实现服务治理。
ServiceComb的治理过程和dubbo不同。服务注册的时候,只会将微服务信息、微服务实例信息、契约/接口信息注册到注册中心。微服务实例信息的变更, 注册中心会推送给服务订阅者(consumer)。 单纯通过注册中心,无法实现服务治理。 ServiceComb提供了独立的配置中心,可以在配置中心修改、 增加配置项,配置项的变更会推送给作用域内的微服务。配置项作用域包括全局生效、微服务生效等。 服务订阅者(consumer)通过订阅配置变更实现 服务治理。
dubbo-servicecomb 功能介绍
基于 dubbo 提供的扩展机制,将 dubbo 的微服务概念和治理模型,转换为 ServiceComb的微服务概念和治理模型。 使用 cse dubbo 接入 CSE 以后,应用视图如下:
一个示例项目的注册信息:
为了实现 dubbo 的原生治理, dubbo-servicecomb 增加了一个配置项:
服务订阅者监听这个配置项的变更,模拟 dubbo 原生监听注册信息的变更。 当配置项变更后,会调用 dubbo 的 NotifyListener , 将变更的属性,和 注册属性进行合并(配置变更覆盖注册属性),从而实现对于 dubbo 的服务治理。 上面的配置项演示了设置请求超时时间的功能。
优点和限制
优点
限制
快速开始
dubbo-servicecomb-sample 提供了使用 dubbo-servicecomb 接入的例子。 可以下载 示例进行本地体验, 本章节简单介绍一个 dubbo 应用, 快速使用 dubbo-servicecomb 接入微服务引擎的过程。
下载本地微服务引擎, 解压后运行
start.bat启动。 工具会安装注册中心、配置中心,以及控制台。 安装完毕后, 通过http://localhost:30106/可以访问控制台。POM 中引入依赖
上面两个部件,实现 dubbo 应用的注册和动态配置、服务治理配置项检测等功能。
采用 Spring Boot 启动 Spring 扫描路径中,需要增加
classpath*:spring/dubbo-servicecomb.xml, 举例如下:使用 service center 作为注册发现。 在 Spring 配置文件中增加如下配置。 如果配置文件已经配置了 zookeeper, 那么需要使用下面的配置项进行替换。
这里配置的地址信息是不重要的。 服务中心和配置中心的实际地址在
dubbo.properties里面指定。在配置文件
dubbo.properties或者application.yml增加配置项。 基本配置项包括微服务信息、微服务实例信息和服务中心、注册中心地址信息。接入微服务引擎
上面介绍了使用本地微服务引擎开发的过程。华为云微服务引擎接入需要使用 HTTPS,并且需要提供认证信息。 在配置文件增加如下配置即可:
所有配置项参考