读过Laxcus分布式操作系统源代码,或者写过Laxcus分布式应用软件的人都知道,Laxcus容器和K8s、Docker大不一样。这件事在圈子里引起过大量的争论,比如有人说,为什么K8s提供的XX功能,Laxcus容器不去实现,或者说Docker的XX功能,为什么在Laxcus容器里被限制,对于这些问题,今天开一篇文章,专门说说这件事。
所有一切,咱们还是要从源头:产品的目标定位说起。
Docker和K8s做为容器软件,它们是一个完整的独立运行的产品。做为一个独立运行产品,需要包打全场,所以在产品技术实现上,要尽可能把用户需要的各种功能需求包括进去。所以结果是,现在的Docker大致是”namespace隔离,cgroups限制,rootfs文件系统”的组合。K8s做为容器集群管理平台,成为Pod+管理调度编排的合体。这是两个产品的主要定位,有区别和同时又能够配合。
而Laxcus容器大不一样,它不是一个独立的产品,只是Laxcus的一个组成部分。Laxcus分布式操作系统的产品定位是处理大型分布业务的系统软件,技术设计路线,是把复杂的分布处理作业流程进行规范化和简化,方便计算处理。具体做法就是把各种需求拆解做成不同的功能模块,每个模块完成分布处理流程中的一项或者几项工作,然后进行耦合,分配到不同类型的计算机节点处理,最后完成聚合,按照预定规则输出处理结果。
由于Laxcus的功能模块非常多,类似Docker、K8s容器里的大量功能,大部分已经被其它模块承担了,做为Laxcus分布式操作系统的一分子,Laxcus容器的权重不可能象Docker、K8s这么高。比如K8s的分布式作业操作,在Laxcus分布式操作系统上,有专门的调度器来处理,编排工作,由编排模块来解决,管理计算机集群,更是Laxcus分布式操作系统的本职工作,是Invoker/Produce分布模型在负责。剩下留给给容器的工作,只有托管应用软件这个职责了,另外还有安全监管的沙箱工作,也是由Laxcus容器来完成。
这也就解释了为什么很多开发者在读到Laxcus容器源码时,发现Laxcus容器为什么那么“轻”的原因了。
回到Laxcus本身,从功能分解角度来解释,Laxcus分布式操作系统这样的设计,更多的是延续了Unix的KISS思想,首先把复杂问题简单化,如果可能的话,再进一步把简单问题傻瓜化,尽可能降低用户的操作和使用负担。运行过程中,系统中的各个功能模块在各自范围内运行,通过相互配合协调,承担更大规模和范围处理需要。因为每个模块承担负责的范围都很小,这样做的同时,也解决了系统可靠性和稳定性的问题。
下面再说说使用Laxcus容器前的云编程注意事项。
1. 不允许云端软件利用线程在内存中驻留
由于云端的存储和计算量通常都十分庞大,这些处理工作,短则几分钟,长则数小时甚至数十数百个小时,所以Laxcus是一个特别强调资源复用的系统。为了让有限的计算资源尽可能分配给更多计算任务使用,Laxcus要求所有计算任务必须快进快出,这一点和搜索引擎的特点非常类似。如果任由计算任务启动线程占用内存,并且长期不释放计算资源,那么就很可能导致大量计算任务堵塞得不到处理,所以线程在云端被禁止使用。云端的应用软件在运行过程中,容器中的沙箱会检查是不是有线程启动。如果发现,除了禁止运行,还会当成软件故障提醒使用者。
2. 不允许云端软件使用Socket通信
Socket做为所有操作系统的一项基础功能,在解决了网络通信的同时,也造成了巨大隐患。比如各种的黑客和网络攻击行为,基本就是通过Socket来完成。Laxcus做为强调高安全性的操作系统,如果任由应用软件使用Socket在Laxcus计算机集群的各个节点之间收发信息,将严重影响系统安全稳定运行,所以Socket通信也被禁止。为了弥补这个损失,考虑到大量分布式计算工作确实有相互通信协调工作的需求,所以Laxcus也提供了一批API接口来帮助应用软件辅助通信。区别在于,这些接口都加装了安全阀门,只允许云端软件在规定的范围操作,任何越界行为都将被禁止。
这些功能,现在已经成为Laxcus云原生API中的一部分。
细心的读者应该会发现,由于Laxcus容器拒绝了云端的应用软件使用线程和Socket,应用软件在云端节点的运行过程,实际都变成了单线程工作,但是分布式计算工作通常非常复杂,同时也有大量需要多线程和驻留内存的工作,这些工作应该如何解决?
答案:放在终端和边缘端。
各位熟悉Laxcus分布式操作系统的用户应该都知道,Laxcus是云边端一体化的系统,它同时链接了终端、边缘端、云端。在这套分布式体系里,云端的定位是用来处理复杂的分布式存储和计算工作,要求计算工作快进快出,然后腾出空间留给后续计算任务使用。通过这个手段,尽可能地帮助用户实现降本增效的目的。根据用户反馈统计,当前这种计算模式的业务处理,是用户原来的裸机处理成本的1/20 – 1/50。
而客户端和边缘端的应用软件更类似于传统的单机应用软件。在边缘端,单机应用软件的角色倾向是服务器软件。在图形界面的客户端上,这是一个图化的窗口软件。在字符界面上,通常是一个命令。而在驱动程序上,它们更类似ODBC,允许嵌入集成到第三方应用上一起运行。
Laxcus分布式应用软件,把计算规模大、计算复杂度高的工作放在云端,计算规模小、处理简单、交互型的工作放在边缘端和终端。通过云端、边缘端、终端的三方协作,完成大规模、超大规模的分布式处理业务,以最大能力帮助用户实现降本增效。
结合软件,Laxcus分布式操作系统的硬件体系分工为:云端是超算和云计算集群,边缘端是普通的服务器,终端是PAD、手机、个人电脑。三者连接,充分利用各种计算环境的即有优势,让每个人都能拥有一台属于自己的超级计算机。
把云端、边缘端、终端连接起来、数存算一体,全方位安全管控,使用简单,成本最小化、效率最大化,这就是Laxcus分布式操作系统的根本目的。
Laxcus是一个开源、容错、高扩展、多人共享、多机协同分布运行的操作系统,通过分布式应用软件,聚合数据、算力、机器算法,处理大规模、超大规模的存储和计算工作。企业版支持百万级节点规模的计算机集群、亿级用户在线。
了解更多Laxcus分布式操作系统安装使用部署,图形设计、网络通信、分布式存储、大数据、分布式计算、边缘计算、人工智能、云原生、安全管理、开发分布式应用软件和其它前沿技术,请关注公众号“Laxcus分布式操作系统”,或者联系小编微信,加入产品技术群,让我们一起讨论最新的产品技术知识。