靠自己努力赚钱:
http://72191.taobao.com
0.介绍
TimeTunnel(简称TT)是一个基于thrift通讯框架搭建的实时数据传输平台,具有高性能、实时性、顺序性、高可靠性、高可用性、可扩展性等特点。
高性能
2k大小的消息,峰值每秒4w TPS的访问。淘宝3台服务器,每天处理2.3T(压缩后)数据,峰值每秒50MByte流入流量、130MByte流出流量
实时性
90%的消息5ms以内送达
顺序性
如果你开启了顺序传输功能,timetunnel保证消息的发布顺序和订阅顺序是一致的
高可靠性
存储方面,我们设计了内存->磁盘->hadoop dfs三级缓存机制,确保数据可靠。 系统方面,我们将服务器节点组织成环,在环里面每一个节点的后续节点是当前节点的备份节点,当某节点故障时,后续节点自动接管故障节点数据,以保证数据可靠性
高可用性
单个节点故障,不影响系统正常运行
可扩展性
可以对系统进行横向和纵向扩展,横向扩展可以向现有的服务环里面增加节点,纵向扩展可以增加服务环
目前TimeTunnel在淘宝广泛的应用于日志收集、数据监控、广告反馈、量子统计、数据库同步等领域。
1.源代码 http://code.taobao.org/svn/TimeTunnel/trunk
2.安装
第一步: 获取源码
svn co http://code.taobao.org/svn/TimeTunnel/trunk
第二步: 编译
mvn clean install -Dmaven.test.skip=true
编译成功后各模块代码:
broker: broker/target/dist
client: client/java/target/dist
router: router/target/dist
第三步: 安装
将各模块拷贝到目标目录即可,假设目标目录为/usr/timetunel,则可以这样拷贝:
cp -r broker/target/dist /usr/timetunnel/broker/
cp -r router/target/dist /usr/timetunnel/router/
cp -r client/java/target/dist /usr/timetunnel/client/
第四步: 启动 zookeeper
timetunnel需要zookeeper同步状态,因此假设你的系统是安装并启动了zookeeper
第五步: 启动router
配置文件: /usr/timetunnel/router/conf/router.properties, 将ZK_HOST_LIST设置为你自己的zookeeper地址
执行/usr/timetunnel/router/bin/router-start.sh
第六步: 启动broker
3.相关配置信息
zookeeper
zookeeper是apache的开源项目,主要功能是状态同步,因此TimeTunnel也选择zookeeper作为状态同步的工具,将系统运行所需要的状态信息都存储在zookeeper里。以下介绍的配置结构都是指zookeeper里面的存储结构,所有介绍以"/"目录开始,由于zookeeper在访问时可以配置根目录,因此"/"是相对的。假设你的访问zookeeper的链接配置为host1:port1,host2:port2/tt2,那么"/"就是从/tt2开始。另请注意,配置项的值以json形式存储。
用户信息
/user
/name1 {"password":"xjddjdk"}
/name2 {"password":"jdjdhsd"}
/name3 {"password":"dhiksdh"}
/user目录下是所有可以访问TT的用户列表,每一个列表项的值是对应用户的密码,client就是使用这个用户和密码向router发起链接认证的。
注:此信息需要管理员设置。
topic信息
/categories
/click {"timetolive":"60","group":"group1"}
/subscribers
/userA-click
/userB-click
/p4p {"timetolive":"60","group":"group2"}
/subscribers
/userA-p4p
/userB-p4p
所有的topic信息都位于/categories目录下,每个topic都有两个属性:timetolive和group,timetolive是指属于此topic的消息在TimeTunnel中的最长存活时间,如果超过最长存活时间仍然没有被消费,则自动被删除;group是指属于此topic的消息应该被发布到那个broker环,一个broker环就是一个group。
每个topic下面都有subscribers目录,subscribers目录下是所有订阅ID,每一个订阅ID以username-topic对的形式存在,username和topic之间以中划线分割,每个用户对同一个topic只能订阅一次。
注:此部分信息也需要系统管理员设置
client连接信息
/clients
/host1
/1f264fe0 {"type":"pub", "timeout":"10"}
/host2
/1f264fe4 {"type":"pub", "timeout":"10"}
/host3
/1f264fe6 {"type":"pub", "timeout":"10"}
/host4
/1f264f50 {"type":"pub", "timeout":"10"}
/host5
/90cbcba7 {"type":"sub", "timeout":"10", "subscriber":"userA-click", "receiveWindowSize":"100"}
/1f2f4fe8 {"type":"sub", "timeout":"10", "subscriber":"userB-p4p", "receiveWindowSize":"100"}
/clients下记录了所有客户端服务器的连接信息,每个客户端服务器可以建立多个连接。每个连接用唯一的token串标识,每个连接至少有两个属性:type标识连接的类型,分发布和订阅两个类型;timeout标识一个最长空闲时间,单位是秒,如果一个连接在timeout设定的时间内没有发起人和请求,broker将此链接标识为无效连接,并进行清理。如果链接类型是订阅,则还会有两个额外的属性:subscriber标识订阅ID,receiveWindowSize设置该订阅单次访问的最大窗口,就是一次最多可以获取的消息个数。
注:此信息由router自动创建
broker环信息
/brokers
/group1
/b00000001 {"host":"localhost", "external":"9999", "internal":"9998"}
/b00000002 {"host":"localhost", "external":"9999", "internal":"9998"}
/b00000003 {"host":"localhost", "external":"9999", "internal":"9998"}
/b00000004 {"host":"localhost", "external":"9999", "internal":"9998"}
/group2
/b00000001 {"host":"localhost", "external":"9999", "internal":"9998"}
/b00000002 {"host":"localhost", "external":"9999", "internal":"9998"}
/b00000003 {"host":"localhost", "external":"9999", "internal":"9998"}
/brokers下存储所有broker环信息,broker环我们也称之为group。每个group有N个节点,每个节点有三个属性:host标识节点ip,external标识节点对外提供服务的端口,internal标识节点内部同步的端口
注:此数据当broker启动时由broker自动注册
配置文件:/usr/timetunnel/broker/conf/conf.properties,文件里有详细说明
/usr/timetunnel/broker/bin/broker-start.sh
分享到:
相关推荐
淘宝开源 TimeTunnel 入门文档 淘宝开源的 TimeTunnel 是一个分布式的消息队列系统,旨在提供高效、可靠、可扩展的消息传输服务。在本文档中,我们将从基本概念、环境准备、编译安装、配置文件调整、测试等方面对 ...
整体实现了简易版的redefine(热替换),watch(方法监控),trace(方法互连追踪),timeTunnel(流量采集与替换)等功能。 实现思路 大体效果 时间隧道流量采集: 2 1 ------------------- 开始采集方法:doAdd 2...
- **TimeTunnel (TT)**:作为一个企业消息交换平台,提供了可靠、高效的、安全的消息交换服务,支持灵活配置的日志收集方案、实时高可靠收集日志等功能。 - **Storm**:是一种分布式实时计算系统,具有水平扩展性...
time-tunnel通过一组通用 API 接受具有松散定义语义的时间戳事件,然后根据作为配置一部分的规则集尽最大努力将这些事件分派到各种事件接收器。 其主要目标是为客户提供一种能够方便地把他们的活动,以自己选择的一...
骑士飞行棋 完整代码 public class Map { int[] map = new int[100]; //对战地图 int[] luckyTurn = {6, 23, 40, 55, 69, 83};... int[] timeTunnel = {20, 25, 45, 63, 72, 88, 90}; //时空隧道
在数据实时采集阶段,常用工具如Facebook的Scribe、LinkedIn的Kafka、Cloudera的Flume、淘宝的TimeTunnel以及Hadoop的Chukwa,它们能高效收集和传输每秒数百MB的日志数据。 接下来是数据实时计算阶段,这一阶段的...
9. **TimeTunnel(剑英).pptx**:TimeTunnel可能是一种时间序列数据分析或监控工具。剑英的报告可能探讨了如何利用TimeTunnel进行故障排查、性能分析和业务监控,确保系统稳定运行。 10. **TCon无人值守的性能测试...
例如,淘宝的Time Tunnel工具用于实时采集淘宝网站的各种用户、店铺、商品和交易数据,以及用户的浏览和搜索行为记录。此外,还有其他一些工具如Cloudera的Flume、Facebook的Scribe、LinkedIn的Kafka和Hadoop的...
数据源层实时产生的数据会通过自研的数据传输组件,如DataX、DbSync和Timetunnel,传输到Hadoop集群中进行处理。 2. 计算层:计算层主要由拥有1500个节点的Hadoop集群组成,被称为“云梯”。云梯负责对原始数据进行...
- 遍历 `luckyTurn`, `landMine`, `pause`, `timeTunnel` 数组,分别设置对应的 `map` 数组值。 - **`getGraph(int i, int index, int playerPos1, int playerPos2)`** - 功能:根据当前格子的状态返回对应的图形...
- **数据同步方案-概览**:介绍TimeTunnel这样的实时数据传输平台,用于完成数据的实时交换。TimeTunnel支持数据的发布和订阅机制,能够高效地处理大规模数据流。 #### 三、图片存储架构和缓存 - **图片存储架构**...
Arthas可以记录慢调用,例如,使用tt(timetunnel)记录慢调用,可以重放来排查问题。 8. 生成火焰图。 Arthas可以生成火焰图,例如,使用profiler生成火焰图,可以查看应用程序的性能瓶颈。 Arthas提供了强大的...
- **数据传输组件**:DataX、DbSync和Timetunnel等组件用于从不同源头收集数据,并将其传输至计算层进行处理。 - **“云梯”平台**:基于Hadoop的大规模离线计算平台,每天处理约4万个作业,涉及1.5PB的原始数据。 -...
而TimeTunnel则用于实时数据同步,基于数据库的日志,如MySQL的bin-log和Oracle的归档日志,实现增量数据的实时传输,其本质上是一个消息中间件。 在数据同步过程中,一个常见的挑战是如何合并增量数据与全量数据。...
技术实现中,Goldeneye利用TimeTunnel进行日志采集,jstorm和ODPS MR job处理实时和批量数据,而HBase作为存储层。阈值预测、监控检测、报警生成和定位等功能则基于历史数据分析和智能算法模型,实现对业务监控的...
对于不那么紧急的分析任务,离线分析则更为常见,通过数据采集工具如Scribe、Kafka、Timetunnel和Chukwa将数据导入Hadoop系统进行处理。 数据量的大小也是选择分析架构的重要因素。内存级别分析适用于数据量较小,...