Consul
概述
1、Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发
2、Consul 提供服务发现、服务网格、流量管理、网络基础设施设备的自动更新,可以在单个 Consul 部署中单独或一起使用这些功能
安装
1、Windows
(1)下载对应版本压缩包
(2)解压压缩包,运行 .exe
2、Linux
(1)CentOS / RHEL 软件包管理器
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install consul
服务提供者(例)
1、核心依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
2、yaml 配置文件
server:
# Consul服务端口号
port: 8006
spring:
application:
# 服务提供者名称
name: consul-provider-payment
cloud:
consul:
# Consul 注册中心地址
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
3、Spring Boot 启动类
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8006 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8006.class,args);
}
}
4、Controller
@RestController
public class PaymentController {
@Value("${server.port}")
private String serverPort;
@GetMapping("/payment/consul")
public String paymentInfo() {
return "springcloud with consul:" + serverPort + "\t" + UUID.randomUUID().toString();
}
}
服务消费者(例)
1、核心依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
2、yaml 配置文件
server:
# Consul服务端口号
port: 80
spring:
application:
# 服务消费者名称
name: consul-consumer-order
cloud:
consul:
# Consul 注册中心地址
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
3、Spring Boot 启动类
@SpringBootApplication
@EnableDiscoveryClient
public class OrderConsulMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderConsulMain80.class,args);
}
}
4、配置类,注入 Bean
@Configuration
public class ApplicationContextBean {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
5、Controller
@RestController
public class OrderConsulController {
public static final String INVOKE_URL = "http://cloud-provider-payment";
@Autowired
private RestTemplate restTemplate;
@GetMapping(value = "/consumer/payment/consul")
public String paymentInfo() {
String result = restTemplate.getForObject(INVOKE_URL+"/payment/consul", String.class);
return result;
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战