我们已经编写完了Consumer,并且在Consumer当中去调用了Provider,完成了服务与服务之间的一个通信,其实我们在
做案例的时候,我们是一步一步的,大家回顾一下,是不是先去创建了一个Eureka Server,然后再去构建了一个Provider,
然后去构建了一个Consumer,在Consumer当中,Provider完成信息的一个交互,那我们的顺序呢,主要是围绕哪块展开的呢,
还记得我们有讲Eureka的时候,讲到Eureka的三种角色,Eureka注册中心的三种角色,我们一直是按照这三个角色的步骤
去做的,第一个环境我们是先搭建了一个Eureka的集群,我们在集群当中,Service Provider,服务提供者的一个编写,然后
我们又编写了一个Consumer,去完成了一个消费者的一个编写,最后在服务的消费者当中,调用了Provider,我们编码的顺序,
其实我们讲解完毕以后,在注册中心当中,如何完成服务的发布和订阅,以及服务与服务之间如何通信的一个案例,我们来讲解
注册中心的一个架构原理,先来看Eureka的架构图,这个图是从哪里找来的呢,是从eureka的官网上去找到的,可以看一下,我们
可以从github上,在github上搜eureka,我们在这里可以看到有很多eureka关键字的,在这里我们看哪个呢,第一个不是,我们
用的是这个Netflix/eureka
https://github.com/Netflix/eureka
不是netflix的产品吗,所以哦我们点Netflix/eureka,在这我们可以看到,这个列表就是eureka的一个更新列表,在这里我们可以
看到这里是几天前完成的
Latest commit 9d07ac4 19 days ago
那么说明eureka的社区活跃度还是比较高的,然后在这里我们看有一个wiki
https://github.com/Netflix/eureka/wiki
在Wiki里面,在这里有一个Eureka at a glance,Eureka的一个浏览,我们点他,在这里我么可以看到,他有一些介绍,比如什么
是Eureka,在他的下面有一个Eureka的架构
这是Eureka的一个架构图,这是Eureka的一个架构图,我们看到Eureka架构图里面,表达的是对Eureka的一个介绍,
那么首先在这个图当中呢,同样存在着三种角色,第一个就是Eureka Server,就是我们的注册中心,这个是我们的
第一个角色,第二个角色是Application Server,其实Application Service是谁呢,是我们的Service Provider,
就是服务的提供者,然后还有一个Application Client,这个Application Client是谁呢,是我们之前写过的Consumer,
Service Consumer,或者消费者,我们现在把这三个角色搞清楚了,我们来看这个图,这个图是建立在集群基础之上的,
集群一个节点,这是集群一个节点,说明我们当前注册中心当中,有三个集群节点,然后我们来看第一个,ApplicationServer,
就是我们的Provider,我们这个服务要想发布出去,肯定要通过注册中心,那么他在发布当中呢,做了哪些事呢,来看这个箭头,
第一个,Service Provider,必须向Eureka Server完成register的一个注册,那么这个Registration表示什么含义呢,就是服务的
注册,其实所谓的服务注册,就是把自己的IP和端口注册给Eureka Server,这样的Server就知道你当前的基本信息,知道这些信息
以后,就给其他消费者提供接口了消费了,所以他要进行一个注册,第二个,有一个renew,我们还是回到三个角色这里,我们这里有
说明的,Eureka Server,通过Register,Get,Renew,等接口,提供服务的发现和注册,完成接口提供一些服务的注册与发现,所以我们
现在再来看架构图,这里就是register和renew,还有get和register,然后再来看注册完毕以后,这个renew表示什么含义,
在这个集群当中,他要知道你当前的服务,是不是还是存活的,他采用的是什么呢,采用的是一个发心跳包的方式,也就是说,
我们的服务提供者,provider,一旦在eureka的注册中心注册了,那么他会每隔30秒发送一个心跳包,告诉自己还活着,
所以renew就是一个发心跳包的,那么如果eureka在90秒以后,没有搜到Provider收到的心跳包,他就认为你已经死亡掉了,
他会把他的服务从列表当中剔除掉,这样的一个过程,然后咱们再往下看,下面还有一个cancel,这个Cancel表示什么意思呢,
是服务下线,这个服务下线,注意看这个箭头,是我们的Provider向注册中心发送的,什么意思呢,当Provider关闭时,
会向Eureka发送消息,把自己从服务列表中删除,防止consumer调用到不存在的服务,这是什么意思呢,大家注意看,
回到我们之前的代码当中,我们现在把consumer和provider都停了,然后我们到eureka的管理平台下刷新,我们的服务是不是
还存在,那么存在的原因是什么,刚才我们在这是直接就关掉了,但是我们现在只是把服务给停掉了,并没有优雅关机,
并没有这样的一个操作,那么这个时候,其实,Eureka Server会将服务做一个保护,我们看到的就是服务保护,
对于服务保护的服务,他是并不会把这个服务删除掉的,所以即便我们是把服务停掉了,对于这个eureka来讲,
在这儿他仍然是存在着的,他对这个服务是起到保护的作用,那么我们怎么让他把已关掉的服务关掉呢,这个就涉及到
服务优雅关机的问题,就是我们以后要讲的,所以Cancel就是当你的服务关闭时,向Eureka关闭信息,直接把Provider
结束掉了,发送Cancel的消息,在Eureka服务当中,他仍然是还有这个服务的信息,然后再往下看,下面还有一个
Get Registry,Get Registry是什么含义呢,获取服务的注册列表,我们这些服务,就是我们的Provider当中,
未来可能会与其他的服务是有通信的,所以他肯定要知道其他服务的信息,比如他的ID和端口,所以Get Registry是
用户获取其他用户的信息的,然后再往下看,现在Provider和Eureka Server的关系,这几个箭头我们就讲完了,然后再来看,
还有一个Replicate,这是一个双向的接口,那么这个Replicate是什么意思呢,集群中的一个数据同步,如果我是一个集群的
注册中心,那么每个数据之间肯定是要做同步的,那么他就是通过Replicate做数据同步的,Eureka集群中的数据复制与同步,
然后再往下看,有一个Make Remote,这个是远程调用,这个是Application Client了,这个是服务的消费者,是发起
远程调用的,就是发起请求,调用,这个就是作为一个Eureka注册中心,注册消息,一个架构图,我们拿到官网提供的架构图,
也根据他所提供的箭头,来表示每一个箭头是一个什么含义,按照JAVA图来看,
这个项目图并不是很复杂的,我们只要搞清楚箭头是什么含义就可以了,那我们对于Eureka的架构图就到这儿