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图形界面