`
m635674608
  • 浏览: 4930473 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

开源分布式计算框架(DC4C)

 
阅读更多

1        概述

1.1        简介
        DC4C是一个通用的分布式计算框架,研发初衷来自于2015年初我开发互联网数据挖掘平台的任务调度的技术需求。经过2015年4月一个月的研发,发布 第一版原型,而后不断优化完善,扩展功能,目前最新版本为v1.5.5。只依赖开源库fasterjson。
        DC4C借鉴了Hadoop、Fourinone等分布式产品的设计,加入自有特色,充分考虑高可靠性、高伸缩性,也是业界首先实现有向无环图任务调度引擎的分布式计算框架之一,特别适合批量任务流处理的分布式架构。

        DC4C核心完全用C编写,手工代码约1万行。此外大量使用代码自动化生成技术(如json报文的打包解包),大幅减小了开发量、提高了开发效率、减轻了底层细节编码压力。用户API包和计算节点也可以用其它语言实现以支持不同语言开发的应用。
       目前已实施某银行批量处理平台上线稳定运行半年。

1.2        体系结构
        DC4C体系结构包含基础平台架构、用户API包和有向无环图(下面简称DAG)的任务调度引擎。

        基础平台架构包含三类节点:注册节点、计算节点和用户节点。
        注册节点(守护进程):负责接受计算节点注册、状态变更、注销;接受用户节点查询空闲计算节点;接受telnet连接在线查询和管理。进程框架为父子进程监控进程异常,可以同时起多对保持计算节点注册信息冗余,提高可靠性。
        计算节点(守护进程):负责向注册节点注册;接受用户节点分派任务并反馈执行结果;随时向注册节点报告状态。进程框架为父进程+子进程组(计算节点组)监控进程异常。
        用户节点(可以是守护进程、命令行进程或其它任何类型的用户自己控制的进程):用户程序调用用户API,向注册节点查询当前空闲的计算节点,分派任务给计算节点并监督执行。

        计算节点启动后向注册节点注册后保持长连接,并互相心跳。
        用户节点用户应用通过分派任务API向注册节点查询当前空闲的计算节点集合,然后发送执行命令行和执行程序MD5给计算节点,计算节点校验执行程序MD5,如果不匹配,联动请求用户节点分发新版程序,然后再执行命令。

        用户API包供用户节点和计算节点应用调用,实现用户节点的任务分派、计算节点应用控制等功能。

        有向无环图(DAG)任务调度引擎封装了基础平台架构提供的基本任务分派功能,实现了有向无环图数据结构的任务流的执行控制,便于用户直接搭建复杂任务依赖关系调度平台。

1.3        功能和优势
        * 对于应用开发人员,无需编写任何并发控制细节代码(如fork、wait)就可轻松实现本地或集群的并发管理,以及本地风格(wait子进程退出值status)的执行反馈。计算节点用户应用本身就是可执行程序,便于本地调试。
        * 对于系统运维人员,随时根据当前系统负载随时伸缩(扩大或减小)集群规模,而不影响系统的功能性,更无需应用开发人员参与。集群伸缩无需重启等影响当前正在处理的动作,没有配置文件,大大减少运维复杂度,实现高伸缩性。
        * 通过网络连接心跳、父子进程监控、数据冗余等实现高可用性。
        * 用户API包提供了单任务分派、批量任务分派、多批量任务分派等高层封装API,也提供了低层API供用户自己封装适应自己应用场景的任务分派器。用户API包也提供了同步、多路复用等分派模式,支持各种用户程序结构。
        * 实现了一个DAG任务调度引擎,是业界最早实现该数据结构任务调度引擎的分布式计算框架之一。
        * 用户应用程序自动检查应用版本和自动分发部署。
        * 支持telnet直接查询和管理集群状态。

        * 所有类型节点可自由部署在任意台机器内;支持最多8个注册节点和(理论上)6万个计算节点。

开源项目首页
http://git.oschina.net/calvinwilliams/dc4c
https://github.com/calvinwilliams/dc4c

 

http://www.oschina.net/news/67002/dc4c-1-5-5

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics