# cing-core **Repository Path**: HopeNing/cing-core ## Basic Information - **Project Name**: cing-core - **Description**: 云原生任务协调调度引擎 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-05-12 - **Last Updated**: 2024-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 本次研究的主要内容为一个云原生环境下的任务协调调度引擎,该引擎的设计目标是在公有云、私有云、混合云等各种云场景下,针对部署在Kubernetes集群中的服务,输出稳定、可靠的任务调度能力。在对该引擎的研究和设计的同时,也深入地理解、探讨和应用了与它相关的一系列前沿技术。 对于任务调度这一课题而言,本次研究针对传统的任务调度系统做出了详尽的研究,充分理解到它们在设计理念、架构思维、实现细则等各个方面优秀之处和不足之处,继而在本次研究设计出来的系统之中,对此类前辈产品设计上较好的一些点进行了传承,同时也规避或者改进了它们一些不好的点。例如Quartz和XXL-JOB对多语言支持并不是很好;它们因为依赖数据库锁,性能有很大的瓶颈;它们没有天然适配云原生环境等等。本研究在设计自己的引擎时,对它们这些技术弱点进行了逐一的攻破,通过改换技术栈、优化实现手段等方式完美避免了这些产品上的缺陷。在编写相关代码时,采用Golang多模块的方式,对各个单元进行了解耦合,对共用逻辑进行了很好的抽象,使得代码体积变小,程序运行更加高效。架构上,采用存算分离的架构理念,使得计算资源可以任意扩缩,用户可以依据规模对计算资源任意调整;将传统的调度单元拆分为规划器单元和指挥器单元,大大的增加了后期扩展以及用户自定义调度逻辑的方便性。 对于云原生这一思维(技术)而言,本研究从多个角度、多个层面去阐述和应用了相关的内容。从对Kubernetes的背景、价值、地位的探讨,到Service、client-go的应用,详细论证和阐述了Kubernetes在云原生时代的重大价值和重要地位,并在引擎的设计与实现中,真正运用了Kubernetes提供的底层能力;从对通信协议的技术选型(gRPC、HTTP/1.1),到对gRPC dnsResolver与Kubernetes无头服务的融合应用、负载均衡策略的研究,考察了gRPC在通信上的优势,在云原生场景中寻址方式和具体的应用手段;从对云原生部署形式的探索,到对Helm Charts实际的采用,本文论述了容器的价值和优势,并在部署引擎所依赖的etcd时,优先考虑云化的部署方式,采用了于etcd官方Operator改进后的自定义operator,将etcd集群部署在Kubernetees之中。这一系列对于云原生理念的探索,对云原生技术的落地的可操作性提供了强有力的证明,为云原生实践添加了又一个案例。 本次研究中设计出来的云原生任务调度引擎,填补了云原生场景中没有云原生任务调度系统的空白。更重要的是,它提供了易于用户使用的API以及易于开发者进行扩展的任务生命周期Hook机制,为中小型企业有足够精力和能力定制开发任务调度系统提供了底层支持。进一步来讲,该引擎达成了本次研究的目标和设计理念——可以输出稳定的、可靠的任务调度能力,为企业生产的“提效降本”做了很好的保障。