目录
提供者与消费者
Eureka原理分析
搭建Eureka服务
服务注册
服务发现
-
提供者与消费者
- 服务提供者:
- 一次业务中,被其它微服务调用的服务(提供接口给其它微服务)
- 服务消费者:
- 一次业务中,调用其它微服务的服务(调用其它微服务提供的接口)
- 服务既可以是服务提供者,也可以是服务消费者
-
Eureka原理分析
- 服务调用出现的问题
- 服务消费者该如何获取服务提供者的地址信息?
- 如果有多个服务提供者,消费者该如何选择?
- 消费者如何得知服务提供者的健康状态?
- 案例分析
- order-service在发起远程调用的时候,该如何得知user-service实例的ip地址和端口?
- user-service服务实例启动后,将自己的信息注册到eureka-server(Eureka服务端)这个叫服务注册
- eureka-server保存服务名称到服务实例地址列表的映射关系
- order-service根据服务名称,拉取实例地址列表;这个叫服务发现或服务拉取
- 有多个user-service实例地址,order-service调用时该如何选择?
- order-service从实例列表中利用负载均衡算法选中一个实例地址
- 向该实例地址发起远程调用
- order-service如何得知某个user-service实例是否依然健康,是不是已经宕机?
- user-service会每隔一段时间(默认30秒)向eureka-server发起请求,报告自己状态,称为心跳
- 当超过一定时间没有发送心跳时,eureka-server会认为微服务实例故障,将该实例从服务列表中剔除
- order-service拉取服务时,就能将故障实例排除了
- 小结
- 在Eureka架构中,微服务角色有两类:
- EurekaServer:服务端,注册中心
- 记录服务信息
- 心跳监控
- EurekaClient:客户端
- Provider:服务提供者,例如案例中的user-service
- 注册自己的信息到EurekaServer
- 每隔30秒向EurekaServer发送心跳
- consumer:服务消费者,例如案例中的 order-service
- 根据服务名称从EurekaServer拉取服务列表
- 基于服务列表做负载均衡,选中一个微服务后发起远程调用
- Provider:服务提供者,例如案例中的user-service
-
搭建Eureka服务
- 搭建EurekaServer服务步骤如下:
- 1.创建项目,引入spring-cloud-starter-netflix-eureka-server的依赖
- 2.编写启动类,添加@EnableEurekaServer注解
- 3.添加application.yml文件,配置eureka地址
- 4.测试成功
-
服务注册
- user-service,order-service注册到eureka-server中
- 1.都引入spring-cloud-starter-netflix-eureka-client的依赖
- 2.都修改配置文件
- 3.测试成功
- 另外,可以将user-service多次启动,模拟多实例部署;但为了避免端口冲突,需要修改端口设置:
-
服务发现
- 服务拉取是基于服务名称获取服务列表,然后再对服务列表做负载均衡
- 1.修改OrderService的代码,修改访问的url路径,用服务名代替ip、端口:
- 2.在order-service的启动类中,给RestTemplate添加@LoadBalanced注解,实现负载均衡
- spring会自动帮助我们从eureka-server端,根据userservice这个服务名称,获取实例列表,而后完成负载均衡