软件开发发展到今天,我们经常要面对非常复杂的业务,需要庞大的分布式集群来实现高效的业务处理,稍大一些的应用,后端都是多进程实现,分布式部署的,这时候多进程间的通信往往会成为问题。如果进程间两两建立连接,不但耗费资源,而且连接太多,需要的端口也多,难以管理。
为解决这个问题,我们很容易想到用一个消息服务器来管理连接,所有的需要与其他进程通信的进程,都与这个消息服务器建立连接,所有的消息都经过这个消息中转站做转发。
我们需要设计一套协议来实现这个流程,首先,每个进程需要一个标识,发消息时,指定收消息的人,收到消息的人也就知道要把消息回复给谁。消息服务进程需要维护一个map,以保存与各个进程的通信通道(这个设计是我在华为的网管系统看到的,华为叫做MDP消息分发进程,我也只是大概了解了这个思想,却没有详细的读华为MDP的源码,没有领悟他们的精妙设计。现在想读他们的源码,却没有机会再接触它了,很是后悔呢。现在我把我做的东西也命名为MDP)。我设计的通信协议如下:
当然这个协议还有很大的优化空间。
然后是服务进程的设计,现在采用的设计思路是:
1. 每个进程想