初识ServiceComb

一、什么是ServiceComb

ServiceComb是华为2017年开源的微服务框架,ServiceComb在华为内部的实践中沉淀了丰富的企业级应用开发经验,该项目已于2017年12月进入Apache孵化器。ServiceComb是开源的,现在已经成为了Apache的顶级项目。Apache ServiceComb的官网地址

二、ServiceComb的使用

2.1 Service-Center注册中心

使用ServiceComb,首先我们需要下载ServiceComb提供的注册中心Service-Center,下载地址:http://servicecomb.apache.org/cn/release/ (下载 ServiceComb Service-Center x.x.x)
在这里插入图片描述
下载到本地后,解压后目录结构如下:
在这里插入图片描述
其中,frontend.exe是前台监控启动程序,service-center.exe是后台服务启动程序,这两个程序都需要双击启动,注册中心才能正常运行。
在这里插入图片描述
在这里插入图片描述
访问地址:http://127.0.0.1:30103
在这里插入图片描述

2.2 搭建ServiceComb项目

  1. 为了能够使开发者可以快速构建ServiceComb应用程序,官方提供了一套脚手架,这样能够方便学习者及应用开发者快速入门,同时极大的提高了效率。地址是:http://start.servicecomb.io/
    在这里插入图片描述
  2. 自行搭建ServiceComb项目
    首先,创建maven项目,修改pom,添加依赖;
<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.apache.servicecomb</groupId>
			<artifactId>java-chassis-dependencies</artifactId>
			<version>1.2.1</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>
<dependencies>	
	<dependency>
		<groupId>org.apache.servicecomb</groupId>
		<artifactId>spring-boot-starter-provider</artifactId>
	</dependency>
</dependencies>

配置microservice.yaml(换成yml文件也可)
其中,rest:addres中IP不要写成0.0.0.0,会有一些问题

APPLICATION_ID: bossapp
service_description:
  name: HelloServiceComb
  version: 1.0.0
servicecomb:
  handler:
    chain:
      Provider: {}
  rest:
    address: localhost:9090
  service:
    registry:
      address: http://127.0.0.1:30100
      autodiscovery: false

搭建启动类,使用@EnableServiceComb注解

@SpringBootApplication
@EnableServiceComb
public class CombTestApplication {

	public static void main(String[] args) {
		SpringApplication.run(CombTestApplication.class, args);
	}
}

搭建provider,使用@RestSchema注解。@RestSchema这个注解是为了表明该应用使用的rest协议,还有@RpcSchema对应rpc协议,这个里面的schemaId保证唯一即可。(其中,REST和RPC协议详解,见 理解REST和RPC

@RestSchema(schemaId = "hello")
@RequestMapping(path = "/")
public class HelloImpl {

    @GetMapping(path = "/hello")
    public String hello() {
        return "Hello World!";
    }
}

搭建Consumer。

public class HelloConsumer {
    private final RestTemplate restTemplate = RestTemplateBuilder.create();
    public void invokeHello() {
        //service url is : cse://serviceName/operation
        String serviceName = "HelloServiceComb";
        restTemplate.getForObject("cse://" + serviceName + "/hello", String.class);
    }
}

2.3 ServiceComb配置

注意:Provider 服务在 30 秒内未向 Service-Center 发送心跳,将会被下线。所以服务发现的请求应在 Provider 服务创建实例后 30 秒内发出才会成功发现实例。
所以,在关闭Provider 服务后Service-Center注册中心实例不会立刻下线。
若想要实现即时响应,配置发送心跳时间即可。

APPLICATION_ID: bossapp
service_description:
  name: HelloServiceComb
  version: 1.0.0
servicecomb:
  handler:
    chain:
      Provider: {}
  rest:
    address: localhost:9090
  service:
    registry:
      address: http://127.0.0.1:30100
      autodiscovery: false
      instance:
        healthCheck:
          interval: 1          # 健康检查间隔时间,默认30秒,可选
          times: 3              # 健康检查检测次数,默认3次,可选
        watch: true             # watch机制可以快速感知实例变化
        preferIpAddress: false #是否选用ip地址作为实例名称,true表示使用ip,否则使用hostname
        diagnose:
          interval: 12

其他详细具体配置见:ServiceComb常见配置项解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值