1、海量数据搬运工 Datastream大纲Datastream 产生的原因Datastream 的结构和特征Datastream 关键技术点分享Datastream 应用场景Datastream 未来展望场景 1 BI,xx 应用想做下日志的统计分析,收集一下吧场景 2 线上的服务器日志做下分析吧,可能有DDOS场景 3 要拿数据库增量数据,建索引、反攻击、做分析,写点程序吧怎么办呢 问题:每个产品数据都不相同,不同部门代码复用率低 后果:BI、反垃圾、搜索引擎的同学都要疯了 解决方案:我们搞个统一的收集数据的平台吧Datastream 应运而生 我们不生产数据,我们是数据的搬运 工大纲Data
2、stream 产生的原因Datastream 的结构和特征Datastream 关键技术点分享Datastream 应用场景Datastream 未来展望什么是 Datastream Datastream 是一个数据传输平台,用于连通数据源和终端用户的桥梁他最大的作用就是:让终端用户对数据获取方式透明 让终端用户对数据的格式透明系统框架特性特性说明说明搬运节点线性扩展集群中节点可动态增减,个别节点宕机不影响集群数据来源多样化可支持多种数据源,新数据源支持简单数据存储终端多样化可根据产品需要支持不同类型的数据存储终端数据分流和复制根据产品需要对数据进行分流和复制输出数据格式统一统一采用结构化JS
3、ON的数据输出格式,产品端提取数据简单强大的管理平台管理平台有各种强大的向导功能远程控制所有的Datastream客户端都通过管理平台统一做远程控制,无需登录服务器系统特征大纲Datastream 产生的原因Datastream 的结构和特征Datastream 关键技术点分享Datastream 应用场景Datastream 未来展望关键技术点一、异构数据源解析二、数据分流三、数据可靠传输四、数据传输效率一、异构数据源解析 Datastream 从扩展性上来看能支持各种各样的数据源,目前支持一下数据源:文本文件 Syslog 日志 Mysql binlog文本日志来源 主要是应用服务器的日志
4、文件通过一个轻量级的 agent 来 tail 服务器本地日志并发送到 datastream文本日志解析的特点 支持各种滚动方式的日志 支持断点续传 轻量级,占用系统资源少 对应用无侵入 支持多行相关联日志输出为一行(例如 java 异常,结构化的 JSON,xml 等)tailFile 多行解析的实例Syslog 日志来源 这是一个通用的日志协议,不受编程语言限制,来源有 服务器系统日志 应用的重要日志 Apache,nginx 等代理日志Syslog 日志Syslog 日志解析特征 平台无关 应用侵入性低Mysql binlog 来源 Mysql binlog 是 mysql 增量数据的记
5、录,对于实时计算有相当大的作用Mysql binlog 解析关键技术 全自动化用户配置 Binlog 转换 JSON 反向查询 事务支持 强顺序性保证全自动化用户配置 全自动加载数据库表结构,支持分布式数据库二进制 binlog 转换为 JSON 可以根据用户配置将数据库中的增量数据转换成结构化的 JSON,供产品使用反向查询 反向查询有些应用(比如实时索引),需要变化的数据关联的其他数据构成完整数据事务支持 支持 mysql 事务,一个事务内的操作会封装为一个在一个 JSON 内,同时保持事务的执行顺序 过大的事务会进行切割,避免内存消耗过大强顺序性保证 binlog 的顺序如果出错,可能会
6、导致后端产品最终数据状态的错误,因此 datastream 在处理 Binlog 时采取了强顺序性的保证 每个 mysql 节点的事务操作顺序依次发送 事务内操作保持顺序 MQ 消费客户端的 ack 机制保证消费的顺序性和不遗漏消息 MQ 消费客户端异常退出会重新获取上次未完成的消息二、数据分流 日志分流规则的基础为数据标签 数据标签唯一标志一类数据的分流方式数据分流隔离机制 不同数据标签之前数据传输隔离,保证不同流量的产品之间传输速度不会相互影响 不同分流方式之间隔离,保证某个数据终端宕机或传输速度慢不会影响其他分流方式三、数据可靠传输 持久化机制 收到消息先做持久化后发送 ACK 机制 确
7、保后端模块已收到数据,否则重发 异常数据处理 无法处理的异常数据保存在制定位置,可追溯来源数据可靠传输 全面覆盖的监控程序 监控所有进程的正确执行 监控系统有无异常日志 监控系统吞吐量是否不足有延迟 监控产品数据流量异常波动 监控产品有无不符合协议的日志四、数据传输效率 分布式处理,可线性拓展 数据批量传输,批量 ACK 采用 thrift 序列化机制 采用 nio 优化数据持久化效率 多线程处理日志并保证顺序性(如日志过滤)大纲Datastream 产生的原因Datastream 的结构和特征Datastream 关键技术点分享Datastream 应用场景Datastream 未来展望Da
8、tastream 应用场景 一般产品需要数据做哪些操作呢?存储备份 条件查询 分析运算 构建索引Datastream 都能满足Datastream 应用场景 Datastream 目前可以支持以下应用场景:离线数据分析 实时数据分析 实时索引 日志归档 日志统计报表 日志报警监控大纲Datastream 产生的原因Datastream 的结构和特征Datastream 关键技术点分享Datastream 应用场景Datastream 未来展望Datastream 未来展望 Datastream 项目将来会更好地发挥搬运工角色,做一个效率更高,安全性更好的搬运工 后期会考虑实现如下的功能:数据追踪系统,提升数据安全性,类 似快递 更好地与后端数据服务整合 非结构化日志转为结构化日志未来的 Datastream