ServiceComb Pack 0.4.0 集成发现服务 : Consul

1 分钟 阅读

ServiceComb Pack 从 0.4.0 版本开始支持将 Alpha 服务实例注册到发现服务 Consul 中,Omega 端的程序通过注册中心 Consul 就可以连接 Alpha 服务

启动 Consul

docker run -d -p 8500:8500 consul
  • 访问 Consul UI

在浏览器中访问 http://0.0.0.0:8500 ,能看到如下页面表示 Consul 启动成功

consul_main

启动 Alpha

注册中心功能通过设置 spring.cloud.consul.enabled=true 参数开启

java -jar alpha-server-0.4.0-exec.jar \
  --server.port=8090 \
  --alpha.server.port=8080 \
  --spring.datasource.url="jdbc:postgresql://127.0.0.1:5432/saga?useSSL=false" \
  --spring.datasource.username=saga-user \
  --spring.datasource.password=saga-password \
  --spring.cloud.consul.enabled=true \
  --spring.cloud.consul.host=0.0.0.0 \
  --spring.cloud.consul.port=8500 \
  --spring.profiles.active=prd 

注意: 更多 Consul 参数请参考 Spring Cloud Consul 2.x Spring Cloud Consul 1.x

Alpha 启动完毕后可以看到已经注册到 Consul

alpha_register_to_consul

执行命令行 curl http://0.0.0.0:8500/v1/agent/services 可以看到已经将 Alpha 的 gRPC 地址和端口注册到 Consul 的 Tags 中

{
    "servicecomb-alpha-server-0-0-0-0-336b06581fb5b92ed91c7ade3fdafa88": {
        "ID": "servicecomb-alpha-server-0-0-0-0-336b06581fb5b92ed91c7ade3fdafa88",
        "Service": "servicecomb-alpha-server",
        "Tags": [
            "alpha-server-host=0.0.0.0",
            "alpha-server-port=8080",
            "secure=false"
        ],
        "Meta": {},
        "Port": 8090,
        "Address": "192.168.1.116",
        "Weights": {
            "Passing": 1,
            "Warning": 1
        },
        "EnableTagOverride": false
    }
}

配置 Omega 端

ServiceComb Pack 0.4.0 Omega 默认依赖 Spring Boot 2.x Spring 和 Cloud Consul 2.x ,如果你的 Omega 端项目依赖 Spring Boot 1.x 你可以使用 -Pspring-boot-1 参数重新编译 Spring Boot 1.x 和 Spring Cloud Consul 1.x 的版本

修改原有 omega 端项目

增加以下依赖

<dependency>
	<groupId>org.apache.servicecomb.pack</groupId>
	<artifactId>omega-spring-cloud-consul-starter</artifactId>
	<version>${pack.version}</version>
</dependency>

application.yaml 添加下面的配置项

spring:
  cloud:
    consul:
      discovery:
      	register: false
      host: 0.0.0.0
      port: 8500
      
alpha:
  cluster:
    register:
      type: consul
  • spring.cloud.consul.host 配置 Consul 注册中心的地址,spring.cloud.consul.port 配置 Consul 注册中心的端口,spring.cloud.consul.discovery.register=false 表示不注册自己到注册中心,更多 Consul 客户端配置可以参考Spring Cloud Consul 2.x Spring Cloud Consul 1.x

  • alpha.cluster.register.type=consul 配置 Omega 获取 Alpha 的方式是通过 Consul 的注册中心

  • spring boot 和 spring cloud 版本兼容

    如果你的项目使用的不是spring boot 2.1.1版本,那么请参照此列表增加兼容的spring-cloud-starter-consul-discovery版本

    spring boot spring-cloud-starter-consul-discovery
    2.1.x.RELEASE 2.1.1.RELEASE
    2.0.x.RELEASE 2.0.2.RELEASE
         <dependencyManagement>
           <dependencies>
             <dependency>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-starter-consul-discovery</artifactId>
               <version>2.0.2.RELEASE</version>
             </dependency>
           </dependencies>
         </dependencyManagement>
    

留下评论

您的电子邮箱地址并不会被展示。请填写标记为必须的字段。 *

正在加载...