Spring Cloud应用接入华为云微服务CSE( 三 )

cse-dependency2.3.20pomimport
servicecomb:credentials:accessKey: your access keysecretKey: your secret keyakskCustomCipher: default
在上面的步骤中,实际隐含了将服务中心的地址设置为华北区cn-north-1,如果需要使用其他区域的服务中心和配置中心地址,还需要显示的指定地址和区域 。
华为云CSE已上线的区域请访问地区和终端节点 。此处,以华为云“华东-上海二”区域为例配置如下
servicecomb:service:registry:address: https://cse.cn-east-2.myhuaweicloud.com:443config:client:serverUri: https://cse.cn-east-2.myhuaweicloud.com:443credentials:project: cn-east-2
有些开发者需要通过代理服务器访问华为云,也可以通过设置代理来实现:
servicecomb:proxy:enable: truehost: your proxy serverport: your proxy server portusername: user namepasswd: password for proxy
CSE的配置是分层次的,按照优先级顺序是:
yaml配置文件 < 环境变量 << 配置中心 。
如果开发者不希望将密码信息写入配置文件,也可以通过环境变量或者 的方式设置这些配置信息 。比如:
java -Dcse..=$ .jar 。
使用CSE作为RPC框架
在上面的章节中,介绍了 Cloud如何使用CSE的服务注册发现、动态配置管理等中间件服务 。这些操作的基础是Web(本质上是一个,即org..web..) 。CSE作为一个独立的RPC框架实现,可以非常容易集成到 Cloud中 。通过将Web 替换为CSE,可以给开发者带来如下便利:
本章节仍然基于快速接入的示例,展示改造的步骤,以及改造以后的效果 。点击下载地址获取改造后的项目 。
集成方式
CSE支持如下几种集成方式,当需要和 Cloud集成的时候,CSE可以作为一个替换org..web.. 。
改造步骤
通过依赖-boot--,可以引入对于CSE的依赖 。为了简单的接入CSE,还引入了cse--- 。
org.apache.servicecombspring-boot-starter-transportcom.huawei.paas.csecse-solution-service-engine
配置启动类和定义REST接口
在启动类里面加入@加载CSE运行时,并通过@n(=.class)关闭Web。
然后开发者就可以定义自己的REST接口(对应于 Cloud的) 。可以看出和 Cloud 的差异:
其他服务的定义方式和 Cloud保持完全一致 。CSE支持客户端以和RPC两种方式访问服务端,也可以通过浏览器使用REST的方式直接访问服务端,所以一个好的开发实践是给每个REST服务都定义一个接口Hello 。使用CSE,不需要 Cloud的声明式REST调用(Feign),可以大大简化开发者的工作量 。
@RestSchema(schemaId="hello")@RequestMapping(path = "/hello", produces = MediaType.TEXT_PLAIN)public class HelloService implements Hello {private static org.slf4j.Logger log = LoggerFactory.getLogger(HelloService.class);@Override@RequestMapping(path = "/sayhi", method = RequestMethod.GET)public String sayHi(@RequestParam(name = "name", required = false) String name) {log.info("Access /hello/sayhi, and name is " + name);return "from provider: Hello " + name;}}
引入CSE后,不再需要Feign等组件,如下的一些依赖也可以移除 。还有标签@t、@等
org.springframework.cloudspring-cloud-starter-feign
定义微服务信息
在.yml中配置基本的微服务信息 。
# 应用名称APPLICATION_ID: spring-cloud-application-cse-rpc# 微服务名称和版本号,微服务名称使用Spring Cloud的名称service_description:name: ${spring.application.name}version: 1.0.0# 服务中心和配置中心的地址servicecomb:service:registry:address: https://cse.cn-north-1.myhwclouds.cominstance:watch: falseconfig:client:serverUri: https://cse.cn-north-1.myhwclouds.comrefreshMode: 1refresh_interval: 15000# 对外发布的地址,端口号使用server.portrest:address: 0.0.0.0:${server.port}# AK/SK认证信息,需要修改为自己的AK/SKcredentials:accessKey: your access keysecretKey: your secret keyakskCustomCipher: default# 线下开发,关闭监控数据上报monitor:client:enable: false