Eureka注册中心-01
Eureka注册中心
主要学习知识:
1、远程调用的问题
2、Eureka原理
3、搭建EurekaServer
4、服务注册
5、服务发现
一、远程服务调用出现的问题
1)服务消费者该如何获取服务提供者的地址信息?
(1)服务提供者启动时向Eureka注册自己的信息
(2)Eureka保存这些信息
(3)消费者根据服务名称向Eureka拉取提供者信息
2)如果有多个服务提供者,消费者该如何选择?
(1)服务消费者利用负载均衡算法,从服务列表中挑选一个
3)消费者如何得知服务提供者的健康状态?
(1)服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态
(2)Eureka会更新记录服务列表信息,心跳不正常会被剔除
(3)消费者就可以拉取到最新的信息
二、Eureka的原理
1、服务提供者启动时向Eureka注册自己的信息,Eureka保存这些信息。
2、消费者根据服务名称向Eureka拉取提供者信息。
3、服务消费者利用负载均衡算法,从服务列表中挑选一个。
4、服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态,Eureka会更新记录服务列表信息,心跳不正常会被剔除,消费者就可以拉取到最新的信息。
总结:
在Eureka架构中,微服务角色有两类:
1、EurekaServer:服务端,注册中心
(1)记录服务信息
(2)心跳监控
2、EurekaClient:客户端
(1)Provider:服务提供者,列如案例中的user-service【用户信息】
① 注册自己的信息到EurekaServer
② 每隔30秒向EurekaServer发送心跳
(2)consumer:服务消费者,例如案例中的order-service
① 根据服务名称从EurekaServer拉取服务列表
② 基于服务列表做负载均衡,选中一个微服务后发起远程调用
实践:
三、搭建EurekaServer
1、创建项目,引入spring-cloud-starter-netflix-eureka-server的依赖
(1) 其中Eureka的搭建需要创建独立的微服务
(2) 引入依赖:spring自动装配和Eureka所有的配置都做好了,直接使用。
2、编写启动类,添加@EnableEurekaServer注解
3、添加application.yml文件,编写下面的配置:端口信息、微服务名称、Eureka地址
为什么要写eureka的地址?因为eureka也是一个微服务,所以需要把自己也注入到eureka中。以后eureka如果多了这里配的是eureka集群的地址。用逗号隔开。
四、服务注册
将user-service【用户信息】项目注册到EurekaServer步骤如下:
1、在user-service项目引入sprin-cloud-starter-netflix-eureka-client的依赖
2、在application.yml文件,编写下面的配置:服务名称+服务地址=服务注册
五、服务的发现【拉取】
在order-service完成服务拉取
服务拉取是基于服务名称获取服务列表,然后在对服务列表做负载均衡
1、修改OrderService代码,修改访问的url路径,用服务名代替ip、端口:
2、在order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注解:
总结:
1、搭建EurekaServer
(1) 引入eureka-server依赖
(2) 添加@EnableEurekaServer注解
3) 在application.yml中配置eureka地址
2、服务注册
(1) 引入eureka-client依赖
(2) 在application.yml中配置eureka地址
3、服务发现
(1) 引入eureka-client依赖
(2) 在application.yml中配置eureka地址
(3) 给RestTemplate添加@LoadBalanced注解
(4) 用服务提供者的服务名称远程调用
