热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

同花顺数据结构读取软件_TiDB联手ApachePulsar,释放大数据潜能

大数据时代,各类应用对消息解决方案的要求不仅仅是数据的流动,而是要在持续增长的服务和应用中传输海量数据,进行智能的处理和分析,
725e2a21c288bed089b1e9378eb44650.png

大数据时代,各类应用对消息解决方案的要求不仅仅是数据的流动,而是要在持续增长的服务和应用中传输海量数据,进行智能的处理和分析,帮助业务做出更加精准的决策。Apache Pulsar 与 TiDB 联合解决方案提供实时、高吞吐、稳定的数据输出,满足用户在大数据场景中对各类数据的应用与分析需求,广泛适用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等场景。

Apache Pulsar 简介与优势

Apache Pulsar(以下简称:Pulsar)是云原生的分布式消息流系统,采用计算和存储分层的架构和以 Segment 为中心的分片存储,具有更好的性能、可扩展性和灵活性,是一款可以无限扩展的分布式消息队列。目前,StreamNative 公司提供基于 Pulsar 平台的下一代流数据整体解决方案。

Pulsar 起初作为消息整合平台在 Yahoo 内部开发和部署,为 Yahoo Finance、Yahoo Mail 和 Flickr 等雅虎内部关键应用连接数据。目前,Pulsar 在雅虎全球的 10 多个数据中心提供服务,具备全网格复制能力,支持 140 万个主题,处理超过 1000 亿条消息,整体消息的发布延迟小于 5 毫秒。2016 年 Yahoo 把 Pulsar 开源并捐给 Apache 软件基金会(ASF),2018 年 Pulsar 毕业成为 Apache 软件基金会的顶级项目。

与大多数消息传递系统的单片架构不同,Pulsar 采用分层分片式的架构,服务层和存储层都能够独立扩展,以提供更好的性能、可扩展性和灵活性,这种设计对容器非常友好,使得 Pulsar 成为流原生平台的理想选择。

344ac4e58ec33c9acb3de590540e59c2.png

Apache Pulsar 系统架构

Pulsar 的企业特性包括消息的持久化存储、多租户、多机房互联互备、加密和安全性等。Pulsar 提供和 Kafka 兼容的 API,以及 Kafka-On-Pulsar(KoP) 组件来兼容 Kafka 的应用程序。KoP 在 Pulsar Broker 中解析 Kafka 协议,用户不用改动客户端的任何 Kafka 代码就能直接使用 Pulsar。

TiDB 与 TiCDC 简介

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。在 4.0 之前,TiDB 提供 TiDB Binlog 实现向下游平台的近实时复制,在 TiDB 4.0 中,引入 TiCDC 作为 TiDB 变更数据的捕获框架。

TiCDC(TiDB Change Data Capture)是用来识别、捕捉和输出 TiDB/TiKV 集群上数据变更的工具系统。它既可以作为 TiDB 增量数据同步的工具,将 TiDB 集群的增量数据同步至下游数据库,也提供开放数据协议,支持把数据发布到第三方系统。TiCDC 是 TiDB Binlog 的升级方案 ,提供低延迟、高可用的数据订阅和同步服务,支持超大规模集群的水平扩展。

在 TiDB 生态链上,TiCDC 作为 TiDB 的数据出口有着非常重要的地位,其作用包括:构建 TiDB 主从和灾备系统,链接 TiDB 和其它异构数据库,通过开放数据协议(Open Protocol )与第三方数据生态系统进行对接。TiCDC Open Protocol 是一种行级别的数据变更通知协议,为监控、缓存、全文索引、分析引擎、异构数据库的主从复制等提供数据源。TiCDC 遵循开放数据协议,向 MQ (Message Queue) 等第三方数据媒介复制 TiDB 的数据变更。

Apache Pulsar 与 TiDB 联合解决方案

在 TiDB v4.0.4 版本中,TiCDC 开放数据协议(Open Protocol )可以与 Pulsar 实现无缝对接,提供实时、高吞吐、稳定的数据输出,满足用户在大数据场景中对各类数据的应用与分析需求,广泛适用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等场景。

0f2225265bbb7063630739e89cbba9b7.png

Apache Pulsar 与 TiDB 联合解决方案 架构图

借助 Pulsar 所具有的 GEO-Replication 功能,Pulsar 与 TiDB 联合解决方案可以为 TiCDC 的消费者带来地理位置无关的变更事件订阅能力。同时,Pulsar 集群的快速节点扩容、故障的快速恢复能力可以为 TiCDC 事件的消费方提供更优的数据实时性保障。

需求探索

伴鱼少儿英语

伴鱼少儿英语是目前飞速成长的互联网在线英语教育品牌之一,致力于打造更创新、更酷、让学英语更有效的新一代互联网产品。

伴鱼少儿英语原先采用的 Kafka 集群会遇到 Consumer Rebalance 问题,在剔除掉无法消费或者过慢的消费者的时候,会对其他消费者造成因消息过慢触发心跳超时等问题,Pulsar 在运维层面更方便和安全一些。Pulsar 是原生支持跨数据中心的流数据同步方案,可以提供跨地域的复制功能,满足国内和海外数据中心机房双活的需求。此外,Pulsar 具备延迟队列的功能,随着大量 Topic 的创建,依然可以提供出色的性能和延迟保障,消息分散的落盘策略不会造成 IO 对磁盘的竞争。基于上述原因,伴鱼少儿英语采用了 TiDB 与 Pulsar 联合解决方案以满足核心业务的需求。

石基信息

石基信息是一家以提供酒店业信息系统整体解决方案为主要业务的高科技公司,主要从事酒店信息管理系统软件的开发与销售、系统集成、技术支持与服务业务。

在特定业务场景下,例如汇总全球所有酒店餐饮集团下单店的收入中心,以及每个收入中心的不同消费类别实时的明细数据,则需要创建几十上百万的 Topic,Pulsar 可以支持百万级别 Topic 数量的扩展,同时还能一直保持良好的性能。此外,原先的 Kafka 集群在节点扩展的时候,会触发 Consumer Rebalance,造成消费者处理时间过长或者心跳超时等问题,给业务带来一定的影响。石基信息规划采用 Pulsar + TiDB + Flink 方案,构建面向未来的实时数仓解决方案,在满足应用层对分布式关系型数据库需求的同时,提升实时的数据分析和服务效率。

最佳实践

知乎

知乎是中文互联网综合性内容平台,以“让每个人高效获得可信赖的解答”为品牌使命和北极星。知乎在首页个性化内容推荐、已读服务等场景中使用 TiDB 作为核心数据库,通过 TiCDC Open Protocol 输出日志到 Kafka,进行海量的消息处理。随着业务量级的增长,在使用的过程中遇到了诸多因 Kafka 架构和历史版本实现上的限制而引发的问题。

单 Partition 数据量巨大的 Kafka 集群不论是扩容还是故障恢复都需要很长的时间,业务无法容忍长时间的不可用,所以只能选择牺牲数据、重建集群的方式来加快恢复速度。Kafka Topic 过重的资源消耗导致在单一集群上支撑数千乃至数万的 Topic 相对困难。早期版本 Kafka 不论是读取还是写入都需要发生在 Partition 当前活跃的 Leader 上,读写流量都很高的集群会对 Broker 产生非常大的压力。Kafka 的一些问题在新版本中得到了解决,但是因为协议版本差别太大,无法直接通过升级服务端的方式进行滚动升级。鉴于以上遇到的问题,考虑到 Pulsar 对原生跨地域复制(GEO-Replication)的支持同知乎未来基础设施云原生化的方向更加契合,知乎开始在一些业务中使用 Pulsar 替换 Kafka 。

知乎对 TiCDC 的核心模块进行了一系列开发工作(https://github.com/pingcap/ticdc/pull/751),把 TiCDC Sink 与 Pulsar 进行对接,实现 TiCDC 的数据同步到 Pulsar。Pulsar 与 TiDB 联合解决方案已经在知乎的 CMDB 项目中得以应用,解决了现阶段在 Kafka 上遇到的问题。

Pulsar 对跨地域复制(GEO-Replication)的支持为生产者和消费者提供了地理位置透明的连接,生产者在任意数据中心生产的内容可以供任意一个数据中心的供消费者使用。分层存储(Tiered Storage)为大量历史数据的保存、审计、流量回放、低频明细历史事件分析等需求提供更低成本的实现方式。从消费模式看从数据多个副本并发读取消息的能力,极大地提升了数据读取的扩展性。此外,延迟消息分发(Delayed Message Delivery)便于实现许多特定的业务逻辑,可用于替代一些相对陈旧的历史技术方案。

目前,知乎对于 Pulsar 的应用处于早期阶段,实际上线的业务数量占比较小,从前期业务的实践来看,Pulsar 与 TiDB 联合解决方案的应用取得了理想效果。知乎将推动各项业务从 Kafka 向 Pulsar 进行全面的迁移,未来也将应用 Pulsar 到跨集群同步 TiDB 数据的场景下。

相关资源

1. TiCDC 实操指南:

https://docs.pingcap.com/zh/tidb/stable/manage-ticdc

2. Apache Pulsar 官方文档:

http://pulsar.apache.org/docs/en/standalone/

3. Apache Pulsar 与 Kafka 的对比:

* https://streamnative.io/blog/tech/pulsar-vs-kafka-part-1

* https://streamnative.io/blog/tech/pulsar-vs-kafka-part-2

关于 StreamNative

StreamNative 是一家围绕 Apache 顶级项目 Apache Pulsar 打造下一代流数据平台的开源基础软件公司,秉承开源是基础软件的未来这一理念,专注于开源生态和社区的构建,致力于前沿技术领域的创新,创始团队成员均是 Apache Pulsar 和 Apache BookKeeper 的核心 PMC 成员。

关于 PingCAP

PingCAP 成立于 2015 年,是一家开源的新型分布式数据库公司,秉承开源是基础软件的未来这一理念,PingCAP 持续扩大社区影响力,致力于前沿技术领域的创新实现。其研发的分布式关系型数据库 TiDB 项目,具备「分布式强一致性事务、在线弹性水平扩展、故障自恢复的高可用、跨数据中心多活」等核心特性,是大数据时代理想的数据库集群和云数据库解决方案。目前已经国内外近 1000 家用户将 TiDB 用于线上生产环境。



推荐阅读
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • Python多线程编程技巧与实战应用详解 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
author-avatar
IT狂人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有