Consul是一套開源的分布式服務發現和配置管理系統,有HashiCorp公司用go語言開發。提供了微服務系統的服務治理、配置中心、控制總線等功能。這些功能中的每一個都可以根據需要單獨使用,也可以一起使用以構建全方位的服務網格。
它具有很多優點。包括:基於raft協議,比較簡潔;支持健康檢查。同時支持HTTP和DNS協議,支持跨數據中心的WAN集群,提供圖形界面,跨平台,支持Linux、Mac、Windows。
安裝並運行Consul
1,官網下載
2,執行cmd命令,彈出命令行窗口。找到consul的目錄包。
3,使用開發模式啟動
4,使用http://localhost:8500訪問。
支付模塊
1,POM文件
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </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> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> </dependency> </dependencies>
2,YML文件
server:
port: 8006
spring:
application:
name: consul-payment-service
cloud: consul: host: localhost port: 8500 discovery: service-name: ${spring.application.name}
3,主啟動類
@SpringBootApplication @EnableDiscoveryClient public class ConsulPayment8006Main { public static void main(String[] args) { SpringApplication.run(ConsulPayment8006Main.class,args); } }
4,控制層
@RestController public class PaymentController { @Value("${server.port}") private String serverPort; @GetMapping("/payment/consul") public String paymentConsul(){ return "consul port:"+serverPort+"\t"+ UUID.randomUUID().toString(); } }
訂單模塊
1,POM文件
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </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> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> </dependency> </dependencies>
2,YML文件
server:
port: 83
spring:
application:
name: consul-order-service
cloud: consul: host: localhost port: 8500 discovery: service-name: ${spring.application.name}
3,主啟動類
@SpringBootApplication @EnableDiscoveryClient public class ConsulOrder83Main { public static void main(String[] args) { SpringApplication.run(ConsulOrder83Main.class,args); } }
4,配置文件
@Configuration public class MyConfig { @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } }
5,控制層
@RestController public class OrderController { private final String url="http://consul-payment-service"; @Autowired private RestTemplate restTemplate; @GetMapping("/consume/payment") public String paymentConsul(){ return restTemplate.getForObject(url+"/payment/consul",String.class); } }
可以通過http://localhost:83/consume/payment訪問。
Consul圖形界面