一,eureka简介
Eureka是Netflix开发的服务发现框架,SpringCloud将它集成在自己的子项目spring-cloud-netflix中,实现SpringCloud的服务发现功能。
为什么要使用Eureka,因为在一个完整的系统架构中,任何单点的服务都不能保证不会中断,因此我们需要服务发现机制,在某个节点中断后,其它的节点能够继续提供服务,从而保证整个系统是高可用的。
服务发现有两种模式:一种是客户端发现模式,一种是服务端发现模式。Erueka采用的是客户端发现模式。
客户端服务发现的架构如图:
Eureka Server会提供服务注册服务,各个服务节点启动后,会在Eureka Server中进行注册,这样Eureka Server中就有了所有服务节点的信息,并且Eureka有监控页面,可以在页面中直观的看到所有注册的服务的情况。同时Eureka有心跳机制,当某个节点服务在规定时间内没有发送心跳信号时,Eureka会从服务注册表中把这个服务节点移除。Eureka还提供了客户端缓存的机制,即使所有的Eureka Server都挂掉,客户端仍可以利用缓存中的信息调用服务节点的服务。Eureka一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从Eureka中读取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。
Eureka通过心跳检测、健康检查、客户端缓存等机制,保证了系统具有高可用和灵活性。
二,为什么要使用eureka
1. 它提供了完整的Service Registry和Service Discovery实现
首先是提供了完整的实现,并且也经受住了Netflix自己的生产环境考验,相对使用起来会比较省心。
2. 和Spring Cloud无缝集成
项目如果使用了Spring Cloud和Spring Boot将有一套非常完善的开源代码来整合Eureka,所以使用起来非常方便。
另外,Eureka还支持在我们应用自身的容器中启动,也就是说我们的应用启动完之后,既充当了Eureka的角色,同时也是服务的提供者。这样就极大地提高了服务的可用性。
这一点是我们选择Eureka而不是zk、etcd等的主要原因,为了提高配置中心的可用性和降低部署复杂度,我们需要尽可能地减少外部依赖。
3. Open Source
最后一点是开源,由于代码是开源的,所以非常便于我们了解它的实现原理和排查问题。
三,深入理解eureka
上图简要描述了Eureka的基本架构,由3个角色组成:
- Eureka Server:提供服务注册和发现
- Service Provider:服务提供方,将自身服务注册到Eureka,从而使服务消费方能够找到
- Service Consumer:服务消费方,从Eureka获取注册服务列表,从而能够消费服务。
需要注意的是,上图中的3个角色都是逻辑角色。在实际运行中,这几个角色甚至可以是同一个实例,比如在我们项目中,Eureka Server和Service Provider就是同一个JVM进程。
上图更进一步的展示了3个角色之间的交互。
- Service Provider会向Eureka Server做Register(服务注册)、Renew(服务续约)、Cancel(服务下线)等操作;
- Eureka Server之间会做注册服务的同步,从而保证状态一致;
- Service Consumer会向Eureka Server获取注册服务列表,并消费服务。
demo实例:
实例中eureka euraket eurekas为eureka-server 之间会做注册服务的同步,从而保证状态一致
eurekaclient 为consumer 消费服务
eurekaprovider 为服务提供者
将实例导入到工程中,打成JAR包 建个文件夹 加个SH脚本
SH脚本nohup java -jar 包名 -Xmx1024m -Xms512m -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+HeapDumpOnOutOfMemoryError > 包名.log&
本文介绍了Eureka作为服务发现框架的基础知识,包括其工作原理、为何选用Eureka以及深入理解Eureka架构等内容。Eureka通过心跳检测、客户端缓存等机制确保系统的高可用性和灵活性。




4157

被折叠的 条评论
为什么被折叠?



