微服务-Eureka

Eureka的作用

使用RestTemplate完成远程调用需要被调用者 的ip和端口,从而能够发起http请求,但是如果有很多个实例也更加不能有效的处理,而且我们又该如何知道这些实例是否健康呢。所以就有了很多的注册中心比如Eureka、Nacos等等。

  1. 服务注册:服务提供者实例启动后会把自己的信息注册到eureka中,eureka会将服务名称与服务实例之间的映射关系
  2. 服务发现:服务消费者会根据服务名称拉取服务的时候会根据映射关系找到对应的实例
  3. 负载均衡:服务消费者消费者从实例列表中利用负载均衡算法选中一个实例地址
  4. 健康检测:服务提供者每隔一段时间会向eureka发生心跳,来证明自己存活,可以被调用

Eureka的使用

Eureka服务搭建

1)引入依赖

我们需要一个一个maven项目,单独作为eureka服务,导入依赖:

xml 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

2)配置文件

yml 复制代码
server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url: 
      defaultZone: http://localhost:10086/eureka

3)启动类

给该项目的启动类添加@EnableEurekaServer注解。

4)启动项目并进行验证

服务注册

1)依赖引入

需要引入eureka-client的依赖

xml 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2)配置文件

添加服务名称、eureka地址:

yml 复制代码
spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

3)启动多个实例

服务发现

1)依赖引入

需要引入eureka-client的依赖

xml 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2)配置文件

服务发现也需要知道eureka地址,因此第二步与服务注册一致,都是配置eureka信息,添加服务名称、eureka地址:

yml 复制代码
spring:
  application:
    name: orderservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

3)服务拉取

这里的ip+端口需要变成我们服务注册的时候的服务名称。

并且需要给调用者的RestTemplete加上@LoadBalanced注解开启负载均衡。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Ribbon负载均衡

SpringCloud的负载均衡是通过一个Ribbon的组件来实现的。

我们使用postman多进行几次测试,会发现user服务的两个实例都被调用了,如图所示

相关推荐
秋千码途1 小时前
小架构step系列06:编译配置
架构
打好高远球2 小时前
如何用AI破解相亲信息不对称
架构
泊浮目3 小时前
未来数据库硬件-网络篇
数据库·架构·云计算
鹏程十八少3 小时前
8.Android 设计模式 适配器模式 在商业项目中的落地
架构
不骞3 小时前
5.solidity的数据结构
架构
星辰大海的精灵3 小时前
使用Docker和Kubernetes部署机器学习模型
人工智能·后端·架构
guojl3 小时前
Ribbon原理和源码分析
spring cloud·微服务
魔镜魔镜_谁是世界上最漂亮的小仙女4 小时前
java-web开发
java·后端·架构
Java烘焙师5 小时前
架构师必备:业务扩展模式选型
mysql·elasticsearch·架构·hbase·多维度查询
掘金-我是哪吒5 小时前
分布式微服务系统架构第157集:JavaPlus技术文档平台日更-Java多线程编程技巧
java·分布式·微服务·云原生·架构