从用户侧需求研究来看,用户所需要的理想私有云方案,应具备:简单性、稳定性、可扩展性、灵活性。
1、简单性
私有云的架构跟公有云是不一样的,它更像一个 generic solution,根据客户的通用需求,提取出它最重要的部分,做成的一个软件,然后通过产品化普及落地。用户上来直接就能下载安装使用的、可缩短上云周期的一个标准化产品。
2、稳定性
稳定性对于保障企业的业务持续性、尤其关乎国计民生的场景中非常重要。比如省界高速收费站系统,还有一些大型、重型制造业的供应链管理系统,这些对时间的要求非常严格,这些软件一旦发生 crash,无法保证它的可用性的时候,会带来巨大的损失。
3、可扩展性
某些需要并发快速创建出成百上千虚拟机的场景中,比如很多教育行业的用户,实验室里可能有几百个学生,要统一打开一个环境,然后几十上百个虚拟机要同时快速启动......类似这种场景,就反映在云的 Scalability(弹性)的难度上。
4、灵活性
不同客户的需求也不一样,它们之间可能是相互矛盾的。举个例子,比如一些分布式系统,它可以支撑很大的规模,但它的应用性却并没有那么好。而且灵活性和稳定性之间也有一定矛盾,当灵活性很强的时候,代码可能会有各种各样的组合,各种各样的分支,很难保证测试在每个场景都能测下来,稳定性可能会打折扣。
私有云架构的技术秘籍
针对以上挑战,从用户实际需求出发,深度调研了当前主要开源架构的优缺点,研发了具有 4S 特性的私有云开源架构:
1、简单(Simple)
首先,在开源代码架构里,将不同的模块进行单独封装,通过一个 in-memory 的 message bus 去实现内部消息的分发,以及一些公共消息的封装;再将所有模块单独分成一个 Java bean,通过 message bus 来进行内外部通信。
综上得到的效果就是,对运维人员来说,云平台的运行就是一个统一的进程,但从软件架构上讲,它又分了很多模块,兼具简单操作与强大性能;对于普通用户来说,只需要下载一个 ISO,就可以在 30 分钟以内把云平台安装部署起来,真正享受简单易用的上云体验。
2、健壮(Strong)
针对稳定性,通过 workflow 来将代码通过各种组合去实现新功能,而不是不断修改原本的代码。同时,支持云主机与管理端的 HA、支撑高并发的 API 请求、断电后平台自恢复等,确保系统高效和稳定运行。
3、弹性(Scalable)
解决可扩展性的核心方法,主要依靠全异步架构,即在做架构设计时,为操作系统提供一些异步的接口;异步方法设置完成后,只需一个很小的线程,就可以支持数以万计的 API 并发量。
另一方面,采用一致性哈希环(Consistent Hash Ring),将任意一个资源处理到正确节点,避免对资源做加全局锁。在架构里,可以通过一个内存队列来控制并发级别(Synce level),得到更好的并发性能。
4、智能(Smart)
主要通过 Plugins 和 Driver 来分离接口和实现。具体来说,通过 strategy-Pattem Plugins 结构,将不同的底层对应到同一个接口,再对外提供服务。
开源软件彼此组合、依赖,连同各个为开源做贡献的维护者与开发者,所共同形成的包含上万节点的开源软件供应链,已经是当代社会中 科技 规模化协作发展的典范模式,也是激发软件创新活力的有效手段。