Consul服務(wù)注冊與發(fā)現(xiàn)

Consul服務(wù)注冊與發(fā)現(xiàn)


Consul官網(wǎng):https://www.consul.io/
Consul中文文檔:https://www.springcloud.cc/spring-cloud-consul.html

簡介

Consul是一種服務(wù)網(wǎng)格解決方案,提供具有服務(wù)發(fā)現(xiàn),配置和分段功能的全功能控制平面。這些功能中的每一個(gè)都可以根據(jù)需要單獨(dú)使用,也可以一起使用以構(gòu)建完整的服務(wù)網(wǎng)格。Consul需要一個(gè)數(shù)據(jù)平面,并支持代理和本機(jī)集成模型。Consul附帶了一個(gè)簡單的內(nèi)置代理,因此一切都可以直接使用,還支持Envoy等第三方代理集成。

Consul 是一套開源的分布式中的服務(wù)治理、配置中心、控制總線功能。這些功能中的每一個(gè)都可以根據(jù)需要單獨(dú)使用,也可以一起使用以構(gòu)建全方位的服務(wù)網(wǎng)格,總之 Consul 提供了一種完整的服務(wù)網(wǎng)格解決方案


它具有很多有點(diǎn)。包括:基于 raft 協(xié)議,比較簡潔;支持健康檢查,同時(shí)支持HTTP 和 DNS 協(xié)議,支持跨數(shù)據(jù)中心的WAN集群 提供圖形界面,跨平臺,支持 linux mac windows

主要特點(diǎn)

  • 服務(wù)發(fā)現(xiàn):Consul 的客戶端可以注冊服務(wù),例如 api 或者 mysql ,其他客戶端可以使用 Consul 來發(fā)現(xiàn)給定服務(wù)的提供者。使用DNS 或者 HTTP ,應(yīng)用程序可以輕松找到他們依賴的服務(wù)
  • 健康檢查:領(lǐng)事客戶端可以提供任意數(shù)量的運(yùn)行狀況檢查,這些檢查可以與給定服務(wù)(“ Web服務(wù)器是否返回200 OK”)或本地節(jié)點(diǎn)(“內(nèi)存利用率低于90%”)相關(guān)。操作員可以使用此信息來監(jiān)視群集的運(yùn)行狀況,服務(wù)發(fā)現(xiàn)組件可以使用此信息將流量從不正常的主機(jī)發(fā)送出去。
  • KV存儲:應(yīng)用程序可以將Consul的分層鍵/值存儲用于多種目的,包括動(dòng)態(tài)配置,功能標(biāo)記,協(xié)調(diào),領(lǐng)導(dǎo)者選舉等。簡單的HTTP API使其易于使用。
  • 安全的服務(wù)通信:領(lǐng)事可以為服務(wù)生成并分發(fā)TLS證書,以簡歷相互TLS連接。意圖 可用于定義允許那些服務(wù)進(jìn)行通信,可以使用可以實(shí)時(shí)更改的意圖輕松管理服務(wù)分段,而不必使用復(fù)雜的網(wǎng)絡(luò)拓?fù)浜挽o態(tài)防火墻規(guī)則。
  • 多數(shù)據(jù)中心:Consul開箱即用地支持多個(gè)數(shù)據(jù)中心。這意味著Consul的用戶不必?fù)?dān)心會構(gòu)建其他抽象層以擴(kuò)展到多個(gè)區(qū)域。
在docker上安裝啟動(dòng)consul
#拉取consul鏡像
docker pull consul

#啟動(dòng)consul
docker run -d  -p 8500:8500/tcp --name myConsul  consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0

訪問 : http://http:// xx.xx.xx.xx/:8500 (linux的IP地址加上冒號8500, xx代表服務(wù)器ip地址)

在這里插入圖片描述
服務(wù)提供者
  1. pom文件
       <!--SpringCloud consul-server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
  1. yml文件
server:
  port: 8006


spring:
  application:
    name: consul-provider-payment
  cloud:
    consul:
      host: 10.211.55.17  #用linux的ip地址(consul在本機(jī)就填localhost)
      port: 8500
      discovery:
        service-name: ${spring.application.name}
  1. springboot 啟動(dòng)類增加注解
@EnableDiscoveryClient    //該注解用于向使用consul或者Zookeeper作為注冊中心時(shí)注冊服務(wù)
  1. 編寫測試Controller
@RestController
@Slf4j
public class PaymentController {

    @Value("${server.port}")        //獲取端口號
    private String serverPort;

    @RequestMapping("/payment/consul")
    public String paymentConsul(){
        return "springcloud with zookeeper:" + serverPort + "\t" + UUID.randomUUID().toString();
    }

}
  1. 啟動(dòng)項(xiàng)目
在這里插入圖片描述
服務(wù)消費(fèi)者

和消費(fèi)者相同除了端口

  • 控制層 RestTemplate 遠(yuǎn)程調(diào)用
@RestController
@Slf4j
public class OrderConsulController {

    public static final String INVOKE_URL = "http://consul-provider-payment";

    @Resource
    private RestTemplate restTemplate;

    @RequestMapping("/consumer/payment/consul")
    public String paymentInfo(){
        String result = restTemplate.getForObject(INVOKE_URL + "/payment/consul", String.class);
        return result;
    }

}

啟動(dòng)

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容