LAXCUS分布式操作系统是AI时代的数存算超融合一体化平台,它可以凝聚海量异构算力,构建算力泛在、逻辑统一的超大规模异构算力服务集群,分钟级构造为HPC(高性能计算)应用定义的超算云,轻松拥有神威、天河、曙光三大超算的P级算力。LAXCUS支持业界主流处理器,包括X86、ARM、龙芯等,算力芯片支持英伟达、寒武纪。LAXCUS始终坚持开放理念,积极拥抱生态联盟应用开发者,共同融入到以提升客户业务价值的商业生态中,通过服务客户,创造共同价值,实现共同的发展。
LAXCUS的源码所有包都以com.laxcus开头,大概分成如下几类,每一类基于一个根命名,再做更多的细分。
一、节点
<1> com.laxcus.节点 – 以节点名称开始,如com.laxcus.work,即work节点源码,启动入口是WorkLauncher, 在WorkLauncher中有main方法,进程由此开始启动,在导入各种资源后进入循环状态,直到最后被要求退出。
<2> com.laxcus.节点.invoker – 节点所有的异步调用器,异步调用器执行各种具体的分布式工作,比如在work节点的WorkConductInvoker,它是执行work节点阶段的分布式计算工作。
<3> com.laxcus.节点.pool – 这个包里是所在节点的运行时工作池,它基于线程执行存在,受到XXXLauncher的管理。工作池有两个核心池,所有节点都存在的,即CommandPool, InvokerPool,CommandPool是本地节点接受其它节点发送来的命令和保存这些命令,然后触发这些命令,调用异步调用器(xxxInvoker)运行,InvokerPool管理异步调用器的持续工作。比如work节点的命令池就是WorkCommandPool, work节点的调用器池是WorkInvokerPool。
二、节点配置
<1> com.laxcus.site – 节点配置的基础类是com.laxcus.site.Node,各种节点基于它派生,比如work节点就是com.laxcus.site.work.WorkSite,home节点是com.laxcus.site.home.HomeSite,其它亦然。
三、线程
<1> com.laxcus.thread – 这个包里有VirtualThread类,基于线程的工作都从它派生,如Call节点的启动类CallLauncher,它做了几层继承,开始都是VirtualThread,还有象资源池StaffOnCallPool,开始也是VirtualThread。
四、命令
<1> com.laxcus.command – 所有命令的基础类是com.laxcus.commmand.Command,系统运行时会相互投递各种命令到所在节点,通过命令执行各种分布式业务,命令以异步方式执行。比如分布计算命令Conduct,它做了几层继承,开始就是Command。
另外在这个包里,还有一个命令:ShiftCommand,它是一个本地转发命令。这个本地转发命令只在本地运行,不会分发到其它节点上运行。ShiftCommand里包括一个Command命令的子类和命令勾子。当本地需要获得一个需要远端协助,并且在明确结果后才能运行的业务时,会产生一个 ShiftCommand,放到异步命令池(xxxCommand)中去处理。
五、分布式组件
<1> com.laxcus.task – 各种在后端执行的分布式组件,都基于这个包的派生。比如分布式排序工作,它属于conduct分布编程框架,涉及Init,Balance,From,To,Put几个阶段,分别继承自com.laxcus.task.conduct.Init,com.laxcus.task.conduct.balance, com.laxcus.task.conduct.from, com.laxcus.task.conduct.to, com.laxcus.task.conduct.put几个包的类。
另外就是管理分布式组件的各种池,比如com.laxcus.task.conduct.InitPool,它管理Init阶段的分布式组件。
分布式组件按照分布式框架在LAXCUS后端执行,没有图形界面和交互界面。
六、应用
<1> com.laxcus.application – 应用的前端入口,表现形式就是你在桌面上看到的那样,鼠标点击可以在本地运行。
七、网络通信
<1> com.laxcus.fixp – 所有网络通信都基于FIXP协议,FIXP协议分成两个信道:命令信道和数据信道,命令信道用来发送各种基于com.laxcus.command.Command的命令和接受反馈结果,数据信道以MIMO模式接收发送数据。
八、工具
<1> com.laxcus.util – 工具包有很多细分,比如com.laxcus.util.datetime是处理时间的包,com.laxcus.util.classable是处理可类化的包,可类化类似串行化,它把类中的信息生成一组字节流,通过网络传递出去。
九、 数据存取
<1> com.laxcus.access – 涉及大数据和SQL的都在这个包里面,子包也是从它派生。大数据的存取工作是通过JNI交给底层的C代码处理。
十、远程访问(RPC)
<1> com.laxcus.visit – 远程访问的基础类是com.laxcus.visit.Visit,它是空的,但是各种RPC类都是从它派生,比如com.laxcus.visit.CommandVisit, com.laxcus.visit.EchoVisit。
其中最关键的是com.laxcus.visit.CommandVisit,它根据节点有很多派生,比如call节点的是com.laxcus.visit.call.impl.CommandVisitOnCall, CommandVisitOnCall在call启动时,会被CallLauncher调用,进入运行状态,接受各种com.laxcus.command.Command命令的子类,再交给CallCommandPool处理。
十一、其它
后续将会陆续更新其他部分的源码解读。