ServiceComb应用接入华为云微服务引擎CSE

 

概述

 

华为云微服务引擎CSE提供的Java SDK 100%兼容ServiceComb Java Chassis,并对其进行更加友好的封装,以简化用户业务开发,更加专注于业务逻辑。将ServiceComb Java Chassis部署到CSE,并使用CSE提供的能力,只需要对microservice.yaml进行适当的配置,以及在pom中添加额外的依赖,不涉及任何代码修改。

一键式配置

CSE提供了cse-solution-service-engine,让基于开源版本开发的应用快速切换为云上应用,直接使用公有云提供的服务目录、灰度发布、服务治理等功能。这里的配置,包括组合适当的组件、配置处理链、配置参数的缺省值等。具体包括:

  • 引入相关依赖的组件。包括必须的Handlers、Providers、Transports。
  • 增加默认配置项。默认配置包含了处理链、缺省的负载均衡和治理选项等。

对于ServiceComb应用,可以通过修改POM引入cse-solution-service-engine。

增加/修改依赖管理,,如下。

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.huawei.paas.cse</groupId>
                <artifactId>cse-dependency</artifactId>
                <version>2.3.23</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

引入依赖

<dependency> 
  <groupId>com.huawei.paas.cse</groupId>  
  <artifactId>cse-solution-service-engine</artifactId> 
</dependency>

兼容性和开发者建议

cse-solution-service-engine的目的是提供快速、全面的使用CSE能力的组合方案。随着CSE提供的功能的调整和丰富,它会不断的去适配CSE的变更,以期让开发者获得最新的功能体验。CSE倡导持续集成、迭代更新的工作方式,以提高创新效率和提升软件质量。但是这种方式需要业务系统存在一定的机制,能够检测变更和快速针对变更进行修改。比如,业务系统在集成CSE的新版本的时候,能够运行自己的自动化测试用例,来检测变更,并根据CSE提供的变更说明来快速适配新功能。

这种持续集成、迭代更新的理念并不适合所有的场景和用户。对于寻求业务系统稳定,不期望变更行为发生的情况,建议业务系统参考cse-solution-service-engine的做法,创建自己的solution,业务系统依赖自己的solution,然后根据业务节奏,自行调整solution的行为。即使cse-solution-service-engine发生变化,业务系统的行为也不受影响。

这两种策略是应对变更的不同策略,都有利有弊。通常的建议是对于频繁变化的业务,采用第一种方式,加快业务创新速度;对于需要长期稳定不变化的业务,采用第二种方式。

cse-solution-service-engine的详细内容

cse-solution-service-engine的主要内容是POM和microservice.yaml。 POM引入了必要的依赖,microservice.yaml指定了一些缺省值配置。下面的配置是2.3.23版本的配置。

  • POM

POM引入了相关的组件,这样开发者就不需要分析使用CSE需要引入哪些组件,并逐个自行引入。2.3.23版本默认引入了如下组件:

<dependencies>
    <dependency>
        <groupId>com.huawei.paas.cse</groupId>
        <artifactId>foundation-auth</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>config-cc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </dependency>

    <!-- transports -->
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>edge-core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>transport-highway</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>transport-rest-vertx</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>transport-rest-servlet</artifactId>
    </dependency>

    <!-- providers -->
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>provider-springmvc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>provider-pojo</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>provider-jaxrs</artifactId>
    </dependency>

    <!-- handlers -->
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>handler-bizkeeper</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>handler-fault-injection</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>handler-flowcontrol-qps</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>handler-loadbalance</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.servicecomb</groupId>
        <artifactId>handler-publickey-auth</artifactId>
    </dependency>
    <dependency>
        <groupId>com.huawei.paas.cse</groupId>
        <artifactId>cse-handler-cloud-extension</artifactId>
    </dependency>
</dependencies>
  • microservice.yaml

microservice.yaml配置了缺省的处理链,以及一些缺省值。它的配置优先级cse-config-order值为-1,在没有指定配置优先级的情况下,值为0,因此业务自己的microservice.yaml配置缺省拥有更高的优先级。2.3.23版本默认配置如下:

cse-config-order: -1
service_description:
  propertyExtendedClass: com.huawei.paas.middleware.MiddlewarePropertyExt

servicecomb:
  handler:
    chain:
      Provider:
        default: auth-provider,qps-flowcontrol-provider,bizkeeper-provider
      Consumer:
        default: auth-consumer,qps-flowcontrol-consumer,loadbalance,fault-injection-consumer,bizkeeper-consumer
  references:
    version-rule: 0+
  loadbalance:
    serverListFilters: darklaunch,zoneaware
    serverListFilter:
      darklaunch:
        className: com.huawei.paas.darklaunch.DarklaunchServerListFilter
      zoneaware:
        className: org.apache.servicecomb.loadbalance.filter.ZoneAwareServerListFilterExt
addressResolver:
  searchDomains: default.svc.cluster.local,svc.cluster.local,cluster.local
  ndots: 1

 

连接服务中心

 

功能描述

服务中心实现注册和发现,在CSE/ServiceStage查看微服务目录,都需要微服务连接上服务中心。连接服务中心主要的步骤包括引入认证模块、配置认证信息。

配置参考

  • 增加依赖关系(pom.xml)

相对于ServiceComb,CSE的服务中心增加了认证,需要在代码中引入认证模块。

<dependency> 
  <groupId>com.huawei.paas.cse</groupId>  
  <artifactId>foundation-auth</artifactId> 
</dependency>
  • 配置项(microservice.yaml)

配置项包括服务中心的地址和认证信息。

servicecomb:
 service:
  registry:
   address: https://cse.cn-north-1.myhwclouds.com    #根据实际地址配置服务中心地址
   instance:
     watch: false #使用API网关访问,只能使用PULL模式

  credentials:
    accessKey: your access key
    secretKey: your secret key
    akskCustomCipher: default #加密选项
    project:cn-north-1 #可选,所属project。

服务中心的的地址可以在CSE的工具下载页面查看,比如该页面有如下消息。根据租户所在的区域不同,地址会有差异。

服务中心地址、配置中心地址和仪表盘上报地址为: https://cse.cn-north-1.myhuaweicloud.com:443

认证信息可以从公有云凭证管理获取,加密选项的使用提供了安全存储AK/SK的机制,参考说明

 

连接配置中心

 

功能描述

配置中心实现配置下发,连接配置中心是使用治理、灰度发布等功能的前提。CSE对于用户微服务的治理能力,都是构建在动态配置之上的。

配置参考

使用配置中心的步骤和服务中心一样,增加模块依赖和认证信息。这里省略了认证信息配置的内容。

  • 增加依赖关系(pom.xml)
<dependency> 
  <groupId>org.apache.servicecomb</groupId>
  <artifactId>config-cc</artifactId>
</dependency>
  • 启用配置(microservice.yaml)
cse:
 config:
  client:
   serverUri: https://cse.cn-north-1.myhwclouds.com
   refreshMode: 1 #使用API网关访问,只能使用PULL模式

 

使用服务治理

 

功能描述

服务治理主要涉及“隔离”、“熔断”、“容错”、“限流”、“负载均衡”、“灰度发布”等。CSE的服务治理都是构建在Handlers之上,因此这里的主要工作是引入相关的组件和配置处理链。

配置参考

在cse-solution-service-engine里面,已经给出了相关引入模块的列表和处理链。这里只对处理链做一个简单说明。

servicecomb:
  handler:
    chain:
      Provider:
        default: auth-provider,qps-flowcontrol-provider,bizkeeper-provider
      Consumer:
        default: auth-consumer,qps-flowcontrol-consumer,loadbalance,fault-injection-consumer,bizkeeper-consumer

使用故障注入

故障注入主要提供了延时、错误两种类型故障。它在fault-injection-consumer提供。

使用灰度发布

灰度发布用于引流。用户可以根据比例、条件将服务请求转发到符合要求的实例上去。比如在升级的场景,将部分请求引流到新版本,部分请求引流到老版本。灰度发布在loadbalance提供,同时需要扩展几个filter,引入下面的依赖和增加配置项。

  • 增加依赖关系(pom.xml)
<dependency> 
  <groupId>com.huawei.paas.cse</groupId>  
  <artifactId>cse-handler-cloud-extension</artifactId>
</dependency>
  • 在Consumer端配置负载均衡(microservice.yaml)

在负载均衡模块启用了灰度发布的filter。

cse:
 loadbalance:
  serverListFilters: darklaunch
  serverListFilter:
    darklaunch:
      className: com.huawei.paas.darklaunch.DarklaunchServerListFilter

使用调用链

华为云提供了业务无侵入的埋点功能APM。只需要通过华为云部署容器应用,并选择启用调用链监控功能,即可使用调用链服务。

 

微服务运行数据上报

 

功能描述

微服务可以将自己的运行数据上报给Dashboard服务,在公有云上查看仪表盘数据、分布式事务数据等。该章节是描述如何启用微服务数据上报功能。

配置参考

  • 增加依赖关系(pom.xml)

引入必要的jar包。

<dependency>
  <groupId>com.huawei.paas.cse</groupId>
  <artifactId>cse-handler-cloud-extension</artifactId>
</dependency>
  • 配置handler

仪表盘数据依赖于bizkeeper-provider和bizkeeper-consumer。

servicecomb:
  handler:
    chain:
      Provider:
        default: auth-provider,qps-flowcontrol-provider,bizkeeper-provider
      Consumer:
        default: auth-consumer,qps-flowcontrol-consumer,loadbalance,fault-injection-consumer,bizkeeper-consumer

 

其他参考

华为云微服务引擎Java SDK开发指南

华为云微服务引擎Go SDK开发指南

 

 

 

华为云微服务引擎CSE(Cloud Service Engine)基于Dubbo实现了服务间远程过程调用(RPC)。要使用它,你需要做以下几个步骤: 1. 引入依赖:首先,在你的项目中添加Dubbo的依赖。如果你使用Maven,可以在pom.xml文件中加入以下dependency: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-cse-dubbo</artifactId> </dependency> ``` 对于Gradle用户,可以添加到dependencies块: ```groovy implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-cse-dubbo' ``` 2. 配置CSE-Dubbo模块:在Spring Cloud应用配置中,通常会有一个名为`application.yml`或`application.properties`的文件。在这里,你需要配置CSE的Dubbo服务发现、注册中心等信息。例如: ```yaml # application.yml cse: dubbo: registry: address: ${cse.registy.address: localhost:20880} # 注册中心地址 discovery: enable: true ``` 这里`${cse.registy.address}`是你本地或者云端Dubbo注册中心的服务地址。 3. 定义服务接口和服务提供者:创建一个或多个实现了Dubbo注解的接口,并将其作为服务提供。比如: ```java @Service public interface HelloService { String sayHello(String name); } ``` 4. 实现服务提供者:创建一个实现上述接口的类并注入CSE的Dubbo服务代理。 5. 调用服务:通过Spring的@Autowired注入`HelloService`实例,然后即可像普通RPC一样调用服务方法了。 ```java @RestController public class DemoController { @Autowired private HelloService helloService; @GetMapping("/hello") public String sayHello() { return helloService.sayHello("World"); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值