Consul注册中心
1.概念
Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,
Consul的方案更“一站式”,内置了服务注册与发现框架、分布一致性协议实现、 健康检查、Key/Value 存储、多数据中心方案,
不再需要依赖其它工具(比如ZooKeeper等),使用起来也较为简单。
Consul使用Go语言编写,因此具有天然可移植性(支持Linuk、 Windows 和MacOS) ;
安装包仅包含一个可执行文件,方便部署,与Docke等轻量级容器可无缝配台。
2.特性
- Raft算法
- 服务发现
- 健康检查
- KeyValue存储
- 多数据中心
- 支持http和dns协议接口
- 官方提供web管理界面
3.Consul角色
- client: 客户端,无状态,将HTTP和DNS接口请求转发给局域网内的服务端集群。
- server: 服务端,保存配置信息,高可用集群,每个数据中心的server数量推荐为3个或者5个。
4.原理
Eureka其实就是个Servlet程序,跑在Servlet容器中; Consul则是用go语言编写的第三方工具需要单独安装使用。
5.安装
- 1.官网下载压缩包解压
- 2.cd到对应的目录下,使用cmd启动Consul
# -dev表示开发模式运行,另外还有-server 表示服务模式运行
consul agent -dev -client=0.0.0.0
6.使用
8500 管理界面
- 父模块pom.xml与Eureka相同,具体代码与Eureka相同
6.1 provider模块
<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-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
- application.yml
server:
port: 7070
spring:
application:
name: provider
cloud:
consul:
#注册中心访问地址
host: localhost
port: 8500
#服务提供者信息
discovery:
register: true
#注册实例id 唯一
instance-id: ${spring.application.name}-01
#服务名称
service-name: ${spring.application.name}
port: ${server.port}
#是否使用IP地址注册
prefer-ip-address: true
#服务请求ip
ip-address: ${spring.cloud.client.ip-address}
6.2 consumer模块
- application.yml
server:
port: 9090
spring:
application:
name: consumer
cloud:
consul:
#注册中心访问地址
host: localhost
port: 8500
#服务提供者信息
discovery:
register: false
#注册实例id 唯一
instance-id: ${spring.application.name}-01
#服务名称
service-name: ${spring.application.name}
port: ${server.port}
#是否使用IP地址注册
prefer-ip-address: true
#服务请求ip
ip-address: ${spring.cloud.client.ip-address}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律