Spring Cloud 之 Consul服务注册与发现

Consul服务注册与发现



Consul简介


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UiPRUcWn-1652276991223)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511135224719.png)]

功能:

  • 服务发现
  • 健康检测
  • KV存储
  • 多数据中心
  • 可视化Web界面

安装并运行Consul


  1. 官网下载并解压
  2. 使用开发者模式启动,cmd窗口进入软件路径运行 consul agent-dev
  3. 访问Consul的首页:http://localhost:8500

服务提供者


  1. 新建Module支付服务 provider8006

  2. 改pom

    新添consul依赖:

    <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-consul-discovery</artifactId>
                <version>2.2.1.RELEASE</version>
            </dependency>
    
  3. 写配置

    server.port=8006
    
    spring.application.name=consul-provider-payment
    #consul注册中心地址
    spring.cloud.consul.host=localhost
    spring.cloud.consul.port=8500
    #hostname:127.0.0.1
    spring.cloud.consul.discovery.service-name=${spring.application.name}
    
  4. 主启动类

    主启动类上添加 @EnableDiscoveryClient 注解

  5. 业务类controller

    @RestController
    public class PaymentConsulController {
    
        @Value("${server.port}")
        private String serverPort;
    
        @RequestMapping("/payment/consul")
        public String paymentConsul(){
            return "spring cloud with consul:"+serverPort+"\t"+ UUID.randomUUID().toString();
        }
    }
    
  6. 验证测试

    启动主启动类,查看consul后台界面,显示服务提供者注册进consul:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NbYivhZu-1652276991224)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511201909470.png)]

服务消费者


  1. 新建module,消费服务order80 cloud-consumerConsul-order80

  2. 改pom

  3. 写配置

  4. 主启动类

  5. 配置Bean

    新建配置类:

    @Configuration
    public class ApplicationContextConfig {
    
        @Bean
        @LoadBalanced //赋予了RestTemplate负载均衡的能力
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
    }
    
  6. Controller

    @RestController
    public class OrderConsulController {
    
        public static final String INVOKE_URL = "http://consul-provider-payment";
    
        @Autowired
        private RestTemplate restTemplate;
    
        @RequestMapping("/consumer/consul/")
        public String paymentInfo(){
            return restTemplate.getForObject(INVOKE_URL+"/payment/consul",String.class);
        }
    }
    
  7. 测试

    查看consul后台界面:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JS8OED4S-1652276991225)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511205253582.png)]

三个注册中心异同点


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f0IIkjhS-1652276991225)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511211246753.png)]

CAP

  • C:Consisitency(强一致性)
  • A:Availability(可用性)
  • P:Partition tolerance(分区容错性)
  • CAP理论关注粒度是数据,而不是整体系统设计的策略

AP(Eureka)

CP(Zookeeper,Consul)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JNjyEqFc-1652276991226)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511211340481.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cw5DutM8-1652276991226)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511213622369.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ClBSVlLh-1652276991228)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511214221980.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fjm4qMWN-1652276991229)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511214112095.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1uMS4tUM-1652276991229)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511214701744.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rx0vo0gQ-1652276991230)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220511214522492.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值