1. 程式人生 > 其它 >04 Consul服務註冊中心

04 Consul服務註冊中心

Consul服務註冊中心

Consul官網:https://www.consul.io/
Consul中文文件:https://www.springcloud.cc/spring-cloud-consul.html

簡介
Consul是一種服務網格解決方案,提供具有服務發現,配置和分段功能的全功能控制平面。這些功能中的每一個都可以根據需要單獨使用,也可以一起使用以構建完整的服務網格。Consul需要一個數據平面,並支援代理和本機整合模型。Consul附帶了一個簡單的內建代理,因此一切都可以直接使用,還支援Envoy等第三方代理整合。

下載windows 版本後

解壓後得到一個 consul.exe 在所在目錄開啟 cmd 輸入xonsul agent -dev

在瀏覽器輸入

http://localhost:8500/

服務提供者註冊進 Consul

  1. 新建服務提供者cloud-provider-consul-payment8006。
  2. 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: localhost  #用linux的ip地址(consul在本機就填localhost)
      port: 8500
      discovery:
        service-name: ${spring.application.name}
  1. 啟動類
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentConsulMain {

    public static void main(String[] args) {
        SpringApplication.run(PaymentConsulMain.class,args);
    }
}
  1. controller 層
@RestController
@Slf4j
public class PaymentContrller {

    @Value("${server.port}")
    private String serverPort;

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

測試

服務消費者註冊進

  1. 新建模組cloud-consumer-consul-order80
  2. pom(與8006相同)
  3. yml(埠號為80
server:
  port: 80

spring:
  application:
    name: consul-consumer-order
  cloud:
    consul:
      host: localhost  #用linux的ip地址(consul在本機就填localhost)
      port: 8500
      discovery:
        service-name: ${spring.application.name}

  1. 主啟動類(與8006相同)
  2. config(和zk的消費者相同)
  3. controller.OrderConsulController

三者的異同

AP(Ereka)

CP(Zookeeper/Consul)

CAP理解 來自於評論區

CAP理論的一個例子。開學了,你和同桌互對寒假作業答案,對到一半同桌去了廁所,恰好老師進來要收作業,你決定:AP【交就交吧,有錯也無所謂了,交作業要緊】;CP【等同桌回來,把答案對完再交,滿分要緊】