ServiceComb
作为Apache
开源组织下的一款微服务框架,其前身为华为云的微服务引擎CSE
(Cloud Service Engine
) 云服务。
解决方案级,多语言、多通信协议、标准服务契约、事务最终一致性开源开放,拥抱SpringBoot
、SpringCloud
、ServiceMesh
等主流生态,低门槛准入,业务侵入度低,架构松耦合。
ServiceComb
的优势:国内政府部门有的会选择华为云,使用ServiceComb
开发可以快速优雅的部署到华为云的的pass
平台上。至于ServiceComb
支持RPC
调用,REST
难道不香吗?CSE
注册中心中的服务契约提供的类似swagger
和接口测试功能,倒是挺好用的。
缺点:由于ServiceComb
的特性,遇到bug
的可能百度很难解决。在SpringCloud F
版后,SpringCloud
的功能更强大了,普及度方面SpingCloud
也更多人使用。
CSE
的架构和Eureka
很像,经过使用后,可以发现CSE
的自我保护机制比Eureka
还要严重。
下载安装CSE
的安装包:apache-servicecomb-service-center-1.3.0-windows-amd64.tar.gz,解压文件目录如下:
完整代码参考:https://github.com/hucheng1997/servicecomb
①添加依赖
父工程依赖:(这里选择1.x版本的springboot
,2.x版本会遇到意料之外的错误!)
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>1.5.12.RELEASEversion>
<relativePath/>
parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.servicecombgroupId>
<artifactId>java-chassis-dependenciesartifactId>
<version>1.3.0version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
provider
和consumer
工程的依赖如下:
<dependency>
<groupId>org.hibernategroupId>
<artifactId>hibernate-validatorartifactId>
dependency>
<dependency>
<groupId>org.apache.servicecombgroupId>
<artifactId>spring-boot-starter-providerartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
②添加配置文件
这里配置文件只能为microservice.yaml
,这是ServiceComb
的硬性规定:
APPLICATION_ID: hucheng #一般填公司的名称
service_description:
name: servicecomb-provider #微服务名
version: 0.0.1 #版本
environment: development #环境
properties:
allowCrossApp: false #不允许跨App访问服务
rest:
address: 0.0.0.0:81 #服务端口
service:
registry:
address: http://127.0.0.1:30100 #注册中心的位置
③主启动上添加注解@EnableServiceComb
④Provider代码及说明
⑤Consumer调用代码
使用RestTemplate
远程调用服务
⑥测试
使用注册中心中的服务契约进行测试
将@RestSchema
注解换成@RpcSchema
即可
使用了ServiceComb
框架的微服务即自带了负载均衡功能,无需任何配置。
添加依赖:
<dependency>
<groupId>org.apache.servicecombgroupId>
<artifactId>handler-flowcontrol-qpsartifactId>
dependency>
添加配置:
servicecomb:
flowcontrol:
Provider:
qps:
limit:
gateway: 100 #限流每秒QPS次数的限制
添加依赖:
<dependency>
<groupId>org.apache.servicecombgroupId>
<artifactId>handler-bizkeeperartifactId>
dependency>
添加配置:
servicecomb:
circuitBreaker:
provider:
shicifang-qa:
requestVolumeThreshold: 1
fallbackpolicy:
provider:
policy: returnnull #容错策略