N台机器同步的问题

题图:洗完打光板,残留的水滴,黑色的背景衬托的像是盐湖。

前年写过一篇文章《与人沟通-2016-12-07》,讲的是与单个人沟通的事情。一年多过去,我想把沟通这件事再拓展。

大概半年前,我转向了管理岗位,日常多了一份统筹的工作任务。以前跟人沟通,主要是点对点,只要努力把我的「常识库」同步给对方即可,而现在跟团队沟通,则是把所有的人的「常识库」同步给团队内所有人。我很擅长跟单个人进行沟通,并且同步我两的「常识库」,对应就是要耗费双方较多的精力。而团队沟通,至今我还在摸索,没有找到我觉得满意的方案。

前者,就像在两台机器之前建立了单条信息链路,双方均只需要考虑一个输入和一个输出。

后者,则是N个机器处于随意建立连接的网络之中,每一个机器有N-1个输入和N-1个输出,每台机器因为增加了输入和输出而耗费了更多的计算资源(内耗)。同时因为网络传输本身是不可靠的,各种延时和线路上数据出错或被篡改,使得N台机器同步的问题更加棘手。

上面是我简单建立的模型,目前我还没有去搜索过是否有针对这个问题的专业解答。

回到我面临的现实问题,我目前采取的做法是:1.建立流程;2.设立一个信息中心;3、全局广播。

建立流程

团队内每个人如果跟其他所有同事都建立直接的沟通链接,从最基本的计算需求上考虑,每个人的输入和输出都是N-1,我把团队成员划分成五个小圈(五个部门),每个小圈选择一个关键节点(即部门经理),圈内的成员是完全互联,除关键节点外,圈内成员不能跟外界直接建立链接。关键节点之间则是完全互联。类似于下图。

在建立上图的网络结构的时候,遇到了一些问题,例如:

成员习惯难以改变,并不想机器那样完全根据所给予的权限去执行,私自建立链接的情况时常发生。

成员之间建立的链接不稳定(各种原因沟通不畅)或者是使用的工具不同造成无法沟通(协议不同,一方发出http数据,另一方反馈ftp二进制)。

节点之间协调的问题,在同一级的网络中,节点都是同样的地位,因此当一个节点同时受到其余多个节点的请求,被请求节点难以决策优先级,而在决策优先级的过程中就消耗了很多资源。

建立信息中心

为了解决同级节点协调的问题,有段时间我增加了一个中心节点,所有关键节点的通信全部经过中心节点,虽然部分解决了同级节点协调的问题,但整个信息传输全部经过中心节点,作为真实的人,并非24小时在线,响应速度也常常在半个小时以上,最终的结果就是,这个中心节点拖慢了整个团队的速度。

中心节点的网络

经过上一步的测试,我们在流程中增加了一步,建立「模板信息」。根据实际业务需求,把每一件事拆分成多个环节,在每个环节都会有特定的操作流程,也就是全局告知,如果遇到一个模板信息内的情况,按照已设定的流程走,而无需在整个网络内广播路由寻找路径。当整个网络的输入遇到了非模板信息,则经由中心节点,给出新的路由方式。

上面这一段,说人话就是:建立一个基本业务流程清单,遇到一个清单内的业务,则根据清单内的设定走流程,遇到清单以外的业务,则经过老板的决策重新分配任务。

全局广播

团队内成员在工作中,除了按照流程进行操作,有一个很关键的事情是,需要及时获取最新的信息和安排。在建立流程之前,我们典型的信息获取机制是:A已经知道了某个业务更新的情况,过了几天发现B给出的提案是根据上个月的计划做的,A和B进行沟通,此时A和B完成了情况更新。然后C加入A和B的讨论,C带入了一个新的信息,该信息没有经过校验且没有版本号,为此A和B无法确认C的信息是否是最新的信息,还是中间版本的信息,于是ABC去找信息发布者D,D被ABC弄糊涂了,不得不再跟客户E确认一次。走完上述一个流程,最起码一周过去了,而B还是没给出新的提案。

为此我们目前设定的流程是,对业务信息进行分类,每一类业务信息只能有特定的几个节点发布更新信息,其余节点只有接受的权限而没有发布的权限。举例:客户的需求提出更改,只接受商务同事跟对方商务同事确认的信息,而不接受对方的技术对接人员提出的更改需求。

在一定周期内,有任务的节点,需要定期通知相关节点,同步最新的信息。

全局广播,上述只是一个概念性的方法,实际操作上我们必须要借助特定的工具来实现100%传达。

今天的这篇文章,因为我没有打腹稿,所以写的比较杂乱。了解网络通信或者是学过拓扑的读者,应该是可以很直接的知道这样的问题怎么解决,毕竟我们现实世界里的通讯都是有成熟的方案。我写出来,有一个原因是,人跟机器不同,并不会完全按照设定的协议去执行。另一个原因就是,学习网络通信的时候,感觉通信协议还挺简单的,但是自己建立一个小范围的通信机制时,才发现是如此的困难。

发表评论

电子邮件地址不会被公开。 必填项已用*标注