微服务调用引发的问题:
- 服务消费者该如何获取服务提供者的地址信息?
- 多个服务提供者,消费者该如何选择?
- 消费者如何得知服务提供者的健康状态?
Eureka的作用
- 接收服务提供者注册。
- 心跳续约。*/30s
- 提供消费者拉取服务的信息,消费者根据拉取的服务信息
- 服务消费者该如何获取服务提供者的地址信息?
服务提供者启动时向eureka注册自己的信息。
eureka保存这些信息。
消费者根据服务名称向eureka拉取提供者信息。 - 多个服务提供者,消费者该如何选择?
服务消费者利用负载均衡算法,从服务列表中挑选一个。 - 消费者如何得知服务提供者的健康状态?
服务提供者每30s向EurekaServer发送心跳请求,报告健康状态。
eureka会更新服务列表信息,心跳不正常会被剔除。
消费者就可以拉到最新的信息。
Eureka架构中,微服务角色有两类:
- EurekaServer:服务端,注册中心
记录服务信息
心跳监控 - EurekaClient:客户端
provider:
注册自己的信息到EurekaServer
每隔30s向EurekaServer发送心跳
consumer:
根据服务名称从EurekaServer拉取服务列表
基于服务列表做负载均衡,选中一个微服务发起远程调用
搭建EurekaServer
先创建一个maven项目cloud-test,pom中添加
pom org.springframework.boot spring-boot-starter-parent2.3.9.RELEASE Hoxton.SR10 org.springframework.cloud spring-cloud-dependencies${spring-cloud.version} pom import org.projectlombok lombok
新建maven模块eureka-server
父选择项目名称
pom中添加
org.springframework.cloud spring-cloud-starter-netflix-eureka-server
application.yml中添加
server: port: 10086 #服务端口 spring: application: name: eurekaserver #服务名称 eureka: client: service-url: # eureka的地址信息,因为eureka自己也是一个微服务,也会注册到eureka(如果是eureka集群,这里就配置eureka集群的地址) defaultZone: http://localhost:10086/eureka
编写启动类,添加@EnableEurekaServer注解
package com.yy.eureka; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; //作为开关,启用EurekaServer @EnableEurekaServer @SpringBootApplication public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
整体结构
intellij中添加services窗口
方便多个模块启用查看View->Tool Windows->Services
添加SpringBoot,然后启动
访问
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)