spring cloud服务注册与发现之consul

本文介绍了在Netflix Eureka进入维护模式后,如何选用Consul作为服务发现和注册中心。详细讲述了Consul的下载、安装与启动,以及在Spring Cloud项目中的配置和依赖设置。通过示例代码展示了服务调用的过程,帮助读者快速上手使用Consul。
摘要由CSDN通过智能技术生成

一  consul的使用背景

随着netflix项目进入维护模式,与之相关的技术都受到不同程度的影响,影响较大的应该是eureka,Hystrix了,因此我们不得不寻找与之相关的替代品,对于eureka的替代我们可以选择consul,nacos等等,本次给大家分享的是consul作为服务发现和注册中心的使用心得

二 consul的下载、安装和启动

下载地址: https://www.consul.io/downloads

默认下载也会根据当前电脑的操作系统提供下载,也可以按需下载对于的版本,直接下载可能很慢推荐使用迅雷等下载工具

下载之后解压即可使用了,本次分享只是consul的简单使用,至于集群或者其他操作可网上自行找资料学习,不作过多介绍

启动命令:consul agent -dev -client=0.0.0.0   

此命令windows和linux都是通用的,启动后web控制台默认端口为8500,如下所示:

界面看起来比较简单,虽然不大好看但也还算凑合

三  springcloud项目的依赖和相关配置

 <!-- counsul相关依赖 -->
        <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>

有的intellij可能会有提示需要注意actuator需要带starter的那个,否则服务健康检查无法通过,服务调用也会出问题

把下面配置粘贴到项目的配置文件就可以了

  cloud:
    consul:
      host: 127.0.0.1
      port: 8500
      discovery:
        #是否需要注册
        register: true
        #注册的实例ID
        instance-id: ${spring.application.name}-1
        #服务的名称
        service-name: ${spring.application.name}
        #服务的请求端口
        port: ${server.port}
        #开启ip地址注册
        prefer-ip-address: true
        #当前服务的请求IP
        ip-address: ${spring.cloud.client.ip-address}

配置的话不算复杂就是看着有点多

四  服务调用相关代码

 @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private DiscoveryClient discoveryClient;

    @GetMapping("/getMemberInfo")
    public TMember getMemberInfo(@RequestParam("memberId") Integer memberId){

        TMember memInfo=restTemplate.getForObject("http://shop-member/member/getById?id="+memberId,TMember.class);

        return memInfo;
    }

这里的RestTemplate因为使用了Ribbon相关注解,所以只需用服务名加上url就可以直接访问到其他服务了

@LoadBalanced
@Bean
public RestTemplate restTemplate(){
   return new RestTemplate();
}

member服务的controller代码如下:

@GetMapping("/getById")
@ResponseBody
public TMember getById(@RequestParam("id") Integer id){
    return tMemberService.getById(id);
}

启动微服务访问相关url即可看到效果:

至此就完成了consul替代eureka实现了服务注册和发现以及服务的调用,下次将找时间和大家分享nacos作为服务发现和注册中心,以及作为配置中心的用法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值