腾讯自研高吞吐消息队列组件TubeMQ升级为 TubeHub

IT实战联盟 2020-12-23 16:45:46 ⋅ 1168 阅读

TubeMQ简介

TubeMQ 项目始于 2013 年,是腾讯自研的高吞吐消息队列组件。项目团队于 2019 年将 TubeMQ 捐赠给 Apache 基金会,成为腾讯首个被 Apache 基金会接受的项目。

来自腾讯的 Apache TubeMQ 项目负责人薛赵明介绍,在 Apache 基金会一年的项目孵化过程中,项目团队新增了 40+ 的 contributores,社区提交了 400+ issuses,合并了 300+ PRs,共发布了 4 个版本。项目团队决定对 TubeMQ 进行全面的升级 —— 即在保留原本 mq 的功能特性之外,同时提供一个包含了大数据场景下的数据采集落地的整体集成方案。

腾讯自研高吞吐消息队列组件TubeMQ升级为 TubeHub

 

详细信息

级后的项目将命名为 TubeHub,具有所有组件可插拔、可隔离、可伸缩和可监控的云原生特性,为开发者提供一站式的流式大数据解决方案,包括自动、安全、高性能、分布式的数据发布订阅能力,便于使用者在业务上构建基于流式的数据应用,例如滚动的日志、MySQL 的 binlog 等。

薛赵明表示,TubeHub 团队最终的目标是希望项目从目前的孵化阶段顺利毕业,成为 Apache 基金会顶级项目。同时希望能有更多的开源爱好者参与项目贡献,将各方一些好的思考和理念整合到 TubeHub 中,共同将其打造成为 Apache 社区中又一个非常有影响力的中国项目。

特性

  • 纯 Java 实现语言
  • 引入 Master 协调节点:相比 Kafka 依赖于 Zookeeper 完成元数据的管理和实现 HA 保障不同,TubeMQ 系统采用的是自管理的元数据仲裁机制方式进行,Master 节点通过采用内嵌数据库 BDB 完成集群内元数据的存储、更新以及 HA 热切功能,负责 TubeMQ 集群的运行管控和配置管理操作,对外提供接口等;通过 Master 节点,TubeMQ 集群里的 Broker 配置设置、变更及查询实现了完整的自动化闭环管理,减轻了系统维护的复杂度
  • 服务器侧消费负载均衡:TubeMQ 采用的是服务侧负载均衡的方案,而不是客户端侧操作,提升系统的管控能力同时简化客户端实现,更便于均衡算法升级
  • 系统行级锁操作:对于 Broker 消息读写中存在中间状态的并发操作采用行级锁,避免重复问题
  • Offset 管理调整:Offset 由各个 Broker 独自管理,ZK 只作数据持久化存储用(最初考虑完全去掉ZK依赖,考虑到后续的功能扩展就暂时保留)
  • 消息读取机制的改进:TubeMQ 采用的是消息随机读取模式,同时为了降低消息时延又增加了内存缓存读写,对于带 SSD 设备的机器,增加消息滞后转 SSD 消费的处理,解决消费严重滞后时吞吐量下降以及 SSD 磁盘容量小、刷盘次数有限的问题,使其满足业务快速生产消费的需求
  • 消费者行为管控:支持通过策略实时动态地控制系统接入的消费者行为,包括系统负载高时对特定业务的限流、暂停消费,动态调整数据拉取的频率等;
  • 服务分级管控:针对系统运维、业务特点、机器负载状态的不同需求,系统支持运维通过策略来动态控制不同消费者的消费行为,比如是否有权限消费、消费时延分级保证、消费限流控制,以及数据拉取频率控制等
  • 系统安全管控:根据业务不同的数据服务需要,以及系统运维安全的考虑,TubeMQ 系统增加了 TLS 传输层加密管道,生产和消费服务的认证、授权,以及针对分布式访问控制的访问令牌管理,满足业务和系统运维在系统安全方面的需求
  • 资源利用率提升改进:相比于 Kafka,TubeMQ 采用连接复用模式,减少连接资源消耗;通过逻辑分区构造,减少系统对文件句柄数的占用,通过服务器端过滤模式,减少网络带宽资源使用率;通过剥离对 Zookeeper 的使用,减少 Zookeeper 的强依赖及瓶颈限制
  • 客户端改进:基于业务使用上的便利性以,我们简化了客户端逻辑,使其做到最小的功能集合,我们采用基于响应消息的接收质量统计算法来自动剔出坏的 Broker 节点,基于首次使用时作连接尝试来避免大数据量发送时发送受阻

全部评论: 0

    我有话说:

    、京东领衔TMD强攻阿里, 马云应对从容, 百度何去何从?!

    在永远不平静的互联网江湖,近两年来阿里与明争暗斗消息不绝于耳。两艘重量级的航母逐渐升级扩展

    Springboot项目redisTemplate实现轻量级消息队列

    redisTemplate实现轻量级消息队列,代码奉上

    「转载」蘑菇街消息系统上云实践

    小编又来啦~本周要推荐给大家的是一篇跟中间件上云相关的技术文章,这里面详细的记录了,蘑菇街消息系统上云的全过程,也是市面上开放出来为数不多的企业组件上云实践。有相关需求的同学可以好好学习下

    消息队列常见问题(二):消息队列产生大量的消息堆积怎么解决?

    上一节列举了生产上消息队列产生大量的消息堆积会有哪些后果,那相对应的解决方法有哪些呢?1、消息被丢弃情况如果要实现防止消息过期问题,最好不要设置过期时间!那设置了过期时间导致消息丢失怎么补救呢?答案

    打造电影主题酒店,「有戏」获亿元A轮融资;拼多多完成新一轮30亿美元融资,领投;内衣品牌「内外」获6000万元B+轮融资

    4月11日,「有戏电影酒店」宣布获得1亿元A轮融资;拼多多完成新一轮30亿美元融资,领投......

    国产 servlet 容器,smart-servlet 体验版发布

    smart-servlet 是一款实现了Servlet 3.1规范,支持多应用隔离部署的的 Web 容器。除此之外,smart-servlet 还是一款插件化容器,用户可以通过开发定义插件扩展容器

    Sentinel 1.8.1 发布,可用流量防护组件

    Sentinel 是阿里巴巴开源的,面向分布式服务架构的可用流量防护组件,主要以流量切入点,从流量控制、流量整形、依赖隔离、熔断降级、系统适应保护等多个维度来帮助开发者保障微服务的

    消息队列常见问题(一):生产上消息队列产生大量的消息堆积会有什么后果?

    大多数消息堆积原因是Consumer出现了问题,并且没有被运维/开发监控到即使修复问题,导致大量的消息都积压在 MQ 中,那么会造成哪些后果呢?1、消息被丢弃例如 RabbitMQ 中的一条消息设置

    可用流控降级组件 Sentinel Go 1.0 GA 版本正式发布

    Sentinel 是阿里巴巴开源的,面向云原生、分布式服务架构的可用流量防护组件,主要以流量切入点,从限流、流量整形、熔断降级、系统适应保护等多个维度来帮助开发者保障微服务的稳定性

    架构设计原则 - 并发

    并发设计可以从以下几方面考虑:无状态拆分服务化消息队列数据异构缓存并发化1. 无状态无状态的应用容易进行水......

    转载:Kafka可用,吞吐量低延迟的并发的特性背后实现机制

    1 概述 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式消息系统,Linkedin于2010年贡献给了Apache基金会并

    Riot 5.3.1 发布,基于组件的 UI 库

    Riot 5.3.1 现已发布。Riot 是一个简单而优雅的基于组件的 UI 库,所有现代浏览器带来了定义组件,压缩文件大小仅有 6 KB,支持 FireFox、Chrome、Edge

    Nginx灰度升级实现说明

    基础介绍 下文分别从名词解释、灰度升级的作用、灰度升级方案3个方面展开介绍: 1.名词解释 灰度升级:灰度升级是一种升级时候的平滑切换,当有些服务器的客户端要进行升级,可以只对其中一个客户端升级

    官网升级通知

    为了让您更好的使用平台,我们将在明天对平台进行升级,敬请谅解。

    Node&RabbitMQ系列二 延迟|死信队列

      前提 目前项目中采用ts+eggjs结合的方式,针对定时任务,采用schedule,随着业务的增多,觉得缺点啥,可能就是缺消息队列吧。上一篇文章,针对rabbitmq的基本语法进行了

    「转载」喜马拉雅网关架构演进过程

    背景 网关是一个比较成熟的产品,基本上各大互联网公司都会有网关这个中间件,来解决一些公有业务的上浮,而且能快速的更新迭代,如果没有网关,要更新一个公有特性,就要推动所有业务方都更新和发布,那是效率极低的事,有网关后,这一切都变得不是问题。 喜马拉...

    Nginx服务器高性能优化--轻松实现10万并发访问量

    作者:章忠学架构https://www.toutiao.com/i6804346550882402828 前面讲了如何配置Nginx虚拟主机,如何配置服务日志等很多基础的内容,大家可以去这里看看