04 Consul服務註冊中心
阿新 • • 發佈:2021-12-02
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
在瀏覽器輸入
服務提供者註冊進 Consul
- 新建服務提供者cloud-provider-consul-payment8006。
- pom檔案
<!--SpringCloud consul-server--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency>
- 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}
- 啟動類
@SpringBootApplication @EnableDiscoveryClient public class PaymentConsulMain { public static void main(String[] args) { SpringApplication.run(PaymentConsulMain.class,args); } }
- 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();
}
}
測試
服務消費者註冊進
- 新建模組cloud-consumer-consul-order80
- pom(與8006相同)
- 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}
- 主啟動類(與8006相同)
- config(和zk的消費者相同)
- controller.OrderConsulController
三者的異同
AP(Ereka)
CP(Zookeeper/Consul)
CAP理解 來自於評論區
CAP理論的一個例子。開學了,你和同桌互對寒假作業答案,對到一半同桌去了廁所,恰好老師進來要收作業,你決定:AP【交就交吧,有錯也無所謂了,交作業要緊】;CP【等同桌回來,把答案對完再交,滿分要緊】