八、Consul注册中心环境搭建
1、 Consul简介
Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用go语言开发。它具有很多优点,包括:基于 raft协议,比较简洁;支持健康检查,同时支持http和dns协议,支持跨数据中心的WAN集群,,提供图形界面跨平台,支持 linux、mac、windows。
Consul整合SpringCloud学习网站:https://springcloud.cc/spring-cloud-consul.html
Consul下载地址:https://www.consul.io/downloads.html
2、Consul环境搭建
(1)windows版安装
官网下载windows版,解压后有可执行文件,设置环境变量,在dos窗口直接使用consul命令,在path后面添加 consul所在目录,然后执行启动命令:consul agent -dev -ui -node=gh 其中:-dev开发服务器模式启动,-node节点 名为gh,-ui可以用界面访问,默认能访问,然后测试访问地址 http://localhost:8500。(默认端口8500)
(2)mac版安装,
1)查看mac的os系统版本命令:uname -an,官网下载对应版本的mac版的consul文件。
2)将解压后的文件consul 拷贝到/usr/local/bin下sudo cp consul /usr/local/bin
3)打开bin文件,执行consul,查看consul命令,如下即表示成功。
4)输入启动命令,浏览地址栏输入http://localhost:8500,效果如下:
九、SpringCloud使用Consul替代Eureka作为注册中心
1、建立maven工程,导入相关依赖jar包
<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.gonghua</groupId>
<artifactId>springcloud-consul-member</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<!-- 管理依赖 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.M7</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- springboot整合web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- springboot整合consul客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
</dependencies>
<!-- 注意:这里必须添加,否则各种依赖会出问题 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
2、配置application.properties,如下:
##服务端口号
server.port=8005
##服务别名--服务注册到注册中心名称
spring.application.name=consul-member
##注册到consul服务地址
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
##服务地址直接为ip地址
spring.cloud.consul.discovery.hostname=127.0.0.1
##默认情况下,服务注册到注册中心,地址随机生成的英文
3、启动服务,访问consul页面,效果如下:
服务消费者的代码就不再写了,和其他的服务消费者一样,只需要更改pom的依赖和yml配置即可。
附加:如何获取到注册中心上服务列表信息,代码如下:
//获取注册中心上的服务列表信息
@RequestMapping
public List<ServiceInstance> discoveryClientMember(){
List<ServiceInstance> instances = discoveryClient.getInstances("zk-member");
for (ServiceInstance serviceInstance : instances) {
System.out.println("url:---"+serviceInstance.getUri());
}
return instances;
}