目錄
- 前言
- 1. Consul 基礎知識
- 1.1 Consul 是什么
- 1.2 Consul 的特點
- 2. 安裝并運行 Consul 服務器
- 2.1 下載 Consul
- 2.2 運行 Consul 服務器
- 3. 使用 Consul 管理服務提供者
- 3.1 引入 pom.xml 依賴
- 3.2 修改 boostrap.yml 組態檔
- 3.3 在主啟動類上添加注解
- 3.4 撰寫業務類,并在 controller 層開放介面
- 4. 使用 Consul 管理服務消費者
- 4.1 引入 pom.xml 依賴
- 4.2 修改 boostrap.yml 組態檔
- 4.3 在主啟動類上添加注解
- 4.4 撰寫業務類
- 最后
前言
參考資料:
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服務原理與實戰》
《B站 尚硅谷 SpringCloud 框架開發教程 周陽》
《Consul 官網》
Consul 是一套開源的分布式服務發現和配置管理系統,由 HashiCorp 公司用 Go 語言開發,它提供了微服務系統中的服務治理、配置中心、控制總線等功能,這些功能中的每一個都可以根據需要單獨使用,也可以一起使用以構建全方位的服務網格,總之 Consul 提供了一種完整的服務網格解決方案;
1. Consul 基礎知識
1.1 Consul 是什么
- Consul 是一套開源的分布式服務發現和配置管理系統,由 HashiCorp 公司用 Go 語言開發;
- 提供了微服務系統中的服務治理、配置中心、控制總線等功能,這些功能中的每一個都可以根據需要單獨使用,也可以一起使用以構建全方位的服務網格,總之 Consul 提供了一種完整的服務網格解決方案;
- 它具有很多優點,包括:基于 raft 協議,比較簡潔; 支持健康檢查,同時支持 HTTP 和 DNS 協議支持跨資料中心的 WAN 集群提供圖形界面;跨平臺,支持 Linux、Mac、Windows
1.2 Consul 的特點
- 服務發現:提供 HTTP 和 DNS 兩種發現方式;
- 健康監測:支持多種方式:HTTP、TCP、Docker、Shell 腳本定制化監控;
- KV 存盤:Key、Value的存盤方式;
- 多資料中心:支持多資料中心;
- 可視化 Web 界面;
2. 安裝并運行 Consul 服務器
基于 Win10 下的 Consul 服務器安裝;
2.1 下載 Consul
-
訪問連接:https://www.consul.io/downloads;

-
下載解壓后:

2.2 運行 Consul 服務器
- 在 consul.exe 程式所在目錄下打開 cmd 命令視窗;
- 鍵入命令
consul,顯示下面說明安裝成功;

- 此時鍵入命令
consul agent -dev使用開發模式啟動;

- 訪問連接可以進入 Consul 首頁:http://localhost:8500;

3. 使用 Consul 管理服務提供者
使用 Consul 構建服務提供者大致與 Nacos 和 Zookeeper 相同;Nacos 與 Zookeeper 的構建方式詳情請見《3.2 Alibaba Nacos 注冊中心》與《3.3 Apache Zookeeper 注冊中心》;
3.1 引入 pom.xml 依賴
<!--SpringCloud consul-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
3.2 修改 boostrap.yml 組態檔
# consul 服務提供者埠
server:
port: 8006
spring:
application:
name: consul-provider
# consul 注冊中心地址
cloud:
consul:
host: localhost
port: 8500
discovery:
#hostname: 127.0.0.1
service-name: ${spring.application.name}
3.3 在主啟動類上添加注解
- @EnableDiscoveryClient:使用其他組件(Nacos、zookeeper、Consul)作為注冊中心;
3.4 撰寫業務類,并在 controller 層開放介面
這里撰寫一個簡單介面僅作為示例;
@RestController
public class providerController{
@Value("${server.port}")
private String serverPort;
@RequestMapping(value = "https://www.cnblogs.com/provider/consul")
public String providerConsul(){
return "springcloud with consul: "+serverPort+"\t"+ UUID.randomUUID().toString();
}
}
4. 使用 Consul 管理服務消費者
使用 Consul 構建服務消費者大致與 Nacos 和 Zookeeper 相同;Nacos 與 Zookeeper 的構建方式詳情請見《3.2 Alibaba Nacos 注冊中心》與《3.3 Apache Zookeeper 注冊中心》;
4.1 引入 pom.xml 依賴
- 同提供者;
<!--SpringCloud consul-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
4.2 修改 boostrap.yml 組態檔
- 基本上同提供者;
# consul 服務消費者埠號
server:
port: 80
spring:
application:
name: consul-consumer
# consul 注冊中心地址
cloud:
consul:
host: localhost
port: 8500
discovery:
#hostname: 127.0.0.1
service-name: ${spring.application.name}
4.3 在主啟動類上添加注解
- 同提供者;
- @EnableDiscoveryClient:使用其他組件(Nacos、zookeeper、Consul)作為注冊中心;
4.4 撰寫業務類
- 由于我們使用 Ribbon + RestTemplate 的負載均衡策略,因此需要在 IoC 容器中添加一個 RestTemplate JavaBean;
- 詳情請見《4.1 基于 Ribbon 的負載均衡詳解》;
- 該 Bean 可以在主啟動類中添加;也可以在主啟動類所在包或子包的 config 包中添加,如下:
@Configuration
public class ApplicationContextBean{
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
- 我們在 controller 層開放介面給客戶端,并在該介面里呼叫提供者的 API;
@RestController
public class ComsumerConsulController{
public static final String INVOKE_URL = "http://consul-provider";
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value = "https://www.cnblogs.com/consumer/consul")
public String paymentInfo(){
String result = restTemplate.getForObject(INVOKE_URL+"/provider/consul", String.class);
System.out.println("消費者呼叫提供者獲取服務--->result:" + result);
return result;
}
}
最后

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/415314.html
標籤:其他
上一篇:淺談23種設計模式之策略設計模式
