简单描述这个过程:
生产者与消费者之间的供需关系仅凭这两者很难有效维持,比如某个消费者挂掉了,而生产者并不知道,就会依然给挂掉的消费者提供内容,那么此时的内容明显就是未获取到的,从而出现输出问题。或者,某个生产者挂了,消费者仍然去请求该生产者的内容,很显然也是请求不到的。
为了让两者之间能够正常沟通,构建一个代理,称为注册中心,注册中心的作用就是用于分配消费信息到不同的生产者。
也就是构建一个第三方来进行管理:生产者一旦开始生产,就需要去注册中心进行注册,将其ip地址等有效请求信息存放在注册表中,消费者从此之后不会在未建立连接时就去访问生产者,而是先通过注册中心,让注册中心去查找注册表,让消费者与某一个生产者进行匹配。匹配成功后,将对应的ip地址等连接信息给消费者,然后消费者再进行订阅。
需要明确的是,一个消费者申请的内容(接口),可能会涉及多个生产者。比如某个模块有多个生产者在进行维护,对应不同端口号。此时消费者去像注册中心申请时,注册中心会将这些端口号都交给消费者,消费者首先进行订阅,并将其存表,自身根据负载均衡从表中选取一个生产者构建链接。
最后,生产者与注册中心构建一个心跳协议,如果生产者挂掉了,注册中心的表与某个订阅该生产者的消费者维护表都会进行更新,从而不会错误的访问这个挂掉的生产者。