跟我学代码架构设计模式之--关于对等分布式计算模型的设想

先说明下,我自己也没有专门研究过分布式计算相关的详细资料,这里我只是给出我对分布式计算的一种设想模型。

首先,要想做分布式计算,我认为应该有如下几点要求:

1 利用函数式编程的思想,把计算逻辑封装成“流式函数管道”或者说“计算流”,这个流设计为接收消息作为唯一的输入,流内部可以有状态数据,流中的函数在执行过程中可以改变流内部的状态数据作为计算的中间结果,函数流执行完毕后返回唯一的输出。根本原则是函数式编程思想,即:流式函数管道作为计算单位的“无状态”。

2 一个节点上可以安装许许多多的“计算流”来完成不同功能的计算,不同的计算流用唯一ID来识别。

3 扩展到分布式集群的时候,每个节点的地位是对等的,每个节点都有一套连接器来接受通过网络发送过来的消息包,每个节点既可以接收集群内的其他节点发送过来的消息包,也可以接受非集群节点的客户端发送过来的消息包。

4 对于使用分布式计算集群的客户端,可以连接任何一个节点发送消息。

5 集群内的每个节点应该实现一个集群消息路由用的消息总线代理,每个节点的消息总线代理都能够获得并保持一份集群全局共享数据资源(可以通过外部共享存储或者集群间广播来获取共享数据),共享数据包含集群中每个节点的IP端口等地址信息,以及每个节点上注册的“计算流”信息。

6 任一节点接收到客户端发来的消息后,都能够通过集群消息总线代理按一定的负载均衡等策略来实现消息的转发和响应接收。

如何实现?

通过上面的几条分析,我们发现,实现最核心的“集群消息路由总线代理”是最关键的。

有两种方案:

1 采用现成的MQ作为路由消息总线,缺点如下:

# 必须按MQ的协议封装我们的业务消息。

# 消息必须经过MQ中转路由,相比于节点间直接路由,多了一次IO。

2 引入共享存储或者广播同步集群信息等方式来注册和保存集群路由信息,每个节点实现“集群消息路由总线代理”,这个代理可以监听和访问集群共享数据资源来获得消息路由信息,每个节点根据一定的策略来实现消息的转发。

总结:分布式计算的核心点:1计算流管道 2消息传递

(完)

发布了63 篇原创文章 · 获赞 25 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/w1857518575/article/details/85696360