服务注册发现consul之二:使用Spring Cloud Consul实现服务的注册和发现
2017-06-19 16:32
639 查看
首先安装consul环境,参照之前的文章:《spring cloud consul介绍》中的第一节介绍。
为了演示consul的注册与发现,下面会创建2个服务和1个client端:
一:服务端1:
1、pom.xml
server的启动类:ConsulApp.java
配置文件application.properties
由于我们增加了@EnableDiscoveryClient注解,所以,系统启动的时候,就会向consul注册一个服务,服务的名字为consul-server, ID为consul-server1
启动后,访问:http://localhost:8500/ui/#/dc1/services/consul-server,输出如下页面:
访问consul的HTTP API:http://localhost:8500/v1/catalog/service/consul-server 输出如下:
二:服务端2
1、pom.xml同上
2、启动类:
application.properties 配置内容:(端口、instance-id不同)
启动后:
三:客户端
项目依赖,只需要spring-cloud-starter-consul-discovery(我的pom同上)
application.properties 配置内容:
主类:
主类:ConsulClientApplication.java
启动之后,观看consul如下:
访问http://localhost:8501/services返回如下:
访问:http://localhost:8501/discover
为了演示consul的注册与发现,下面会创建2个服务和1个client端:
一:服务端1:
1、pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.dxz</groupId> <artifactId>cloud-server1</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>cloud-client</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <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-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
server的启动类:ConsulApp.java
package com.dxz.cloud_server; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @EnableDiscoveryClient @RestController public class ConsulApp { @RequestMapping("/home") public Object home() { System.out.println("cloud-server1"); return "cloud-server1"; } public static void main( String[] args ) { SpringApplication.run(ConsulApp.class, args); } }
配置文件application.properties
spring.cloud.consul.host=localhost spring.cloud.consul.port=8500 spring.cloud.consul.discovery.healthCheckPath=${management.contextPath}/health spring.cloud.consul.discovery.healthCheckInterval=15s spring.cloud.consul.discovery.instance-id=consul-server1 spring.application.name=consul-server server.port=8503
由于我们增加了@EnableDiscoveryClient注解,所以,系统启动的时候,就会向consul注册一个服务,服务的名字为consul-server, ID为consul-server1
启动后,访问:http://localhost:8500/ui/#/dc1/services/consul-server,输出如下页面:
访问consul的HTTP API:http://localhost:8500/v1/catalog/service/consul-server 输出如下:
[ { "ID": "ae2b2853-18fa-7042-a157-25da30fcc744", "Node": "DESKTOP-PPSFCNC", "Address": "127.0.0.1", "Datacenter": "dc1", "TaggedAddresses": { "lan": "127.0.0.1", "wan": "127.0.0.1" }, "NodeMeta": {}, "ServiceID": "consul-server1", "ServiceName": "consul-server", "ServiceTags": [], "ServiceAddress": "DESKTOP-PPSFCNC", "ServicePort": 8503, "ServiceEnableTagOverride": false, "CreateIndex": 316, "ModifyIndex": 719 }, { "ID": "ae2b2853-18fa-7042-a157-25da30fcc744", "Node": "DESKTOP-PPSFCNC", "Address": "127.0.0.1", "Datacenter": "dc1", "TaggedAddresses": { "lan": "127.0.0.1", "wan": "127.0.0.1" }, "NodeMeta": {}, "ServiceID": "consul-server2", "ServiceName": "consul-server", "ServiceTags": [], "ServiceAddress": "DESKTOP-PPSFCNC", "ServicePort": 8504, "ServiceEnableTagOverride": false, "CreateIndex": 585, "ModifyIndex": 721 } ]
二:服务端2
1、pom.xml同上
2、启动类:
package com.dxz.cloud_server; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @EnableDiscoveryClient @RestController public class ConsulApp { @RequestMapping("/home") public Object home() { System.out.println("cloud-server2"); return "cloud-server2"; } public static void main( String[] args ) { SpringApplication.run(ConsulApp.class, args); } }
application.properties 配置内容:(端口、instance-id不同)
spring.cloud.consul.host=localhost spring.cloud.consul.port=8500 spring.cloud.consul.discovery.healthCheckPath=${management.contextPath}/health spring.cloud.consul.discovery.healthCheckInterval=15s spring.cloud.consul.discovery.instance-id=consul-server2 spring.application.name=consul-server server.port=8504
启动后:
三:客户端
项目依赖,只需要spring-cloud-starter-consul-discovery(我的pom同上)
application.properties 配置内容:
spring.cloud.consul.host=localhost spring.cloud.consul.port=8500 spring.cloud.consul.discovery.healthCheckPath=${management.contextPath}/health spring.cloud.consul.discovery.healthCheckInterval=15s spring.cloud.consul.discovery.instance-id=consul-client1 spring.application.name=consul-client1 server.port=8501
主类:
package com.dxz.cloud_client; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @EnableDiscoveryClient @RestController public class ConsulClientApplication { @RequestMapping("/home") public String home() { return "hi ,i'm consul client"; } public static void main(String[] args) { new SpringApplicationBuilder(ConsulClientApplication.class).web(true).run(args); } }
主类:ConsulClientApplication.java
package com.dxz.cloud_client; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @EnableDiscoveryClient @RestController public class ConsulClientApplication { @RequestMapping("/home") public String home() { return "hi ,i'm consul client"; } @Autowired private LoadBalancerClient loadBalancer; @Autowired private DiscoveryClient discoveryClient; /** * 从所有服务中选择一个服务(轮询) */ @RequestMapping("/discover") public Object discover() { return loadBalancer.choose("consul-server").getUri().toString(); } /** * 获取所有服务 */ @RequestMapping("/services") public Object services() { return discoveryClient.getInstances("consul-server"); } public static void main(String[] args) { new SpringApplicationBuilder(ConsulClientApplication.class).web(true).run(args); } }
启动之后,观看consul如下:
访问http://localhost:8501/services返回如下:
[{"serviceId":"consul-server","host":"DESKTOP-PPSFCNC","port":8503,"secure":false,"metadata":{},"uri":"http://DESKTOP-PPSFCNC:8503"},{"serviceId":"consul-server","host":"DESKTOP-PPSFCNC","port":8504,"secure":false,"metadata":{},"uri":"http://DESKTOP-PPSFCNC:8504"}]
访问:http://localhost:8501/discover
相关文章推荐
- 使用Spring Cloud Consul实现服务的注册和发现
- 使用Spring Cloud Consul实现服务的注册和发现
- 使用Spring Cloud Consul实现服务的注册和发现
- 详解使用Spring Cloud Consul实现服务的注册和发现
- (二)SpringBoot+SpringCloud —— 使用Eureka实现服务注册与发现
- 服务注册发现Eureka之三:Spring Cloud Ribbon实现客户端负载均衡(客户端负载均衡Ribbon之三:使用Ribbon实现客户端的均衡负载)
- Spring Cloud Consul 实现服务注册和发现
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十八):服务注册和发现(Consul)
- spring cloud搭建微服务second-fiberhome(二):结合consul实现服务注册与服务发现
- Spring Cloud Consul使用——服务注册与发现(注册中心)
- 使用Spring Cloud Zookeeper实现服务的注册和发现
- 详解Spring Cloud Consul 实现服务注册和发现
- SpringCloud之consul (服务注册发现)客户端的安装与简单使用|第十三章-yellowcong
- springcloud consul +consul 实现服务注册及发现
- SpringCloud系列:服务注册与发现、负责均衡、hystrix服务降级的实现
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】
- SpringCloud之consul(服务注册发现,客户端安装) |第十四章 -yellowcong
- 使用consul实现分布式服务注册和发现
- Spring Cloud Eureka 实现服务注册与发现
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】