返回

[笔记]SpringCloud学习02: Eureka基础

什么是服务治理

当我们的服务与服务之间通讯调用的时候,如果简单粗暴的用httpclient去请求,不经过第三方的组件管理,然后访问路径写死,那么如果有一个服务更换了路径,所有的服务都需要手动更换该服务的访问路径。维护的成本很高。

就是因为出现了这些问题,所以引入了服务治理(SOA governance)这个概念,同时衍生了这类的实现组件,也就是注册中心。典型的代表:zookeeper,Eureka,Consul。服务治理也引入了 服务调用、负载均衡、容错等功能。

简单的总结:把服务看成一个地方。当我们服务调用的时候,就是从一个地方到另一个地方,这时候我们需要地图导航才能到达,当我们去的路程有一段路可能修路,无法通过的时候,导航就会帮我们规划另一条路线。这里的导航就是注册中心,会一定的时间就会刷新一下路况,就好像我们注册中心 (Erueka为例) 每隔30秒就会刷新一下服务的地址。

Eureka设计

Eureka采用了CS的设计构架,Eureka Server作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eureka的客户端连接到Eureka Server中心并维持心跳连接。这样系统的维护人员就可以通过Eureka Server来监控系统中各个微服务是否运行正常。

当服务器(服务提供方)启动的时候,会把当前自己服务器的信息(服务地址、通信地址等)以别名的方式注册到注册中心上。另一方(服务消费方)以该别名的方式去注册中心上获取到实际的服务器通讯地址,然后再实现本地RPC调用远程RPC。调用框架核心在于注册中心,注册中心管理每个服务与服务间的依赖关系(服务治理),也就是说,在任何RPC远程框架中,都会有一个注册中心。

Eureka
Eureka

  • Eureka Server: 提供服务注册和发现,多个Eureka Server之间会同步数据,做到状态一致(最终一致性)
  • Service Provider: 服务提供方,将自身服务注册到Eureka,从而使服务消费方能够找到
  • Service Consumer: 服务消费方,从Eureka获取注册服务列表,从而能够消费服务

Eureka组件

Eureka包含两个组件:Eureka ServerEureka Client

Eureka Server

Eureka Server提供注册服务,各个微服务节点通过配置启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表会储存所有可用服务节点的信息,服务节点的信息可在管理界面中直观的看到。

Eureka Server 同时也是一个Eureka Client 在不禁止Eureka Server的客户端行为时,它会向它配置文件中的其他Eureka Server 进行拉取注册表、服务注册和发送心跳等操作。

Eureka Client

Eureka Client 可向注册中心进行访问来获取服务提供方通讯地址。在启动后,Eureka Client将会向Eureka Server发送心跳(默认间隔为30s)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server则会将该节点从服务器注册表中移除(默认90s)。

服务提供方

  • 启动后,向注册中心发起register请求,注册服务
  • 在运行过程中,定时向注册中心发送renew心跳,证明"我还活着"
  • 停止服务提供者,向注册中心发起cancel请求,清空当前服务注册信息

服务消费方

  • 启动后,从注册中心拉取服务注册信息
  • 在运行过程中,定时更新服务注册信息
  • 发起向服务提供方远程调用时