八、服务注册中心-Consul
1.Consul简介
Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。
与其它分布式服务注册与发现的方案相比,Consul 的方案更“一站式”——内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具。Consul 本身使用 go 语言开发,具有跨平台、运行高效等特点,也非常方便和 Docker 配合使用。
2.能干嘛
服务发现: 提供HTTP/DNS两种发现方式
健康检测: 支持多种方式,HTTP、TCP、Docker、shell脚本定制化
KV存储: Key、Value的存储方式
多数据中心: Consul支持多数据中心
可视化界面
3.下载地址
https://www.consul.io/downloads.html
4.文档
https://www.springcloud.cc/spring-cloud-consul.html
5.使用开发模式启动
consul agent -dev
6.访问可视化页面
通过以下地址可以访问Consul的首页: http://localhost:8500
7.服务提供者构建
1.创建工程cloud-provider-payment8006-consul
2.改pom
<dependencies>
<!--集成Consul-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<!--引入自定义的cloud-api-common包,可以使用其中的实体-->
<dependency>
<groupId>com.dt.springcloud</groupId>
<artifactId>cloud-api-common</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!--用于页面图形化展示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--用于页面图形化展示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--热部署用到 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- 省去Get/Set方法 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
3.建yml
server:
port: 8006
spring:
application:
name: cloud-provider-payment8006-consul
cloud:
consul:
host: 127.0.0.1
port: 8500
discovery:
service-name: ${spring.application.name} #默认就是服务名
4.启动类
同上述模块
5.业务类
同上述模块
6.访问页面测试
http://localhost:8500/ui/dc1/services

8.服务消费者构建
1.新建工程cloud-consumer-order80-consul
2.改pom
同cloud-provider-payment8006-consul
3.建YML
server:
port: 80
spring:
application:
name: cloud-consumer-order80-consul
cloud:
consul:
host: 127.0.0.1
port: 8500
discovery:
service-name: ${spring.application.name} #默认就是服务名
4.主启动类
5.配置Bean
6.业务类
package com.dt.springcloud.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@RestController
@Slf4j
public class OrderController {
@Value("${server.port}")
private String serverPort;
public static final String PAYMENT_URL = "http://cloud-provider-payment8006-consul";//Consul中注册的服务名称
@Resource
private RestTemplate restTemplate;
@RequestMapping("/consumer/consul/payment")
public String paymentInfo() {
String result = this.restTemplate.getForObject(PAYMENT_URL + "/consul/payment", String.class);
return result;
}
}
7.验证测试

Consul是一个一站式服务网格解决方案,提供服务发现、健康检查、Key/Value存储等功能。通过在服务提供者和消费者工程中集成SpringCloudConsul,实现了基于Consul的微服务注册与发现,以及通过RESTfulAPI进行服务调用。服务消费者通过RestTemplate从服务提供者获取信息,验证了系统的正确性。
1390

被折叠的 条评论
为什么被折叠?



