dubbo生产_数据库


Consumer:消费者

Provider:生产者

Registry:注册中心(相当于之前的等待–wait 和唤醒—notify)

Monitor:监控中心

执行的顺序

0:先启动生产者;
1:生产者将自己启动的消息报告给注册中心;
2:消费者启动,通知注册中心;
3:注册中心通知消费者有生产者了;
4:消费者消费(调用方法);
5:生产者和消费者将自己的调用信息和被调用信息发送监控中心;

要说明的是,必须要先启动生产者,就像咱们平常生活一样,只有生产了某样东西你才能去消费,对吧。
可能会有读者有疑问,这个生产者、消费者和上面的流程图有什么关系,或者说,生产者、消费者对应流程图中的哪个部分呢?
在这里我想用一些拟人化的手法解释一下,效果或许会更好点。

生产者相当于 service 层,拿上面的流程图来说,可以看成有三个生产者:service、service_2 和 service_3。
随便拿其中一个生产者举例子,比如说 service_2,它能够利用 dao 层去数据库取出数据,也就是说生产者可以拿到他人需要的数据,这也正符合「生产者」这个名词,service_2 可以 “生产” 出消费者需要的东西(数据)。
生产者在产生之后会先去 Registry 这个地方去「报到」,告诉Registry 它能生产哪些物品(即取出哪些数据)。
消费者相当于 controller 层,暂且把消费者叫做 c。如果 c 想要买某样东西(可以把这样东西看成数据库中的数据),但是不知道该去哪里买,那么这个时候,它就会去 Registry 这个地方,告诉 Registry 它需要这个东西。
由于生产者产生之后在这里「报到」过了,所以 Registry 会告诉消费者 c,生产者 service_2 可以给你你想要的东西(数据),然后消费者 c 就会去找生产者 service_2 而不去找其他两个生产者,这样一来 service 层的压力就会小很多。