SpringCloud之Eureka,搭建服务注册中心

从零开始搭建Eureka服务注册中心,包含实际应用中服务注册、服务发现、负载均衡等

代码地址:https://gitee.com/webprogram/springcloud_learn

Eureka的作用

在这里插入图片描述

Eureka是spring cloud中的一个负责服务注册与发现的组件。遵循着CAP理论中的A(可用性)P(分区容错性)

消费者如何获取服务提供者信息?

* 服务提供者在启动时项Eureka注册自己的信息
* Eureka保存这些信息
* 消费者根据服务名项Eureka拉取服务提供者信息

多个服务提供者,消费者如何选择?

消费者利用负载均衡算法,从服务列表选一个

消费者如何感知提供者健康状态?

*服务提供者会每30S向Eureka发送心跳请求,报告状态
*Eureka会更新服务列表信息,心跳不正常会被剔除
*消费者拉取最新提供者信息,则不会请求到不正常的服务

Eureka实践

搭建注册中心

搭建EurekaServer

在这里插入图片描述

Eureka-Server不是服务注册嘛,为什么也要写地址

Eureka-Server本身也是一个服务,会把自己也注册进去,将来做注册中心集群时会互相通信

搭建过程问题收集

*子模块依赖引入问题:https://blog.csdn.net/qq_38668544/article/details/120003105?spm=1001.2014.3001.5501 
服务注册

将服务提供者注册到Eureka

注册自定义服务

在这里插入图片描述

上图中:service-url为注册中心地址

IDEA中多实例部署 -Dserver.port=XXXX

在这里插入图片描述

在这里插入图片描述

如上图所示:已启动8081、8083两个userservice服务

服务发现

服务消费者拉取提供者信息,通过负载均衡挑选服务,实现远程调用

如何调用服务

调用接口地址为:http://服务名/XXX
XXX:具体调用服务接口地址

实例代码

// 订单服务需要查询用户信息
// 注: url构成 服务名+详细接口地址
@RequestMapping("/{id}")
    public OrderEntity getOrder(@PathVariable String id){
        OrderEntity order = queryOrder(id);
        String url = "http://userservice/user/" + order.getUserId();
        UserEntity userEntity = restTemplate.getForObject(url,UserEntity.class);
        order.setUser(userEntity);
        return order;
    }
// userservice为用户服务在注册中心注册的服务名
// 用户服务接口
@RestController
@RequestMapping("user")
public class UserController {

    @RequestMapping("/{id}")
    public UserEntity getOrder(@PathVariable String id){
        return queryUser(id);
    }
}

实现负载均衡

// 订单服务需要调用用户服务的多个实例(8081、8083)
// RestTemplate 注入spring容器中
// 添加注解 @LoadBalanced 实现负载均衡
@EnableEurekaClient
@SpringBootApplication
public class OrderServiceApplication{
    public static void main(String[] args) {
        SpringApplication.run(OrderServiceApplication.class);
    }

    @Bean
    @LoadBalanced // 负载均衡
    public RestTemplate initRestTemplate(){
        return new RestTemplate();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值