springcloud----注册中心-- 之---Consul

简介

  • Consul 是一套开源的分布式发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发
  • 提供了微服务系统中的服务治理配置中心控制总线等功能。这些功能中的每一个都可以根据需要单独使用, 也可以一起使用构建全方位的服务网格总之 Consul 提供了一宗完整的服务网格解决方案。
  • 它具有很多优点, 包括: 基于 raft 协议比较简洁支持健康检查,同时支持 HTTPDNS 协议支持跨数据中心的WAN 集群 提供图形化界面,跨平台,支持 Linux 、Max 、Windows

功能:

  • 服务发现 : 提供HTTP 和 DNS 两种方式
  • 健康检查 : 支持多种方式,HTTP,TCP,Docker。 Shell 脚本定制化
  • KV 存储 : Key、Value 存储方式
  • 多数据中心 : Consul 支持多数据中心
  • 可视化WEB管理

下载、安装

官网地址 : https://learn.hashicorp.com/consul
下载地址 : https://www.consul.io/downloads.html
安装地址 :https://learn.hashicorp.com/consul/getting-started/install

命令
  • consul --version :查看版本信息
  • consul agent -dev : 运行服务端

服务端

1、模块名 cloud-providerconsul-payment8006
2、pml.xml(web、actuator)
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
3、yml 配置文件
server:
  port: 8006
spring:
  application:
    name: consul-provider-payment
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}
4、主启动
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8006 {
    public static void main(String[] args){
        SpringApplication.run(PaymentMain8006.class,args) ;
    }
}
@RestController
public class PaymentController {
    @Value("${server.port}")
    private String serverPort ;
    
    @RequestMapping("/payment/consul")
    public String paymentConsul(){
        return "consul : " + serverPort + "\t" + UUID.randomUUID().toString() ;
    }
}
5、测试

消费端

1、模块名 cloud-consumerconsul-order80
2、pml.xml(同服务端)
3、yml 配置文件
server:
  port: 80
spring:
  application:
    name: consul-consumer-order
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}
#        hostname:
4、主启动
@SpringBootApplication
@EnableDiscoveryClient
public class OrderConsulMain80 {
    public static void main(String[] args){
        SpringApplication.run(OrderConsulMain80.class,args) ;
    }
}
@Autowired
 private RestTemplate restTemplate;

 @Value("${server.port}")
 private String serverPort;

 private static final String INVOKE_URL = "http://consul-provider-payment";

 @RequestMapping("/consumer/payment/consul")
 public String paymentInfo() {
     String result = restTemplate.getForObject(INVOKE_URL + "/payment/consul", String.class);
     return result;
 }
@Configuration
public class ApplicationContextConfig {
   @Bean
   @LoadBalanced
   public RestTemplate getRestTemplate(){
       return  new RestTemplate() ;
   }
}
5、测试
发布了119 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/getchar97/article/details/105079820