servicestage
Dubbo接入CSE
更新时间:2021/03/29 GMT+08:00
本章节介绍Dubbo如何接入CSE,使得Dubbo能够对接CSE,并且方便的使用CSE提供的最常用的功能。在使用微服务引擎功能章节,会给出具体的开发指导。
本章节介绍的开发方法,可以在Dubbo ServiceComb Samples项目中找到对应的代码,供您在开发过程中参考。
Dubbo未提供网关服务,在例子中使用了Spring Cloud Gateway作为网关,Spring Cloud Gateway接入CSE的说明请参考Spring Cloud接入CSE章节。
前提条件
- 已基于Dubbo开发好了微服务应用,请参考开发微服务应用。
- Dubbo ServiceComb版本为1.3.5及以上版本,并且使用Spring Boot作为开发底座。
- 本文假设您的项目使用了maven管理打包,您熟悉maven的依赖管理机制,能够正确的修改“pom.xml”文件中的dependency management和dependency。
操作步骤
- (可选)在项目的“pom.xml”文件中引入依赖。
如果您的项目中,已经包含了如下依赖,则不需要做任何处理。
如果您的项目中使用了其他注册发现库,比如zookeeper、nacos等,可以删除这些依赖,这个步骤不是必须的。<dependency> <groupId>com.huaweicloud.dubbo-servicecomb</groupId> <artifactId>dubbo-servicecomb-solution-spring-boot</artifactId> </dependency>
推荐使用Maven Dependency Management管理项目依赖的三方软件,在项目的“pom.xml”文件中引入:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-bom</artifactId> <version>${dubbo.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.huaweicloud.dubbo-servicecomb</groupId> <artifactId>dubbo-servicecomb-bom</artifactId> <version>${dubbo-servicecomb.version}</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement>
- 在启动类引入Dubbo ServiceComb的Bean。下面的示例代码中,"classpath*:spring/dubbo-servicecomb.xml"是Dubbo ServiceComb的Bean信息,增加这个信息才会加载Dubbo ServiceComb的功能。
@SpringBootApplication @ImportResource({"classpath*:spring/dubbo-provider.xml", "classpath*:spring/dubbo-servicecomb.xml"}) public class ProviderApplication { public static void main(String[] args) throws Exception { try { new SpringApplicationBuilder(ProviderApplication.class).web(WebApplicationType.NONE).run(args); } catch (Throwable e) { e.printStackTrace(); } } }
- 配置微服务信息。
- 在“dubbo.properties”增加微服务描述信息。如果项目中没有“dubbo.properties”,则创建一个新的文件。使用Spring Boot集成Dubbo,也可以将配置信息写到“application.yaml”中。为了符合Dubbo的使用习惯,本文档使用properties格式进行描述。在推荐的例子中,使用的是“application.yaml”,使用yaml格式可以更好的利用profile机制管理不同环境的配置。
#### 服务配置信息 #### # 所属应用。 dubbo.servicecomb.service.application=basic-application # 服务名称。 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= #### 实例配置信息 #### # 实例初始状态。可选值:UP,DOWN,STARTING,OUTOFSERVICE # dubbo.servicecomb.instance.initialStatus=UP #### 服务中心配置信息 #### # dubbo.servicecomb.registry.address=https://cse.cn-south-1.myhuaweicloud.com dubbo.servicecomb.registry.address=http://127.0.0.1:30100 #### 配置中心配置信息 #### # dubbo.servicecomb.config.address=https://cse.cn-south-1.myhuaweicloud.com dubbo.servicecomb.config.address=http://127.0.0.1:30113 #### SSL 配置信息 #### # dubbo.servicecomb.ssl.enabled=true dubbo.servicecomb.ssl.enabled=true
- 修改dubbo registry为CSE的服务中心。这个配置项一般在spring的配置文件中,比如“spring/dubbo-provider.xml”文件中。
<dubbo:registry address="sc://127.0.0.1:30100"/>
这个配置项的地址信息不会使用,只使用了协议名称sc。
- (可选)如果使用基于流量的微服务治理的重试功能,需要修改dubbo cluster配置。如果无此配置项,请新增。详细请参考使用服务治理。
<dubbo:consumer cluster="dubbo-servicecomb"></dubbo:consumer>
- 在“dubbo.properties”增加微服务描述信息。如果项目中没有“dubbo.properties”,则创建一个新的文件。使用Spring Boot集成Dubbo,也可以将配置信息写到“application.yaml”中。为了符合Dubbo的使用习惯,本文档使用properties格式进行描述。在推荐的例子中,使用的是“application.yaml”,使用yaml格式可以更好的利用profile机制管理不同环境的配置。
- (可选)配置AK/SK。
如果使用微服务引擎专业版,需要配置AK/SK;如果使用微服务引擎专享版,不需要配置AK/SK,可以跳过这个步骤。
AK/SK在“dubbo.properties”中配置,默认提供明文配置,示例如下:dubbo.servicecomb.credentials.enabled=true dubbo.servicecomb.credentials.accessKey=AK dubbo.servicecomb.credentials.secretKey=SK dubbo.servicecomb.credentials.cipher=default dubbo.servicecomb.credentials.project=cn-south-1
- (可选)使用环境变量。
可以通过环境变量简化部署配置。使用ServiceStage部署可以使用的环境变量参考准备环境。
“dubbo.properties”和“application.yaml”中均可以使用place holder来使用环境变量。以“application.yaml”为例,服务中心的地址和配置中心的地址使用环境变量,那么采用ServiceStage部署的时候,环境变量的实际值会覆盖配置文件里面的缺省值,减少了重新编译打包的步骤。
PAAS_CSE_SC_ENDPOINT: http://127.0.0.1:30100 PAAS_CSE_CC_ENDPOINT: http://127.0.0.1:30113 dubbo: servicecomb: registry: address: ${PAAS_CSE_SC_ENDPOINT} config: address: ${PAAS_CSE_CC_ENDPOINT}
父主题: 对接微服务应用
