200 likes | 391 Views
LOST系列开源项目介绍. 项目位置:code.google.com/p/eejian. 沉淀、分享、学习和进步. 易剑 2010年七月. 纲要. 项目成员 util sys net server table sender paser JDSP JDFS JMBR. 项目成员. loader. http_parser. time_keeper. util. sys. net. server. httpd. sender. JDSP. observer. JDFS. table. JMBR. util.
E N D
LOST系列开源项目介绍 项目位置:code.google.com/p/eejian 沉淀、分享、学习和进步 易剑 2010年七月
纲要 • 项目成员 • util • sys • net • server • table • sender • paser • JDSP • JDFS • JMBR
项目成员 loader http_parser time_keeper util sys net server httpd sender JDSP observer JDFS table JMBR
util • 日志接口(提供对log4cxx的包装) • 配置接口(提供对tinyxml的包装,支持单值、数组和子树方式读取) • main函数模板 • 数组队列 • 字符串工具类 • 整数工具类 • token类 • 列表队列/可列表的
sys • 原子锁 • 互斥锁 • 事件 • 动态连接库加载 • 系统调用异常 • mmap • 读写锁 • 引用计数 • 系统信息(内存、CPU和进程的内存及CPU等) • 系统工具(CPU个数、当前进程全路径等) • 线程 • 线程池
net • epoll • 监听/监听池 • 服务端socket • 客户端socket • 网络工具(根据网卡名取IP地址等) • 超时相关
loader • 不需设置LD_LIBRARY_PATH直接运行指定程序
table • 节点表 • IP到ID的映射 • ID取值从0开始,每个ID对应一个唯一的IP,但是同一个IP可以对应多个不同ID • jian_sender根据ID分发消息
sender • 多线程客户端工具 • 主要用于节点间转发消息 • 不适合大数据传输 • 支持动态更新“节点表”,以实现节点容灾
server • TCP服务端框架 • 提供简单的编程接口 • IProtocolParser:协议解析接口 • IProtocolTranslator:协议转换接口 • IResponsor:请求响应接口 • 多线程,高效,可管理
observer • 提供可观察机制 • 提供可观察对象抽象接口 • 定时触发数据采集和上报事件 • IObservable:可观察对象抽象接口 • IDataReporter:数据上报接口
http_parser • HTTP包解析器 • 采用command模式,简洁高效,可复用 • 只需要实现IHttpEvent接口
httpd • HTTP Server • 主要定位于高效的静态页面处理 • 将支持基于so类型的CGI • 兼容exe类型的CGI
JDSP • 分布式业务平台(Distributed Service Platform) • 提供三种对象编程模式: • object:无状态对象模式,object总是线程安全 • service:状态对象模式,总是非线程安全 • session:总是由service创建,且线程安全
JDFS • HDFS的C++简化版本 • 基于JDSP实现
JMBR • MapReduce的改进和简化版本 • C++实现 • 无数据倾斜问题 • 精细化调度: • 类似于时间片的Job切换 • 类似于操作系统的Job优先级
代码结构 • 代码主目录下分: • include:对外开放的头文件 • src:存放源代码和内部头文件 • lib:编译后生成的库文件 • vcproj:VC6.0工程文件
编译介绍 • automake编译方式 • Make.rules文件定义通用编译规则 • 增加和删除文件,都不需要修改Makefile.am文件
第一次编译 • 使用SVN从https://eejian.googlecode.com/svn/trunk下载源代码 • 进入src目录,并依次执行: • gen_makefile_am.sh • gen_configure_ac.sh • 按automake方式执行configure • 按automake方式执行make等 • 注:第一次和每当有CPP文件的增加或删除时,都需要重新执行上述步骤,否则可以跳过gen_makefile_am.sh和gen_configure_ac.sh两步。
完 QQ:784027584 email:eyjian@qq.com eyjian@gmail eyjian@live.com