并行/分布式集群的一点想法

最近在构思一个并行/分布式集群的平台架构,用来解决目前很多服务器无法动态扩容的问题,在过去的一些分布式项目中积累了一些经验,这些架构都是对这些项目共同点的抽象。

给它定义了一些特性,先记下来:

* 集群由多台服务器组成,每台服务器安装最基本的运行时平台;
* 平台负责集群内节点间通讯、应用实例的管理;
* 平台是多进程架构,任何应用都是独立的用户进程,使用IPC来通讯;
* 平台内底层通讯使用节点方式,类似Erlang的PID;
* 应用的实例对Pid不可见,它一般只使用其它应用的接口,通过应用ID和接口来访问,不关心其它应用的部署位置,所有应用都是位置无关的;
* 应用实例运行的位置由平台来调度,调度根据应用对自身的描述,比如对并行计算要求较高的应用可以分布在很多计算性能高的节点上,对内存要求高的应用分布在内存大的节点上,负责存储的应用只能固定在节点上。
* 应用可以动态地在节点上迁移、扩展,无状态应用总是可以任意迁移,有状态应用如果实现了迁移接口,也可以进行迁移;
* 平台负责应用实例的监督、启动、关闭等;
* 平台负责应用的安装、卸载、部署、启动、关闭、热升级、版本替换、监控、统计、报警等;
* 平台上的编程都是基于接口的,类似COM组件接口;
* 应用都是动态链接库,使用平台专有的loader在最低权限的用户下运行;
* 平台支持通用的配额管理策略,提供资源的应用可以注册资源的配额计算方式,使用资源的应用被平台的配额管理限制;

你可能感兴趣的:(编程,应用服务器,框架,erlang,项目管理)