SpringCloud Eureka 笔记 | 基本架构与介绍
一、Eurake 是什么?
Eureka是Netflix 一个子模块,也是核心模块之一。Eureka 是一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用标识符,就可以访问服务,而不需要修改服务调用的配置文件。功能类似于dubbo的注册中心,如:zookeeper。
Eureka 提供的模式包括服务发现(Eureka),断路器(Hystrix),智能路由(Zuul)和客户端负载平衡(Ribbon)。
如果所有的后端微服务之间,没有互相通信,那么eureka是可以不要的。
如果后端微服务之间,有互相通信,那么在负载均衡时,相同的服务肯定会启动多个,而且使用不同的端口,这个时候,服务之间就可以通过注册在eureka中的名称来找到对方,而不是根据IP+端口号去找对方。
官方中文文档:https://springcloud.cc/spring-cloud-dalston.html#_spring_cloud_netflix
官方GitHub:https://github.com/Netflix/eureka
二、Eureka 基本架构。
SpringCloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(对比zookeeper)。
Eureka 采用了 C-S 的架构设计。Eureka Server 作为服务注册功能的服务器,他是服务注册中心。
而系统中其他微服务,采用 Eureka 客户端连接到Eureka Server 并维持心跳连接。这样系统维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。SpringCloud 其他一些模块,如:Zuul网关、登录服务,订单服务就可以通过Eureka Server 来发现系统中其他微服务,并执行相关业务逻辑。
Eureka 架构图,注意与Dubbo架构对比
Eureka
Dubbo
三、Eureka 两大组件:Eureka Server 和 Eureka Client
Eureka Server 提供服务注册
各个节点启动后,会在Eureka Server 中进行注册,这样 Eureka Server 中的服务注册表中将会存储所有可用的服务节点信息,服务节点的信息可以在界面中直观的看到。
Eureka Client 是java客户端
用于简化 Eureka Server 的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,会向Eureka Server注册自己的信息(例如IP、端口、微服务名等),Eureka Server会存储这些信息,同时将会向Eureka Server 发送心跳(默认周期30秒)。如果Eureka Server 在多个心跳周期内没有接收到某个节点的心跳。Eureka Server 将会从服务注册表中移除这个节点(默认90秒)。