关于pulsar:使用-SQL-的方式查询消息队列数据以及踩坑指南

背景为了让业务团队能够更好的跟踪本人音讯的生产和生产状态,须要一个相似于表格视图的音讯列表,用户能够直观的看到发送的音讯;同时点击详情后也能查到音讯的整个轨迹。 音讯列表点击详情后查看轨迹原理介绍因为 Pulsar 并没有关系型数据库中表的概念,所有的数据都是存储在 Bookkeeper 中,为了模仿应用 SQL 查问的成果 Pulsar 提供了 Presto (当初曾经更名为 Trino)的插件。 Trino 是一个分布式的 SQL 查问引擎,它也提供了插件能力,如果咱们想通过 SQL 从自定义数据源查问数据时,基于它的 SPI 编写一个插件是很不便的。这样便能够相似于查询数据库一样查问 Pulsar 数据: Pulsar 插件的运行流程如上图所示: 启动的时候通过 Pulsar-Admin 接口获取一些元数据,比方 Scheme,topic 分区信息等。而后会创立一个只读的 Bookkeeper 客户端,用于获取数据。之后依据 SQL 条件过滤数据即可。相干代码: 应用 Pulsar-SQL 应用起来也很简略,官网提供了两个命令: sql-worker: 会启动一个 trino 服务端同时运行了 Pulsar 插件sql: 就是一个 SQL 命令行终端。遇到的问题本人在本地运行的时候天然是没问题,可是一旦想在生产运行,同时如果你的 Pulsar 集群是运行再 k8s 环境中时就会碰到一些问题。 无奈应用现有 Trino 集群首先第一个问题是如果生产环境曾经有了一个 Trino 集群想要复用的时候就会碰到问题,惯例流程是将 Pulsar 的插件复制到 Trino 的 Plugin 目录,而后重启 Trino 后就能应用该插件。 当然社区也是反对这么做的:然而当我将 Pulsar-plugin 复制到 Trino 中运行的时候却失败了,整体的流程能够参考这个 issue:https://github.com/apache/pulsar/discussions/20941 ...

August 31, 2023 · 1 min · jiezi

关于pulsar:VictoriaLogs一款超低占用的-ElasticSearch-替代方案

背景前段时间咱们想实现 Pulsar 音讯的追踪流程,追踪实现的效果图如下: 实现其实比较简单,其中最重要的就是如何存储音讯。 音讯的读取咱们是通过 Pulsar 自带的 BrokerInterceptor 实现的,对这个感兴趣的敌人前面会独自做一个分享。依据这里的显示内容咱们大略须要存储这些信息: 客户端地址音讯公布工夫散发消费者、订阅者名称ACK 消费者、订阅者名称音讯 ID最终捋了下:都以两个 consumer 计算: 一条音讯占用内存:140+ 535*2 + 536*2 =2282byte存储三天:TPS * 86400 * 3=TPS*259200 条 总存储:2282*TPS*259200≈ 百GB 依据咱们的 TPS 计算,三天的大略会应用到 上百 G 的存储,这样首先就排除了 Redis 这种内存型数据库。 同样的换成 MySQL 存储也不划算,因为其实这些数据并不算那么重要。 做了几个技术选型都不太称心,不是资源开销太大就是没有相干的运维教训。 前面在领导的揭示下,咱们应用的 VictoriaMetrics 开源了一个 VictoriaLogs,尽管过后的版本还是 0.1.0,应用过他们家 Metrics 的应该都会比拟信赖他们的技术能力,所以就调研了一下。 具体的信息能够查看官网文档:https://docs.victoriametrics.com/VictoriaLogs/ 简略来说就是它也是一个日志存储数据库,并且有着极低的资源占有率,绝对于 ElasticSearch 来说内存、磁盘、CPU 都是几十倍的降落率。 通过官网的压测比照图会发现的确在各方面对 ES 都是碾压。 官网宣传的第一反馈是不能全信,于是我本人压测了一下,果然 CPU 内存 磁盘的占用都是极低的。 同时也发现运维部署的确简略,间接一个 helm install 就搞定,就是一个二进制文件,不会依赖第二个组件。依照方才同样的数据存储三天,只须要不到 6G 的磁盘空间,咱们生产环境曾经安稳运行一段时间了。因为咱们是批量写入数据的,所以在最高峰 20K 的 TPS 下 CPU 应用不到 0.1 核,内存应用最高 120M,这点的确是对 ES 碾压了。 ...

August 25, 2023 · 1 min · jiezi

关于pulsar:Apache-Pulsar-技术系列-Pulsar-总览

Apache Pulsar 是一个多租户、高性能的服务间音讯传输解决方案,数据长久化依赖 Apache BookKeeper 实现,反对多租户、低延时、读写拆散、跨地区复制、疾速扩容、灵便容错等个性。本文将从以下几个方面为大家介绍 Apache Pulsar的设计原理和个性。 1、Apache Pulsar 架构 2、架构设计的劣势 3、Pulsar 个性 4、总结 Apache Pulsar 架构存储计算拆散Apache Pulsar 是 Pub/Sub 模型的音讯零碎,并且从设计上做了存储和计算的拆散,如图一所示。 图一 Pulsar 架构 Apache Pulsar 次要包含 Broker, Apache BookKeeper, Producer, Consumer等组件。 Broker:无状态服务层,负责接管和传递音讯,集群负载平衡等工作,Broker 不会长久化保留元数据,因而能够疾速的上、下线。Apache BookKeeper:有状态长久层,由一组名为 Bookie 的存储节点组成,长久化地存储音讯。Producer :数据生产者,负责公布数据到 Topic。Consumer:数据消费者,负责从 Topic 订阅数据。除了上述的组件之外,Apache Pulsar 还依赖 Zookeeper 作为元数据存储。与传统的音讯零碎相比,Apache Pulsar 在架构设计上采纳了计算与存储拆散的模式,Pub/Sub 相干的计算逻辑在 Broker 上实现,数据存储在 Apache BookKeeper 的 Bookie 节点上。 分片存储除了存储、计算解耦拆散的设计之外,Apache Pulsar 在存储设计上也不同于传统 MQ 的分区数据本地存储的模式,采纳的是分片存储的模式,存储粒度比分区更细化、存储负载更平衡。Apache Pulsar 中的每个 Topic 分区实质上都是存储在 Apache BookKeeper 中的分布式日志。Topic 能够有多个分区,分区数据长久化时,分区是逻辑上的概念,理论存储的单位是分片(Segment)的,如图二,一个分区 Topic1-Part2 的数据由多个 Segment 组成, 每个 Segment 作为 Apache BookKeeper 中的一个 Ledger,均匀分布并存储在 Apache BookKeeper 群集中的多个 Bookie 节点中, 每个 Segment 具备 3 个正本。 ...

March 24, 2023 · 2 min · jiezi

关于pulsar:详解-Apache-Pulsar-消息生命周期

文章摘要本文整顿自 Pulsar Summit Asia 2022 腾讯云高级研发工程师冉小龙的演讲《Deep Dive into Apache Pulsar Lifecycle》。Apache Pulsar 中形象了 Topic 来承载用户发送的音讯,一条音讯发送到 Topic 中之后会通过 Broker 的计算存储到 Bookie 中。本文将具体论述音讯是如何发送到 Broker 并通过 Broker 的计算以及元数据处理最终存储到 Bookie 中,而后会进一步论述 Bookie 如何利用垃圾回收机制回收 Topic 中的数据,以及 Broker 中的 TTL 和 Retention 策略如何作用到 Bookie Client 来触发垃圾回收的机制。 作者简介冉小龙,腾讯云高级研发工程师,Apache Pulsar Committer,RoP maintainer,Apache Pulsar Go Client、Pulsarctl 与 Go Functions 作者与次要维护者。 导读本文分为以下几个局部: 1. 从用户的视角看音讯收发流程2. TTL 与 Retention 策略(与音讯生命周期非亲非故)3. 从 Topic 的角度看音讯存储模型4. Bookie GC 回收机制5. 脏数据如孤儿 Ledger 的产生6. 如何清理脏数据1、2、3 次要在 Broker 层面剖析原理,5 和 6 依据生产环境中遇到的问题来剖析脏数据的产生与清理。用户视角下的音讯收发流程在用户视角下,MQ 能够了解为 Pub-Sub 模型,在 Broker 形象一个 Topic,音讯经由生产者发送到 Topic 中而后进入消费者进行生产。 ...

March 20, 2023 · 6 min · jiezi

关于pulsar:通过-Pulsar-源码彻底解决重复消费问题

背景最近真是和 Pulsar 杠上了,业务团队反馈说是线上有个利用音讯反复生产。 而且在测试环境是能够稳固复现的,依据教训来看个别能稳固复现的都比拟好解决。 定位问题接着便是定位问题了,依据之前的教训让业务依照这几种状况先排查一下: 通过排查:1,2能够排除了。 没有相干日志存在异样,但最外层也捕捉了,所以不论有无异样都会 ACK。第三个也在生产的入口和提交音讯出计算了工夫,最终发现都是在2s左右 ACK 的。 伪代码如下: Consumer consumer = client.newConsumer() .subscriptionType(SubscriptionType.Shared) .enableRetry(true) .topic(topic) .ackTimeout(30, TimeUnit.SECONDS) .subscriptionName("my-sub") .messageListener(new MessageListener<byte[]>() { @SneakyThrows @Override public void received(Consumer<byte[]> consumer, Message<byte[]> msg) { log.info("msg_id{}",msg.getMessageId().toString()); TimeUnit.SECONDS.sleep(2); consumer.acknowledge(msg); } }) .subscribe();那这就很奇怪了,因为代码里配置的 ackTimeout 是 30s,实践上来说是不会存在超时导致音讯重发的。 为了排除是否是超时引起的,间接将业务代码正文掉了,等于是音讯收到后立刻就 ACK,通过测试发现这样的确就没有反复生产了。 为了再次确认是不是和 ackTimeout 无关,间接将 .ackTimeout(30, TimeUnit.SECONDS) 正文掉后测试,发现也没有反复生产了。 确认起因既然如此那肯定是和这个配置无关了,但看代码的确没有超时,为了定位具体起因只有去看 client 的源码了。 这里简略梳理下音讯的生产的流程: 依据 .receiverQueueSize(1000) 的配置,默认状况下 broker 会间接给客户端推送 1000 条音讯。客户端将这 1000 条音讯保留到外部队列中。如果应用同步生产 receive() 时,实质上就是去 take 这个外部队列。如果是应用的是 messageListener 异步生产并配置 ackTimeout,每当从队列里取得一条音讯后便会把这条音讯退出 UnAckedMessageTracker 外部的一个工夫轮中,定时检测顶部是否存在音讯,如果存在则会触发从新投递。4.1 退出工夫轮后,异步调用咱们自定义的事件,这个异步操作是提交到一个无界队列中由单个线程顺次排队执行(这点是这次问题的要害)业务 ACK 的时候会从工夫轮中删除音讯,所以如果音讯 ACK 的足够快,在第四步就不会获取到音讯进行从新投递。 ...

February 27, 2023 · 1 min · jiezi

关于pulsar:腾讯云基于-Apache-Pulsar-跨地域复制功能实现租户跨集群迁移

导语本文整顿自 Pulsar Summit Asia 2022 技术峰会上腾讯云中间件高级研发工程师韩明泽的分享《基于跨地区复制实现租户跨集群迁徙》。本文次要介绍基于跨地区数据复制和订阅进度同步的实现及优化,以及腾讯云在跨集群迁徙过程中遇到的问题及租户跨集群迁徙解决方案。 作者简介韩明泽 毕业于武汉大学,腾讯云中间件高级研发工程师,领有多年消息中间件开发与运维教训,RoP (RocketMQ-on-Pulsar) Maintainer,Apache Pulsar 贡献者。 订阅进度同步的实现及优化跨地区复制简介跨地区复制是 Apache Pulsar 提供的跨机房数据复制能力。其典型的应用场景有: 多机房数据复制,即数据容灾备份异地读写下图为典型的异地读写案例,假设在北京生产与写入,而在上海生产,在对从生产到生产整体链路耗时要求不高的状况下,即可采纳跨地区复制的能力。同地区写入的工夫老本绝对较低,而比拟耗时的生产能够在外部通过跨地区复制屏蔽。 跨地区复制集群复制性能实现原理如果 Apache Pulsar 不提供跨集群复制性能,如何在运维 RocketMQ 或者 Kafka 等状况下实现跨地区数据复制、容灾者备份和集群间数据迁徙的工作? 通常状况下,服务中有生产者和消费者两个角色,消费者连贯上游集群,生产者连贯上游集群。上游集群的生产数据通过生产者发送到上游指标集群。Apache Pulsar 在跨地区复制的设计中采纳了相似思路,跨地区复制实现的流程如下图所示。 在每个主题外部设置了 Replication 模块。如果开启数据复制,此模块则会发动外部订阅(或游标进度)。在任一主题内生产音讯时,生产者向对端集群投递音讯来实现跨集群数据的复制性能,不影响本集群的生产生产。在上述的过程中,音讯的读取与发送齐全异步解决。 订阅进度同步的实现原理数据复制与同步的实现比较简单,但在一些场景中,除了同步音讯,还须要同步订阅的生产进度。 以异地容灾为例,假如本来业务的生产生产均在北京,当北京集群业务呈现故障时,业务端想疾速将集群切换到上海集群,以持续从北京集群曾经生产到的地位开始做生产和生产。 如果没有订阅进度同步的能力,那么用户很难确定在北京集群里哪些音讯曾经生产过;如果从最新的地位开始生产,可能会导致音讯失落;如果从最早的地位开始生产,会造成大量的反复生产。在实际操作中,略微折中的办法是通过工夫回溯退回到较近的工夫点。然而,这种办法无奈从根本上解决音讯失落或者反复生产的问题。 而 Apache Pulsar 所提供的订阅进度同步的性能,则能够让用户平滑地实现异地容灾的切换,不必放心音讯的失落或者反复。Pulsar 同时反对数据同步和订阅进度同步,如下图所示。 生产进度生产进度由 markDeletePosition 和 individuallyDeletedMessages 两局部组成。在 RocketMQ 和 Kafka 中,生产进度在分区上通过 Offset 标识。Offset 对应 Pulsar 中的概念能够了解为 markDeletePosition。 Pulsar 同时反对多种生产模式,它的音讯确认机制/签收机制反对单条确认。因而,在 Pulsar 中除了须要记录 markDeletePosition,还须要 Individual Acks 记录单条被确认的音讯。 如上图,在共享生产模式下有很多消费者实例。因为每个消费者的生产速度不一样,音讯的推送程序和音讯 Ack 程序并不完全相同。假设咱们须要把标号为 0 到 9 的音讯同时推送给不同的消费者实例,音讯 0、1、2、3、4、6、9 曾经确认,然而 5、7、8 并没有确认。markDeletePosition 的游标位置,即 Offset 标识的生产进度只能标识到 4 的地位,示意 4(包含 4)之前的音讯都曾经被生产。音讯 5、7、8 曾经被生产,须要独自确认。Pulsar 通过 individuallyDeletedMessages 数组对象范畴去标识哪些音讯曾经被确认过。咱们能够将上述音讯的确认了解为几个开闭区间,从中能够显著得出 5、7、8 没有被生产。 ...

February 24, 2023 · 3 min · jiezi

关于pulsar:通过-KoP-将-Kafka-应用迁移到-Pulsar

通过 KoP 将 Kafka 利用迁徙到 Pulsar版权申明:原文出自 https://github.com/streamnati... ,由 Redisant 进行整顿和翻译[TOC] 什么是 KoPKoP(Pulsar on Kafka)通过在 Pulsar Broker 上引入 Kafka 协定处理程序,为 Apache Pulsar 带来原生 Apache Kafka 协定反对。 通过将 KoP 协定处理程序增加到您现有的 Pulsar 集群,您能够将现有的 Kafka 应用程序和服务迁徙到 Pulsar,而无需批改代码。 这使 Kafka 应用程序可能利用 Pulsar 的弱小性能,例如: 通过企业级多租户简化经营应用rebalance-free架构简化操作应用 Apache BookKeeper 分层存储应用 Pulsar Functions 进行Serverless事件处理KoP 作为 Pulsar 协定解决插件,在 Pulsar broker 启动时加载。 它通过在 Apache Pulsar 上提供原生 Kafka 协定反对,帮忙缩小人们采纳 Pulsar 实现业务的阻碍。 通过整合两个风行的事件流生态系统,KoP 解锁了新的用例。 您能够利用每个生态系统的劣势,应用 Apache Pulsar 构建一个真正对立的事件流平台,以减速实时应用程序和服务的开发。 KoP 利用 Pulsar 已有的组件(例如主题发现、分布式日志库 - ManagedLedger、游标等)在 Pulsar 上实现了 Kafka wire 协定。 ...

February 13, 2023 · 2 min · jiezi

关于pulsar:对-Pulsar-集群的压测与优化

前言这段时间在做 MQ(Pulsar)相干的治理工作,其中一个局部内容对于音讯队列的降级,比方: 一键创立一个测试集群。运行一批测试用例,笼罩咱们线上应用到的性能,并输入测试报告。模仿压测,输入测试后果。实质目标就是想直到新版本升级过程中和降级后对现有业务是否存在影响。 一键创立集群和执行测试用例比较简单,利用了 helm 和 k8s client 的 SDK 把整个流程串起来即可。 压测其实略微麻烦一点的是压测,Pulsar 官网自身是有提供一个压测工具;只是性能绝对比拟繁多,只能对某批 topic 极限压测,最初输入测试报告。最初参考了官网的压测流程,退出了一些实时监控数据,不便剖析整个压测过程中性能的变动。 客户端 timeout随着压测过程中的压力增大,比方压测工夫和线程数的进步,客户端会抛登程送音讯 timeout 异样。 org.apache.pulsar.client.api.PulsarClientException$TimeoutException: The producer pulsar-test-212-20 can not send message to the topic persistent://my-tenant/my-ns/perf-topic-0 within given timeout : createdAt 82.964 seconds ago, firstSentAt 8.348 seconds ago, lastSentAt 8.348 seconds ago, retryCount 1而这个异样在生产业务环境的高峰期偶然也呈现过,这会导致业务数据的失落;所以正好这次被我复现进去后想着剖析下产生的起因以及解决办法。 源码剖析客户端既然是客户端抛出的异样所以就先看从异样点开始看起,其实整个过程和产生的起因并不简单,如下图: 客户端流程: 客户端 producer 发送音讯时先将音讯发往本地的一个 pending 队列。待 broker 解决完(写入 bookkeeper) 返回 ACK 时删除该 pending 队列头的音讯。后盾启动一个定时工作,定期扫描队列头(头部的音讯是最初写入的)的音讯是否曾经过期(过期工夫可配置,默认30s)。如果曾经过期(头部音讯过期,阐明所有音讯都已过期)则遍历队列内的音讯顺次抛出 PulsarClientException$TimeoutException 异样,最初清空该队列。服务端 broker 流程: ...

January 16, 2023 · 2 min · jiezi

关于pulsar:Pulsar-在腾讯云的稳定性实践

** 导语2022腾讯寰球数字生态大会已圆满闭幕,大会以“数实翻新、产业共进”为主题,聚焦数实交融,摸索以全真互联的数字技术助力实体经济高质量倒退。大会设有29个产品技术主题专场、18个行业主题专场和6个生态主题专场,各业务负责人与客户、合作伙伴独特总结经验、凝固共识,推动数实交融新倒退。 本次大会设立了微服务与中间件专场,本专场从产品研发、运维等最佳落地实际登程,具体论述云原生时代,企业在开发微服务和构建云原生中间件过程中应该怎么少走弯路,聚焦业务需要,助力企业倒退翻新。 随着大数据时代的到来,企业在生产和经营流动中产生的各类数据正以前所未有的速度增长,通过对实时及历史数据的交融剖析,及时开掘业务洞察和辅助决策,已成为企业的广泛口头。在云原生的浪潮下,企业须要聚焦业务,迫切需要简单易行,零代码地配置搭建起本人的能够达到将本增效成果的数据链路零碎。 本篇文章将从以下几个方面来跟大家一起分享 Pulsar 在腾讯的实际中遇到的问题和挑战以及对应的解决方案。 ● 音讯队列倒退历史 ● 开源计划可能面临的问题和挑战 ● 咱们的摸索与解决方案 ● Pulsar 在腾讯外部的案例实际 ● TDMQ 将来布局 音讯队列倒退历史下图是开源社区整个消息中间件产品,从2003年诞生的 ActiveMQ 到2012年 诞生的 Pulsar 的整个倒退过程。 在这个倒退过程中,不同的产品解决了各种各样不同的问题。下图是各产品之间的比照,大家最关注的是在线音讯和离线音讯,当初业界比拟通用的会把 Kafka 用在离线音讯上,在线音讯更多采纳的是 RocketMQ。RabbitMQ可能在扩展性上存在一些差别,然而它简略易用,历史也更悠久。规模决定了这些音讯产品的扩展性如何,是否反对十万或者百万的音讯 Topic 的量级,下表中对最小规模也做了具体比照。 Pulsar 诞生的背景和起因看了以上那么多音讯产品的比照,大家必定会有一个疑难,既然曾经有这么多的音讯产品了,为什么还要用 Pulsar?Pulsar 它存在的意义是什么呢?基于 Pulsar 研发人员本人的教训以及社区的背景,Pulsar 有三个值得关注的倒退方向:云原生环境适配、多租户和海量 Topic、离在线流批一体。 云原生环境适配● 计算与存储拆散的架构,对于原生的 K8s 或者容器化的环境是更加敌对的,人造适配云原生环境,不同的组件能够离开扩大。 ● 基于对机器容灾的思考,反对跨 Region/ 机架数据写入。 ● 对于普通用户,能够不便的应用开源的 Operator 在云环境间接部署,真正的服务于业务。 多租户和海量 Topic● 人造反对多租户, Namespace 和 Topic 级别的权限治理,能够做共享大集群。 ● 设计层面反对海量 Topic,对于有这类需要的用户有比拟强的吸引力。 离在线流批一体● 在系统维护层面,All in one 的吸引力。 ● 对业务只须要保护一套中间件即可实现流批一体。 ● Kafka 等 Connector 的存在,迁徙不便。 广泛状况下离线会采纳 Kafka,在线会采纳 RocketMQ,但实际上,很多用户或者很多基础设施的同学团队,更心愿有一款产品可能把离线和在线联合起来,具备 All in one 的能力。Pulsar 在设计之初就是有这样的考量,也参考了前者的一些劣势。 ...

December 28, 2022 · 2 min · jiezi

关于pulsar:pulsar-mop-mqtt二次开发贡献开源项目代码

pulsar mop mqtt二次开发奉献开源我的项目代码Linux MacBook单机部署Pulsar并开启认证性能 pulsar集群搭建_亲测胜利 pulsar开启mqtt和认证 pulsar自定义认证插件开发 pulsar自定义创立公布和订阅主题权限插件开发 Fork代码 源代码地址https://github.com/streamnati... 拜访原始仓库,点击fork,将原始仓库代码fork到本人的GitHub账号下,成为正本仓库。 点击Fork到本人的仓库 Clone正本仓库到本地把fork后的正本仓库 clone 到本地。 git clone https://github.com/tw-iot/mop.git 配置上游我的项目地址配置上游我的项目地址的目标未来如果原来那个我的项目streamnative/mop有代码更新时,咱们须要把它最新代码合并到我本人的Fork的我的项目中,这样能力放弃代码同步,否则你的我的项目永远停留在Fork时候的版本。 cd mopgit remote add upstream https://github.com/streamnative/mop.git获取上游我的项目更新git fetch upstream合并到本地分支git merge upstream/master提交推送git push origin master这样你的代码就和原我的项目的代码放弃同步了。这里的 upstream 就是咱们上游我的项目地址的别名,待会儿就是从这个我的项目中去拉最新的代码。 创立本地分支进入仓库目录,应用如下命令创立并切换到authorization分支(本人的本地分支)。 git checkout -b authorization # 创立并切换到authorization分支本地仓库批改提交基于本地分支authorization进行代码批改,而后进行本地提交。 git add -Agit commit -m "first commit"git push创立一个 Pull Request当初假如你在本地我的项目中批改了代码,新增了文件,当咱们把代码push到Github之后,你就能够在GitHub发动一个Pull Request了,告知原我的项目,我修复了一些Bug,更新了某些个性,请把我的代码合并过来吧。 新建一个 Pull Request,如果GitHub发现你的代码和原我的项目差别,那么就能够胜利 Create Pull Request。这样原我的项目的负责人就能够收到你的Pull Reuqest了。而后就等着他审核、合并代码,审核通过之后,你的代码将被正式合并到他的原我的项目中去。 批改mop mqtt插件源代码 MQTT代理5682端口切换对应的分支git checkout branch-2.8.1 批改类io.streamnative.pulsar.handlers.mqtt.proxy.MQTTProxyProtocolMethodProcessor processConnect 办法 MqttConnectPayload payload = msg.payload(); String clientId = payload.clientIdentifier(); //截取clientId String clientIdentifier = payload.clientIdentifier(); if (clientIdentifier != null && clientIdentifier.length() != 0) { clientId = clientIdentifier.split("\\|")[0]; } String userRole = null; // Authenticate the client userRole = authResult.getUserRole(); //连贯胜利上后,马上发一条上线音讯,与1883建设连贯 NettyUtils.setUserRole(channel, userRole); pulsarMsg("login", channel); //心跳办法,每订阅一个topic,多一个心跳(这里是个bug,一个连贯一个心跳,已解决) @Override public void processPingReq(Channel channel) { //channel.writeAndFlush(pingResp()); //topicBrokers.forEach((k, v) -> v.whenComplete((exchanger, error) -> { // exchanger.writeAndFlush(pingReq()); //})); channel.writeAndFlush(pingResp()); brokerPool.forEach((k, v) -> v.writeAndFlush(pingReq())); } //发送pusar音讯办法 proxy代理 //此办法会依据topic,lookup找到broker,而后和broker的mqtt1883建设连贯, //这样,客户端给5682发心跳, 5682回一个心跳包,而后给brokerPool发心跳,就是给1883发心跳 //代理5682发送心跳的办法processPingReq(),会给1883发送心跳包 //********所以, 连贯代理5682端口时,只须要连贯胜利后,发送一次在线音讯,就和1883建设连贯,会维持心跳,断开连接也会有事件 public void pulsarMsg(String type, Channel channel) { String userRole = NettyUtils.getUserRole(channel); if (userRole == null || userRole.length() == 0 || "admin".equals(userRole)) { return; } String[] devArr = userRole.split("$"); String name; String key; if (devArr.length == 1) { //用户连贯 key = "user"; name = userRole; } else { name = devArr[0]; key = devArr[1]; } try { //设施上线 persistent://${tenantid}/${user}/${Key}.${Name}.sys.login //设施离线 persistent://${tenantid}/${user}/${Key}.${Name}.sys.logout //用户上线 persistent://${tenantid}/${user}/user.${username}.sys.login String pulsarTopic = "persistent://public/default/" + key + "." + name + ".sys." + type; Map<String, Object> map = new HashMap(); map.put("reqid", UUID.randomUUID().toString().replace("-", "")); map.put("v", "1.0"); map.put("t", System.currentTimeMillis()); map.put("method", "sys." + type); CompletableFuture<InetSocketAddress> lookupResult = lookupHandler.findBroker( TopicName.get(pulsarTopic)); lookupResult.whenComplete((brokerAddress, throwable) -> { if (null != throwable) { log.error("pulsarMsg========11111+++++++topic:{}, error:{}", pulsarTopic, throwable); return; } MqttFixedHeader pingHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, false, AT_MOST_ONCE, false, 0); MqttMessage msg = new MqttMessage(pingHeader, null , JSON.toString(map)); //这样发送收不到音讯,只是与mqtt1883端口建设了连贯,就算用mqtt订阅这个topic也收不到数据 writeToMqttBroker(channel, msg, pulsarTopic, brokerAddress); }); } catch (Exception e) { e.printStackTrace(); log.error("pulsarMsg========2222222222+++++++{}", e.getMessage()); } } MQTT1883端口批改类io.streamnative.pulsar.handlers.mqtt.support.DefaultProtocolMethodProcessorImpl ...

December 19, 2022 · 3 min · jiezi

关于pulsar:Linux-MacBook单机部署Pulsar并开启认证功能

Pulsar简略介绍Pulsar 是一个用于服务器到服务器的音讯零碎,具备多租户、高性能等劣势。 Pulsar 最后由 Yahoo 开发,目前由 Apache 软件基金会治理。 Pulsar 的要害个性如下: Pulsar 的单个实例原生反对多个集群,可跨机房在集群间无缝地实现音讯复制。极低的公布提早和端到端提早。可无缝扩大到超过一百万个 topic。简略的客户端 API,反对 Java、Go、Python 和 C++。反对多种 topic 订阅模式(独占订阅、共享订阅、故障转移订阅)。通过 Apache BookKeeper 提供的长久化音讯存储机制保障消息传递 。由轻量级的 serverless 计算框架 Pulsar Functions 实现流原生的数据处理。基于 Pulsar Functions 的 serverless connector 框架 Pulsar IO 使得数据更易移入、移出 Apache Pulsar。分层式存储可在数据古老时,将数据从热存储卸载到冷/长期存储(如S3、GCS)中。官网文档地址:https://pulsar.apache.org/doc... Pulsar在Linux或MacBook上装置Pulsar是java开发的,只须要装置jdk环境 MacBook装置jdk8 Linux卸载openjdk并装置Oracle jdk 官网下载地址:https://pulsar.apache.org/zh-... #下载pulsarwget https://archive.apache.org/dist/pulsar/pulsar-2.8.0/apache-pulsar-2.8.0-bin.tar.gz#解压tar xvfz apache-pulsar-2.8.0-bin.tar.gz#进入目录cd apache-pulsar-2.8.0#启动单机模式 Pulsar 会主动启动一个zookeeperbin/pulsar standalone发送和订阅数据应用Pulsar-client 工具 #进入目录cd apache-pulsar-2.8.0#消费者订阅: 在first-subscription 订阅中 consume 一条音讯到topic:my-topic 的命令bin/pulsar-client consume my-topic -s "first-subscription"#开启另一个终端发送数据,留神察看订阅者收到数据:content:hello-pulsar#生产者发送: 向名称为 my-topic 的 topic 发送一条简略的音讯 hello-pulsarbin/pulsar-client produce my-topic --messages "hello-pulsar"开启认证性能#生成秘钥bin/pulsar tokens create-secret-key --output /Users/liang/software/apache-pulsar-2.8.0/my-secret.key --base64#创立Token,记住生成的tokenbin/pulsar tokens create --secret-key file:///Users/liang/software/apache-pulsar-2.8.0/my-secret.key --subject admineyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.UCsEs8p8E_7OiTvCuf0rRvGP26ZPFunnSEbjGsynVqM#批改配置,开启token认证vim conf/standalone.conf#启用认证authenticationEnabled=trueauthenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderTokentokenSecretKey=file:///Users/liang/software/apache-pulsar-2.8.0/my-secret.key#broker与broker之间的互相通信(如果不配置报错:HTTP 401 Unauthorized BookKeeper client is closed)brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationTokenbrokerClientAuthenticationParameters=token:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.UCsEs8p8E_7OiTvCuf0rRvGP26ZPFunnSEbjGsynVqM#重启standalonebin/pulsar standalone#在次执行订阅报错: Unable to authenticate 没有权限bin/pulsar-client consume my-topic -s "first-subscription"#执行:获取租户列表: HTTP 401 Unauthorizedbin/pulsar-admin tenants list#批改客户端配置vim conf/client.confauthPlugin=org.apache.pulsar.client.impl.auth.AuthenticationTokenauthParams=token:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9.UCsEs8p8E_7OiTvCuf0rRvGP26ZPFunnSEbjGsynVqM#在次执行订阅胜利bin/pulsar-client consume my-topic -s "first-subscription"#执行:获取租户列表胜利bin/pulsar-admin tenants list#胜利显示"public""sample"参考链接:https://www.jianshu.com/p/dd3...https://blog.csdn.net/wt33450... ...

October 21, 2022 · 1 min · jiezi

关于pulsar:Pulsar-也会重复消费

背景许久没有分享 Java 相干的问题排查了,最近帮共事一起排查了一个问题: 在应用 Pulsar 生产时,产生了同一条音讯重复生产的状况。排查当他通知我这个景象的时候我就持狐疑态度,依据之前应用的教训 Pulsar 在官网文档以及 API 中都解释过: 只有当设置了生产的 ackTimeout 并超时生产时才会反复投递音讯,默认状况下是敞开的,查看代码也的确没有开启。 那会不会是调用了 negativeAcknowledge() 办法呢(调用该办法也会触发从新投递),因为咱们使了一个第三方库 https://github.com/majusko/pulsar-java-spring-boot-starter 只有当抛出异样时才会调用该办法。 查阅代码之后也没有中央抛出异样,甚至整个过程中都没看到异样产生;这就有点诡异了。 复现为了捋分明整个事件的前因后果,具体理解了他的应用流程; 其实也就是业务呈现了 bug,他在音讯生产时 debug 而后进行单步调试,当走完一次调试后,没多久马上又收到了同样的音讯。 但奇怪的是也不是每次 debug 后都能反复生产,咱们都说如果一个 bug 能 100% 齐全复现,那基本上就解决一大半了。 所以咱们排查的第一步就是齐全复现这个问题。 为了排除掉是 IDEA 的问题(尽管极大概率不太可能)既然是 debug 的时候产生的问题,那其实转换到代码也就是 sleep 嘛,所以咱们打算在生产逻辑里间接 sleep 一段时间看是否复现。 通过测试,sleep 几秒到几十秒都无奈复现,最初索性 sleep 一分钟,神奇的事件产生了,每次都胜利复现! 既然能胜利复现那就好说了,因为我本人的业务代码也有应用到 Pulsar 的中央,为了不便调试就筹备在本人的我的项目里再复现一次。 后果诡异的事件再次发生,我这里又不能复现了。 尽管这才是合乎预期的,但这就没法调了呀。本着置信现代科学的前提,咱们俩惟一的区别就是我的项目不一样了,为此我比照了两边的代码。 @PulsarConsumer( topic = xx, clazz = Xx.class, subscriptionType = SubscriptionType.Shared ) public void consume(Data msg) { log.info("consume msg:{}", msg.getOrderId()); Lock lock = redisLockRegistry.obtain(msg.getOrderId()); if (lock.tryLock()) { try { orderService.do(msg.getOrderId()); } catch (Exception e) { log.error("consumer msg:{} err:", msg.toString(), e); } finally { lock.unlock(); } } }后果不出所料,共事那边的代码加了锁;一个基于 Redis 的分布式锁,这时我一拍大腿不会是解锁的时候超时了导致抛了异样吧。 ...

March 18, 2022 · 1 min · jiezi

关于pulsar:宝藏公司一StreamNative

主讲人信息翟佳,StreamNative 联结创始人,Apache Pulsar PMC 成员与 Committer,在此之前任职于 EMC,负责北京 EMC 实时处理平台技术负责人。次要从事实时计算和分布式存储系统的相干开发,在开源我的项目 Apache BookKeeper, Apache Pulsar 等我的项目中继续奉献代码,目前是 Pulsar 和 BookKeeper 开源我的项目 PMC 成员。荣誉:上榜《2020 中国开源先锋 33 人》、「2021年OSCAR 尖峰开源人物」、猎云网守业先锋等奖项。 三句话简介在StreamNative你将取得:激动人心的我的项目,疾速成长的公司,凋谢合作的环境,有竞争力的薪酬和福利,灵便弹性的工作工夫,和一群地球上最好的队友。开源文化,提倡异步沟通,高度自驱,遵循 OKR 后果导向,无996不内卷,文化通明公开。咱们是近程办公团队,咱们的员工来自不同时区和城市,无论你在地球上哪个角落,只有你能够连贯互联网,就能够退出StreamNative。 公司介绍StreamNative 是一家开源根底软件公司,由 Apache 软件基金会顶级我的项目 Apache Pulsar 开创团队组建而成,围绕 Pulsar 打造下一代云原生批流交融数据平台。StreamNative 作为 Apache Pulsar 商业化公司,专一于开源生态和社区构建,致力于前沿技术畛域的翻新,开创团队成员曾就任于 Yahoo、Twitter、Splunk、EMC 等出名大公司。 2021 年 10 月,StreamNative 发表实现 2300 万美元 A 轮融资,由沙特阿美旗下多元化风投基金 Prosperity7 Ventures 与华泰证券旗下另类投资子公司华泰翻新联结领投,老股东红杉中国、源码资本持续加码。 公司官网(链接):StreamNative公司在 SegmentFault 的技术博客(链接):Apache pulsar 咱们的产品是什么?Apache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。目前,Apache Pulsar 处于疾速倒退期间,国内外有越来越多的公司落地 Apache Pulsar ,散布在人工智能、物联网、直播与短视频、金融证券、电子商务都行业,如国内有腾讯、华为、金山云、涂鸦智能、BIGO、360、中国移动、中国电信、京东到家、安全证券等等。 在云原生时代,开发者应该把更多精力放在应用程序和微服务上,而不是把工夫节约在保护简单的音讯和流数据基础设施上。作为下一代云原生分布式音讯流平台, Pulsar 从诞生时就前瞻性地采纳了存储计算拆散、分层分片的云原生架构,能够极大加重用户在音讯零碎中遇到的扩大和运维艰难,是云原生时代解决实时音讯流数据传输、存储和计算的最佳解决方案。GitHub 地址:Apache pulsar ...

March 16, 2022 · 1 min · jiezi

关于pulsar:聊聊-Pulsar编译-Pulsar-源码并搭建源码环境

一、环境筹备老周这里编译 Pulsar 的版本是 2.9.1,也是 Pulsar 目前最新的版本。 JDK:1.8.0_241Maven:3.6.1Pulsar:apache-pulsar-2.9.1-src.tar.gz二、源码编译编译&装置命令: mvn install -DskipTests执行完上述的 maven 命令后,发现 managed-ledger 模块编译报错,如下:点进去发现是 proto 包下的 MLDataFormats 类中的存在动态类与源码中的存在抵触,导致编译失败,所以我手动的导入正确的 proto 包下的类。 再次进行编译: 额,又编译失败,很显著能够看出这是 test 包下的测试类,但我下面的 mvn install -DskipTests 命令,不是会跳过测试类进行编译吗?这就要说下这两者的区别了: mvn install -Dmaven.test.skip=true 测试类不会生成.class 文件mvn install -DskipTests 测试类会生成.class文件测试类不想导入正确的 proto 包中类的话。咱们就上面这个命令来编译装置: mvn install -Dmaven.test.skip=true这次就能疏忽测试类进行相应的编译以及装置:当你看到 BUILD SUCCESS 示意编译胜利了。 三、Pulsar 的目录构造3.1 压缩包的目录构造 bin:蕴含所有的 CLI 工具,包含 pulsar-admin、pulsar-client、pulsar、bookkeeper 等。conf:蕴含所有的配置文件,包含 client、broker、bookkeeper、zookeeper 的配置等,CLI 工具的配置文件也都在外面。examples:蕴含 Java 和 Python 应用 pulsar-function 的例子。instances:蕴含 Java 实例的 jar 包和 Python 实例的 py 文件。lib:所有 Pulsar 编译后的 jar 包都在这里。licenses:许可证信息,能够疏忽。3.2 源码的目录构造你是不是也有和我一样的感触,这些模块感觉乌七八糟,是的,没错,社区也始终在做模块的一些优化,一些非必要的模块开始被移除、合并到其它模块中去。 ...

March 15, 2022 · 2 min · jiezi

关于pulsar:Apache-Pulsar-技术系列-Pulsar事务实现原理

导语Apache Pulsar 是一个多租户、高性能的服务间音讯传输解决方案,反对多租户、低延时、读写拆散、跨地区复制、疾速扩容、灵便容错等个性。腾讯云MQ Oteam Pulsar工作组对 Pulsar 做了深刻调研以及大量的性能和稳定性方面优化,目前曾经在TDBank、腾讯云TDMQ落地上线。本篇将简略介绍Pulsar服务端音讯确认的一些概念和原理,欢送大家浏览。 作者简介林琳 腾讯云中间件专家工程师 Apache Pulsar PMC,《深刻解析Apache Pulsar》作者。目前专一于中间件畛域,在音讯队列和微服务方向具备丰盛的教训。负责 TDMQ的设计与开发工作,目前致力于打造稳固、高效和可扩大的根底组件与服务。 前言在事务音讯未呈现前,Pulsar中反对的最高等级的消息传递保障,是通过Broker的音讯去重机制,来保障Producer在单个分区上的音讯只准确保留一次。当Producer发送音讯失败后,即便重试发送音讯,Broker也能确保音讯只被长久化一次。但在Partitioned Topic的场景下,Producer没有方法保障多个分区的音讯原子性。 当Broker 宕机时,Producer可能会发送音讯失败,如果Producer没有重试或已用尽重试次数,则音讯不会写入 Pulsar。在消费者方面,目前的音讯确认是尽力而为的操作,并不能确保音讯肯定被确认胜利,如果音讯确认失败,这将导致音讯从新投递,消费者将收到反复的音讯, Pulsar 只能保障消费者至多生产一次。 相似地,Pulsar Functions 仅保障对幂等函数上的单个音讯解决一次,即须要业务保障幂等。它不能保障解决多个音讯或输入多个后果只产生一次。 举个例子,某个Function的执行步骤是:从Topic-A1、Topic-A2中生产音讯,而后Function中对音讯进行聚合解决(如:工夫窗口聚合计算),后果存储到Topic-B,最初别离确认(ACK) Topic-A1和Topic-A2中的音讯。该Function可能会在“输入后果到Topic-B”和“确认音讯”之间失败,甚至在确认单个音讯时失败。这将导致所有(或局部)Topic-A1、Topic-A2的音讯被从新传递和重新处理,并生成新的后果,进而导致整个工夫窗口的计算结果谬误。 因而,Pulsar须要事务机制来保障准确一次的语义(Exactly-once),生产和生产都能保障准确一次,不会反复,也不会失落数据,即便在Broker宕机或Function解决失败的状况下。 事务简介Pulsar事务音讯的设计初衷是用于保障Pulsar Function的准确一次语义,能够保障Producer发送多条音讯到不同的Partition时,能够同时全副胜利或者同时全副失败。也能够保障Consumer生产多条音讯在时,能够同时全副确认胜利或同时全副失败。当然,也能够把生产、生产都蕴含在同一个事务中,要么全副胜利,要么全副失败。 咱们以本大节结尾处的Function场景为例,演示生产、生产在同一个事务中的场景: 首先,咱们须要在broker.conf中启用事务。 \transactionCoordinatorEnabled=true 而后,咱们别离创立PulsarClient和事务对象。生产者和消费者API中都须要带上这个事务对象,能力确保它们在同一个事务中。 //创立client,并启用事务PulsarClient pulsarClient = PulsarClient.builder() .serviceUrl("pulsar://localhost:6650") .enableTransaction(true) .build(); // 创立事务Transaction txn = pulsarClient .newTransaction() .withTransactionTimeout(1, TimeUnit.MINUTES) .build() .get(); String sourceTopic = "public/default/source-topic";String sinkTopic = "public/default/sink-topic";//创立生产者和消费者Consumer<String> sourceConsumer = pulsarClient.newConsumer(Schema.STRING) .topic(sourceTopic) .subscriptionName("my-sub") .subscribe(); Producer<String> sinkProducer = pulsarClient.newProducer(Schema.STRING) .topic(sinkTopic) .create(); // 从原Topic中生产一条音讯,并发送到另外一个Topic中,它们在同一个事务内 Message<String> message = sourceConsumer.receive();sinkProducer.newMessage(txn).value("sink data").sendAsync();sourceConsumer.acknowledgeAsync(message.getMessageId(), txn);// 提交事务txn.commit().get();咱们以本大节结尾处的Function例子来说: ...

March 3, 2022 · 1 min · jiezi

关于pulsar:聊聊-Pulsar-Pulsar-分布式集群搭建

一、集群搭建要求1.1 搭建设计搭建 Pulsar 集群至多须要 3 个组件:ZooKeeper 集群、Bookkeeper 集群和 Broker 集群(Broker 是 Pulsar 的本身实例)。这三个集群组件如下: ZooKeeper 集群(3 个 ZooKeeper 节点组成)Broker 集群(3 个 Pulsar 节点组成)Bookkeeper 集群(也称为 Bookie 集群,3 个 BookKeeper 节点组成)Pulsar 的安装包已蕴含了搭建集群所需的各个组件库。无需独自下载 ZooKeeper 安装包和 BookKeeper 安装包。(在理论生产环境中,ZooKeeper 咱们并不仅仅利用在 Pulsar 上,包含 HBase 等其余的组件也须要依赖,所以生产环境 ZooKeeper 最好应用外置 ZooKeeper 集群环境) 注:如果是在内网测试环境搭建集群,为了防止防火墙造成端口开启繁琐,能够敞开服务器防火墙。1.2 几种搭建形式1.2.1 形式 1官网倡议须要 6 台机器3 台用于运行 ZooKeeper 集群,倡议使用性能较弱的机器,Pulsar 仅将 ZooKeeper 用于与协调无关的定期工作和与配置无关的工作,而不用于基本操作。3 台用于运行 Bookkeeper 集群和 Broker 集群,倡议使用性能强劲的机器。1.2.2 形式 2然而也能够在一台机器上同时部署 ZooKeeper,Bookkeeper ,Broker ,也就是起码须要三台机器就能够部署一个 Pulsar 集群。 1.2.3 形式 3其实也还能够在 3 台机器上部署 ZooKeeper 集群,另外 3 台机器部署 Bookkeeper 集群,另 3 台机器部署 Broker 集群,也就是共须要耗费 9 台机器。 ...

March 2, 2022 · 2 min · jiezi

关于pulsar:聊聊-Pulsar-在-Linux-环境上搭建-Pulsar

一、环境筹备jdk下载地址链接:jdk 1.8,提取码: dv5hpulsar下载地址链接:pulsar2.9.1,提取码: 8489 1.1 Java 环境为前提1.1.1 上传jdk-8u261-linux-x64.rpm到服务器并装置# 装置命令rpm -ivh jdk-8u261-linux-x64.rpm 1.1.2 配置环境变量# 编辑配置文件,jdk的bin目录到/etc/profile文件,对所有用户的shell无效vim /etc/profile# 失效source /etc/profile export JAVA_HOME=/usr/java/jdk1.8.0_261-amd64export PATH=$PATH:$JAVA_HOME/bin # 验证java -version至此,jdk 装置胜利。 1.2 Pulsar 的装置与配置1.2.1 上传apache-pulsar-2.9.1-bin.tar.gz到服务器并解压tar -zxf apache-pulsar-2.9.1-bin.tar.gz -C /opt 1.2.2 启动单机模式 Pulsar./pulsar standalone间接回车走起,而后呈现以下报错:很显著,没有足够的内存。 free -m 命令查了下,可用内存还有 957 M,怎么就说内存不够了呢?查了下文档,原来默认须要 2G 的 JVM 内存。那我就调整下 pulsar 的默认配置,把默认的 2g 调整成 512m。 vim conf/pulsar_env.shPULSAR_MEM=${PULSAR_MEM:-"-Xms512m -Xmx512m -XX:MaxDirectMemorySize=512m"}source conf/pulsar_env.sh而后持续启动 pulsar ./pulsar standalone 说我 zookeeper 有启动 2181 端口了。 是的,我的云主机是启动了一个 zookeeper。那我把我本人的启动的 zookeeper 停掉。 进到你装置 zookeeper 的目录中,执行以下进行的命令即可。 ...

February 16, 2022 · 1 min · jiezi

关于pulsar:聊聊-Pulsar-Pulsar-的核心概念与基础架构

一、Pulsar 介绍Apache Pulsar 是 Apache 软件基金会的顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。 Pulsar 的要害个性如下: 是下一代云原生分布式音讯流平台。Pulsar 的单个实例原生反对多个集群,可跨机房在集群间无缝地实现音讯复制。极低的公布提早和端到端提早。可无缝扩大到超过一百万个 topic。简略的客户端 API,反对 Java、Go、Python 和 C++。主题的多种订阅模式(独占、共享和故障转移)。通过 Apache BookKeeper 提供的长久化音讯存储机制保障消息传递 。由轻量级的 serverless 计算框架 Pulsar Functions 实现流原生的数据处理。基于 Pulsar Functions 的 serverless connector 框架 Pulsar IO 使得数据更易移入、移出 Apache Pulsar。分层式存储可在数据古老时,将数据从热存储卸载到冷/长期存储(如S3、GCS)中。二、什么是云原生既然说 Pulsar 是下一代云原生分布式音讯流平台,那咱们得晓得什么是云原生吧。 云原生的概念是 2013 年 Matt Stine 提出的,到目前为止,云原生的概念产生了屡次变更,目前最新对云原生的定义为:DevOps + 继续交付 + 微服务 + 容器。 而合乎云原生架构的应用程序是:采纳开源堆栈(k8s + docker)进行容器化,基于微服务架构进步灵活性和可维护性,借助麻利办法、DevOps 反对继续迭代和运维自动化,利用云平台设施实现弹性伸缩、动静调度、优化资源利用率。 三、外围概念3.1 Messages(音讯)ComponentDescriptionValue / data payload音讯携带的数据,所有 Pulsar 的音讯携带原始 bytes,然而音讯数据也须要遵循数据 schemas。Key音讯能够被 Key 打标签。这能够对 topic 压缩之类的事件起作用。Properties可选的,用户定义属性的 key/value map。Producer name生产音讯的 producer 的名称(producer 被主动赋予默认名称,但你也能够本人指定。)Sequence ID在 topic 中,每个 Pulsar 音讯属于一个有序的序列。音讯的 sequence ID 是它在序列中的秩序。Publish time音讯公布的工夫戳Event time可选的工夫戳,利用能够附在音讯上,代表某个事件产生的工夫,例如,音讯被解决时。如果没有明确的设置,那么 event time 为0。TypedMessageBuilder它用于结构音讯。您能够应用TypedMessageBuilder设置音讯属性,比方音讯键、音讯值。设置TypedMessageBuilder时,将键设置为字符串。如果您将键设置为其余类型,例如,AVRO对象,则键将作为字节发送,并且很难从消费者处取回AVRO对象。音讯的默认大小为 5 MB,能够通过以下形式配置音讯的最大大小。 ...

February 7, 2022 · 6 min · jiezi

关于pulsar:Pulsar-vs-Kafka一文掌握高性能消息组件Pulsar基础知识

什么是Pulsar?Apache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代 云原生 分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐以及低延时的高可扩大流数据存储个性。 Pulsar 的要害个性Pulsar 的单个实例原生反对多个集群,可跨机房在集群间无缝地实现音讯复制。极低的公布提早和端到端提早。可无缝扩大到超过 一百万 个 topic。简略的客户端 API,反对 Java、Go、Python 和 C++。反对多种 topic 订阅模式(独占订阅、共享订阅、故障转移订阅)。通过 Apache BookKeeper 提供的长久化音讯存储机制保障消息传递 。由轻量级的 serverless 计算框架 Pulsar Functions 实现流原生的数据处理。基于 Pulsar Functions 的 serverless connector 框架 Pulsar IO 使得数据更易移入、移出 Apache Pulsar。分层式存储可在数据古老时,将数据从热存储卸载到冷/长期存储(如S3、GCS)中。Pulsar vs Kafka下方链接为 Pulsar与 Kafka具体比照报告,可自行下载查看 https://streamnative.io/en/bl... https://streamnative.io/zh/bl... 性能与可用性基准测试(StreamNative) 数据起源 https://mp.weixin.qq.com/s/UZ... https://streamnative.io/en/bl... https://streamnative.io/white... 吞吐量(Throughput) 在与 Kafka 的持久性保障雷同的状况下, Pulsar 可达到 605 MB /s 的公布和端到端 吞吐量 (与 Kafka 雷同)以及 3.5 GB/s 的 catch-up read 吞吐量(比 Kafka 高 3.5 倍)。Pulsar 的吞吐量不会因分区数量的减少和持久性级别的扭转而受到影响,而 Kafka 的吞吐量会因分区数量或持久性级别的扭转而受到重大影响。 ...

January 17, 2022 · 2 min · jiezi

关于pulsar:博文推荐|Pulsar-的消息存储机制和-Bookie-的-GC-机制原理

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。 GitHub 地址:http://github.com/apache/pulsar/ 作者介绍本文作者:鲍明宇,腾讯 TEG 数据平台部高级工程师,Apache Pulsar Contributor,热衷于开源技术,在音讯队列畛域有丰盛教训,目前致力于 Pulsar 的落地和推广。 腾讯数据平台部 MQ 团队对 Pulsar 做了深刻调研以及大量的性能和稳定性方面优化,目前曾经在 TDbank 落地上线。本文是 Pulsar 技术系列中的一篇,次要简略梳理了 Pulsar 音讯存储与 BookKeeper 存储文件的清理机制。其中,BookKeeper 能够了解为一个 NoSQL 的存储系统,默认应用 RocksDB 存储索引数据。 Pulsar 音讯存储Pulsar 的音讯存储在 BookKeeper 中,BookKeeper 是一个胖客户的零碎,客户端局部称为 BookKeeper,服务器端集群中的每个存储节点称为 bookie。Pulsar 零碎的 broker 作为 BookKeeper 存储系统的客户端,通过 BookKeeper 提供的客户端 SDK 将 Pulsar 的音讯存储到 bookies 集群中。 Pulsar 中的每个 topic 的每个分区(非分区 topic,能够依照分区 0 了解,分区 topic 的编号是从 0 开始的),会对应一系列的 ledger,而每个 ledger 只会存储对应分区下的音讯。对于每个分区同时只会有一个 ledger 处于 open 即可写状态。 ...

November 17, 2021 · 3 min · jiezi

关于pulsar:实现可扩展的流处理Pulsar-KeyShared-订阅模式

本文翻译自 StreamNative 博客《Scalable Stream Processing with Pulsar’s Key_Shared Subscription》[1],作者:David Kjerrumgaard。译者:刘梓霖、段嘉摘要1.传统的音讯零碎通过一个 topic 上的多个并发消费者实现了高吞吐量、无状态解决。2.流零碎为单个消费者提供有状态的解决,但在吞吐量上有所保留。3.Pulsar 的 Key_Shared 订阅类型容许对单个 topic 进行高吞吐量和有状态解决。4.Pulsar 的 Key_Shared 订阅类型适宜须要对大量数据进行有状态解决的用户场景,例如个性化、实时营销、微定向广告和网络安全。 在建设 Pulsar 的 Key_Shared 订阅前,用户在应用传统流零碎框架时须决定是在一个 topic 上领有多个消费者以取得高吞吐量,还是领有一个消费者以取得有状态的解决。本博客中将介绍如何应用 Pulsar 的 Key_Shared 订阅对点击流数据进行行为剖析。 音讯零碎和流零碎之区别很多开发者认为音讯零碎和流零碎实质上是一样的,因而常常混用这两个术语。然而,音讯零碎和流零碎是截然不同的,理解它们之间的区别能够让用户依据本人的用户场景抉择适合的零碎。 本节内容比拟了各自的音讯生产和解决语义,帮忙大家了解为什么有时独自的音讯零碎和流零碎都不能满足你的场景,以及为什么有些场景须要对立的音讯和流零碎。 音讯零碎应用音讯零碎的外围数据结构是音讯队列。传入的音讯以先进先出(FIFO)的顺序存储。音讯被保留在队列内,直到被生产。一旦音讯被生产,音讯就会被删除,以便为新传入的音讯腾出空间。 从消费者解决的角度来看,消息传递是齐全无状态的,因为每条音讯都蕴含执行解决所需的所有信息。因而能够在不须要来自先前音讯的任何信息的状况下进行操作,容许用户在多个消费者之间调配音讯解决,缩小解决提早。 音讯零碎非常适合用户心愿扩充某个 topic 的并发消费者数量以减少解决吞吐量的场景。很好的例子是传统的工作队列,即须要由一个订单执行的微服务来解决传入的电子商务订单。因为每个订单都是独立于其余订单的,通过减少从队列中生产的微服务实例的数量来满足需要。 Pulsar 的共享订阅就是为此类型的场景设计。如图 1 所示,它通过确保每条音讯精确地传递给附加订阅的一个消费者来提供消息传递语义。 图示 1:Pulsar 的共享订阅类型反对多个消费者。 流零碎在流解决中,核心数据结构是日志,它是一个按工夫排序的追加记录序列。音讯被追加到日志的结尾,读取程序顺次从最早到最新。音讯生产是一种非破坏性的流解决操作,因为消费者只是更新它在流中的地位。 从解决的角度来看,流是有状态的,因为流解决是在一连串的音讯上进行的,这些音讯通常依据工夫或大小被分组为固定大小的 “窗口” (例如:每 5 分钟)。流解决依赖于窗口中所有音讯的信息以产生正确的后果。 流零碎非常适合聚合操作,例如计算传感器读数的简略挪动平均值,因为所有传感器读数必须由同一个消费者组合解决,以便计算正确数值。 Pulsar 的独占订阅为这种类型的场景提供了正确的流解决语义。如图 2 所示,独占订阅模式确保所有音讯都依照接管的工夫程序传递给单个消费者。 图示 2:Pulsar 的独占订阅模式反对繁多消费者。 比照与取舍如你所见,音讯队列和流提供了不同的解决语义。音讯零碎通过反对多个并发消费者来达到反对高扩大。在解决须要疾速解决的大量数据时,应该应用音讯零碎,这样每个音讯从产生到被解决之间的提早都很低。 流零碎领有更为简单的剖析解决能力,但以就义每个 topic 分区的可扩展性为代价。为了失去准确后果,只容许单个消费者解决数据,因而解决数据的速度会受到重大的限度,这导致流零碎场景中呈现更高的提早。 只管能够通过应用分片和分区来缩小提早,但可扩展性依然无限。将解决的可扩展性与分区的数量做绑定会升高架构的灵活性。更改分区数量也会影响数据公布到 topic 的形式。因而,只有当你须要有状态的解决并且可能容忍较慢的解决时才应该应用流解决。 然而,如果你的场景是既须要低提早又须要有状态解决应如何抉择?如果你在应用 Apache Pulsar,那么你应该思考 Key_Shared 订阅模式,它提供的解决语义将消息传递和流解决的合二为一。 ...

September 29, 2021 · 3 min · jiezi

关于pulsar:祝贺-StreamNative-工程师张勇成功跻身-Apache-BookKeeper-Committer

对于 Apache BookKeeperApache BookKeeper 作为 Apache 软件基金会顶级我的项目,是一个优化实时工作负载的存储服务,旨在保障高持久性、一致性与低提早等个性。BookKeeper 具备多种企业级存储平台性能,如反对长久、统一、容错地存储数据,无效地存储、拜访历史数据与实时数据等,并广泛应用于多种业务场景,例如为分布式系统提供高可用性或多正本;在单个或多个集群间(多个数据中心)提供跨机器复制;为音讯零碎(如 Apache Pulsar)提供存储服务;为流工作存储不可变对象(例如:检查点数据的快照)等。近期,经由 Apache BookKeeper PMC 团队提名与投票选举,来自 StreamNative 的开发工程师张勇正式成为 Apache BookKeeper Committer。 家喻户晓,StreamNative 是一个年老的团队,然而这并不影响 StreamNative 精英团队的打造,而张勇做为年龄最小的 95 后“尾单”,却在队伍的最后方临阵脱逃,证实了他的优良的我的项目能力。 StreamNative 之旅张勇在 2019 年 2 月即开始了 Apache Pulsar 的奉献工作,始终主攻 Pulsar 的存储、平安、事务等相干性能个性,成为了 Pulsar committer,一路上,他也在一直回报社区、引领更多的人参加 Apache Pulsar 开源生态。 作为一个颇有“远见“的 95 后,张勇早在 2019 年未毕业前就退出了 StreamNative。“为了做乏味的事留在 StreamNative”的想法,也为他当初的问题打下了根底。张勇认为,在 StreamNative 成长和学习到了很多,次要体现在三方面:合作形式、个人成长、工作成就感。不论是分布式办公的合作形式、英文交换工作环境带来的个人成长,还是能间接和社区用户一起沟通 bug 带来的成就感,都让张勇和 StreamNative 以及 Apache BookKeeper、Apache Pulsar 社区越来越严密,越发投入 Apache BookKeeper 与 Apache Pulsar 的开发中。 成为 Apache BookKeeper committer自 2011 年起,BookKeeper 开始在 Apache 软件基金会孵化,并于 2015 年 1 月毕业成为 Apache 软件基金会顶级我的项目。在这四年间,Twitter、Yahoo、Salesforce 等公司应用 BookKeeper 存储和服务重要数据,撑持了许多不同场景。 ...

September 3, 2021 · 1 min · jiezi

关于pulsar:活动回顾-Apache-Hudi-x-Pulsar-Meetup-杭州站戳进看视频

8 月 28 日下午,由 StreamNative 与阿里云联结举办的 Apache Hudi x Apache Pulsar Meetup 杭州站顺利在杭州君悦酒店举办。本次流动由 StreamNative 成员并邀请阿里云 AnalyticDB 数据仓库团队、Zoom 等合作伙伴独特为大家出现,为大家带来了满满 Pulsar 与 Hudi 的硬核干货与实际。 本流动特别感谢阿里云、传智教育等合作伙伴的大力支持,让本次 Meetup 丰富多彩,更要感激来自 Apache Pulsar 社区的泛滥小伙伴,大家面对面交换,踊跃互动,现场十分火爆,让大家又一次充值了信奉 ️ ,感触不一样的 Pulsar 热度。接下来让咱们一起来回顾精彩现场吧! 流动图片 流动视频 点击图片观看视频 内容回顾社区活动|Apache Hudi x Apache Pulsar Meetup 杭州站来啦! 阿里云基于 Hudi 构建 Lakehouse 实际分享嘉宾:王烨,阿里云数据库高级技术专家 要点总结:本分享次要介绍阿里云如何应用 Hudi 和 OSS 对象存储构建 Lakehouse,Lakehouse 概述,以及阿里云数据库 OLAP 团队如何构建 Lakehouse,介绍在构建 Lakehouse 时遇到的问题和挑战以及如何解决。 Pulsar 2.8.0 性能个性概述及布局分享嘉宾:翟佳,StreamNative 联结创始人,Apache Pulsar PMC 成员 要点总结:本次为大家分享 Apache Pulsar 社区正在推动要害性能的最新进展,并为大家介绍 Apache Pulsar 2.8.0 版本有哪些在音讯零碎与大数据集成方向值得关注的个性。 ...

September 2, 2021 · 1 min · jiezi

关于pulsar:Apache-Pulsar-新增-2-位-PMC-成员林琳与陈航

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。 新增 2 位中文社区 PMC 成员:林琳与陈航往年 8 月,经验了 PMC 们的举荐与投票后, Apache Pulsar 社区两位位奉献卓越的 Committer 被提名为 PMC 成员。他们别离是前 BIGO Staff Engineer 陈航[1]与腾讯云高级工程师林琳[2] 。 关注 Apache Pulsar 中文社区的搭档们肯定常常在中文社区见到两位新 PMC 成员的身影。单单在 Pulsar 周报列举的代码贡献者中,两位简直未缺席,继续地参加打磨 Pulsar。让咱们独特理解这两位“老熟人”吧。 (以下介绍程序按 PMC 成员官宣工夫排序) 开源+中间件爱好者林琳林琳是腾讯云中间件的 10 级工程师。在接触 Pulsar 前,林琳就是开源和中间件爱好者,长年混迹在开源社区,喜爱钻研各种中间件的源码与设计思维,如音讯队列、RPC 框架、分布式事务等。而后在工作中,因为在中间件团队负责音讯队列相干工作,在做相干调研时接触到 Apache Pulsar。林琳在 Pulsar Broker、Function、Schema、IO 等方向奉献了 160 多个个性,并参加 5 个 PIP(重大改良)。 林琳的脉冲“心”动林琳在已经的对话中示意,他认为 Pulsar 发展潜力十分大,设计思维优雅前卫,于是开始理解并逐步参加到 Apache Pulsar 我的项目中来。不同于别人缓和的第一个 PR,他的第一个 PR 是在钻研 Pulsar 的源码时顺手提的,来解决仓库内简略的 issue,由此开启了迈向 Pulsar PMC 成员的第一步。  ...

September 1, 2021 · 2 min · jiezi

关于pulsar:Function-Mesh-开发工程师付睿用户开发者Committer-之路

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/ Committer 新成员付睿8 月,通过 Apache Pulsar PMC 的提名与审核,来自 StreamNative 的软件工程师付睿入选 Apache Pulsar Committer。恭喜 Apache Pulsar 社区 Committer 新成员付睿! 关注 Pulsar 社区的搭档们或者对咱们的新 Committer 早已有所耳闻。付睿曾任清华大学能源互联网研究院平台开发工程师,在 Pulsar Summit 2020 亚洲峰会上,曾分享 Apache Pulsar 在能源互联网畛域的落地实际[1]。退出 StreamNative 后他也在 Pulsar Summit 2020 北美峰会介绍了 Function Mesh[2]。 当初,付睿作为 Pulsar 开发工程师,次要的奉献有 Pulsar Function、Go Client,以及和 StreamNative 的共事独特研发 Function Mesh 和 Connector 来丰盛对 Pulsar 用户的反对。 近日,咱们和付睿进行了连线,聊聊他入行以及与 Apache Pulsar 的故事。以下内容依据采访整顿而成。 用户到开发者的角色转换付睿能够说是从 Pulsar 的用户一步步走到了 Committer 的地位。谈起他的 Pulsar 经验,就得从作为 Pulsar 用户谈起。 ...

August 26, 2021 · 1 min · jiezi

关于pulsar:优雅的故障处理快速创建-Pulsar-重试队列

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐以及低延时的高可扩大流数据存储个性。 本文来自社区用户投稿,作者侯盛鑫,来自伴鱼。在很多在线的业务零碎中,因为业务逻辑解决出现异常,一条音讯没有被确认,咱们须要尽可能筹备好优雅地解决故障。重试是咱们的罕用做法,个别咱们从以下三方面动手进行重试: 设置从新投递。若须要容许从新生产失败的音讯,咱们能够配置消费者同时容许生产音讯从业务主题和重试主题,并配置了容许消费者主动重试。设置重试队列。如果音讯没有被生产胜利,它将被保留到重试主题当中。并能够指定延时工夫,主动从新生产重试主题外面的生产失败音讯。重试的次数限度。默认状况下,如果消费者没有胜利生产一条音讯(也就是说消费者无奈 ack ),它将重试同一条音讯。那么,难道咱们不能简略地让这种默认行为接管所有,而后重试音讯直到胜利吗?问题是这条音讯可能永远不会胜利。至多没有某种模式的手动干涉它是不会胜利的。于是乎,消费者就永远不会持续解决后续的任何音讯,并且咱们的音讯解决将陷入困境,所以在重试肯定次数后将采取死信队列的办法存储为确认胜利音讯。 如上图,Pulsar 采纳非阻塞申请重试队列和死信队列(DLQ) 来扩大现有事件驱动架构作用,通过这样解决咱们就能够在不中断实时流量的状况下实现解耦、可察看的错误处理。 然而 Pulsar 默认状况下,主动重试这个选项是敞开的,咱们能够设置 enableRetry 选项为 true,这样能够在这个消费者中进行重试。如下例子所示,消费者会从重试主题生产音讯: package main import ( "context" "fmt" "github.com/apache/pulsar-client-go/pulsar" "time") func main() { cp := pulsar.ClientOptions{ URL: "pulsar://xxx.xxx.xxx.xxx:6650", OperationTimeout: 30 * time.Second, } client, err := pulsar.NewClient(cp) if err != nil { return } defer client.Close() d := &pulsar.DLQPolicy{ MaxDeliveries: 3, RetryLetterTopic: "persistent://group/server/xxx-RETRY", DeadLetterTopic: "persistent://group/server/xxx-DLQ", } consumer, err := client.Subscribe(pulsar.ConsumerOptions{ Topic: "persistent://group/server/xxx", SubscriptionName: "test", Type: pulsar.Failover, RetryEnable: true, DLQ: d, NackRedeliveryDelay: time.Second * 3, }) if err != nil { return } ctx := context.Background() for { msg, err := consumer.Receive(ctx) if err != nil { return } if msg.Key() == 0 { // 确认的解决 consumer.Ack(msg) } else { // 不确认,等 NackRedeliveryDelay 后将被从新投递到主队列进行生产consumer.Nack(msg) // 稍后解决,等 xx 秒后将被从新投递到重试队列consumer.ReconsumeLater(msg, time.Second * 5) // 以上办法二选其一 } }}重试队列首先,如上样例主动创立了一个重试队列,产生重试音讯须要两个条件其中一个: ...

August 25, 2021 · 1 min · jiezi

关于pulsar:议题征集-Pulsar-Summit-Asia-2021-正式启动开启演讲议题征集

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/ 各位 Apache Pulsar 中文社区小伙伴们,久等了! 咱们快乐地发表:Pulsar Summit Asia 2021 主会将于 11 月 20-21 日召开,即日起正式启动筹备。演讲议题征集同步开启,欢送你提交 Pulsar 演讲内容。 往期峰会回顾在 6 月份,Pulsar Summit 北美峰会 2021 顺利完结,50+ 演讲嘉宾、16 个社区与企业合作伙伴独特参加,泛滥落地用户、上下游大数据系统展现了在 Pulsar 上的实际与联结解决方案。大会也正式发表首届寰球 Pulsar Hackathon 2021 Top 5 团队,让咱们见证了社区开发者的精彩创意。 Pulsar Summit 欧洲峰会 2021 也已实现议题评审,近期将正式颁布日程,敬请期待。 去年 Pulsar Summit 亚洲峰会,来自腾讯、BIGO、金山云、Splunk、Yahoo!JAPAN、达达团体、华为云、涂鸦智能、中国移动云、智联招聘等企业的 40+ 海内外讲师、20+ 社区与企业合作伙伴、近千名社区成员独特参加,给咱们留下了深刻印象。 在往年,Apache Pulsar 贡献者冲破 400 位里程碑,Apache Pulsar 2.8.0 版本公布,中文社区独立或联结搭档顺利组织杭州、上海、深圳、广州、北京等地 Meetup、Release Party,咱们在 ArchSummit 上海、QCon 北京等大会布展,也参加开源之夏、ApacheCon Asia 2021 等开源流动,社区更加发展壮大……这些都是咱们值得回顾的重要时刻,置信往年 Pulsar Summit 亚洲峰会 2021 会更加精彩! ...

August 20, 2021 · 1 min · jiezi

关于pulsar:Apache-Pulsar-273-版本介绍

本文原文作者是 StreamNative 工程师丛搏、刘昱。译者刘梓霖,传智教育工程师。对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/近期,Apache Pulsar 社区公布了 Pulsar 2.7.3 版本!新版本涵盖 32 位贡献者提供的改良和谬误修复,并提交了 79 次变更。 版本亮点:• 游标读取遵循调度字节率限制器的设置,不会再导致意外的后果。[1]• Ledger 滚动工作按预期执行。[2] 本博客介绍了 2.7.3 版本最值得关注的停顿,如需理解所有性能降级和 bug 修复的残缺列表,请查阅 Pulsar 2.7.3 公布注记[3] 。 Bug 修复和性能降级BrokerPR-9826[4] : 游标读取遵循调度字节率限制器的限度。 问题:无论是命名空间还是主题策略在限度散发速率时都未思考应用字节速率限度。 解决方案:修复了调度字节速率限制器设置的行为。游标读取会遵循此设置并且不会在导致意外的后果。 PR-11226[5]: Ledger 滚动打算工作依照预期执行。 问题:在此 PR 之前,ledger 在达到最大滚动工夫之前执行滚动工作,导致 ledger 不能及时滚动。 解决方案:修复 ledger 滚动调度的工夫,工作只能在 ledger 胜利创立之后运行。 PR-11136[6] : 在重启 broker 时,主题级别的保留策略能失常工作。 问题:在此 PR 之前,当为一个 topic 设置 topic 级保留策略而后重启 broker 时,该 topic 级别的保留策略不失效。 解决方案:修改了此策略的行为,使其在启动 policyCacheInitMap 后重放所有策略音讯,并在重新启动 broker 时增加了保留策略查看测试。 ...

August 19, 2021 · 2 min · jiezi

关于pulsar:博文干货|5张图带你快速入门-Pulsar-的存储引擎-BookKeeper

以下文章来源于程序员jinjunzhu ,作者jinjunzhu程序员jinjunzhu程序员jinjunzhu资深后端开发,善于java/golang,关注后端开发、分布式、云原生畛域 对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/ 本文转自公众号:程序员 jinjunzhu,作者:jinjunzhu本期排版:StreamNative@TangoApache BookKeeper 是一款企业级存储系统,最后由雅虎研究院研发,在 2011 年作为 Apache ZooKeeper 的子项目进行孵化,在 2015 年 1 月成为 Apache 顶级我的项目。 起初,BookKeeper 是一个预写日志(WAL)零碎,通过几年的倒退,BookKeeper 的性能更加欠缺,比方为 Hadoop 分布式文件系统(HDFS)的 NameNode 提供高可用和多正本,为音讯零碎比 Pulsar 提供存储服务,为多个数据中心提供跨机器复制。https://github.com/apache/pul... 应用场景BookKeeper 最后的一个应用场景是为 HDFS 的 NameNode 保留 edit log,如下图: ZKFC 是一个 ZooKeeper 的客户端,次要用来监测和治理 NameNode 状态,每个 NameNode 机器上都会运行一个 ZKFC,它的职责次要有三个:•健康检查•ZooKeeper 会话治理•选举,当集群中一个 Active NameNode 宕机,ZooKeeper 会主动抉择一个节点作为新的 Active NameNode。BookKeeper 记录 NameNode 的 edit log(edit log 寄存文件系统的操作日志),NameNode 的所有批改都会记录到 BookKeeper。这样 active NameNode 宕机后,BookKeeper 用保留的 edit log 去 standby NameNode 做回放,之后切换成 active NameNode。 ...

August 16, 2021 · 2 min · jiezi

关于pulsar:Apache-Pulsar-生态项目-KoP-新增-Maintainer吴展鹏

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐以及低延时的高可扩大流数据存储个性。继腾讯 Maintainer 加盟后,Apache 软件基金会顶级我的项目、分布式音讯流平台 Apache Pulsar 生态我的项目 KoP (Kafka-on-Pulsar) 新增一位社区 Maintainer,他是来自 BIGO 的高级工程师吴展鹏(Github ID:wuzhanpeng)。BIGO 在 2020 年将音讯零碎从 Kafka 迁徙到 Pulsar,在 KoP 的利用上有丰盛的教训,并在 Pulsar-Flink 方向对社区做出了诸多奉献,来自 BIGO 的 Maintainer 退出 KoP 我的项目代表 BIGO 对 Pulsar 我的项目的认可与进一步投入。 什么是 KoP“KoP“(Kafka on Pulsar)由 StreamNative 和 OVHcloud 独特开源,次要满足想要从 Kafka 应用程序切换到 Pulsar 的用户的强烈需要。 KoP 将 Kafka 协定解决插件引入 Pulsar broker,从而实现 Apache Pulsar 对原生 Apache Kafka 协定的反对。将 KoP 协定解决插件增加到现有 Pulsar 集群后,用户不必批改代码就能够将现有的 Kafka 应用程序和服务迁徙到 Pulsar,从而应用 Pulsar 的弱小性能,例如: ...

August 13, 2021 · 2 min · jiezi

关于pulsar:助力社区|StreamNative-Hub-升级助你快速高效开发-Pulsar-Connector

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐以及低延时的高可扩大流数据存储个性。为什么抉择 Pulsar Connector?Pulsar 通过 connector[1] 可与内部零碎轻松、疾速集成。依据 2021 Pulsar 用户调查报告(将于本月内公布),30% 的 Pulsar 用户应用 connector,connector 是 Pulsar 最罕用的性能之一。为了促成 connector 的开发并进步其易用性,咱们于 2020 年推出了 StreamNative Hub[2],反对查找、下载、应用、存储和共享 Pulsar 相干插件等多项操作,并提供宽泛的 Pulsar 集成。Hub 自上线以来,新增了大量的 connector,广受欢迎的 Pulsar Connector 插件包含 AWS SQS connector[3]、AWS Lambda connector[4]、AMQP1_0 connector[5]、IoTDB connector[6] 等。相比于 Hub 推出初期,Pulsar connector 的开发和应用更易上手,本文次要介绍 StreamNative Hub 近期的更新,让你能够更容易地开发和应用 connector! 对于 StreamNative HubStreamNative Hub[7] 是一个应用程序商店,提供大量 Pulsar 插件和集成,用于开发事件流应用程序。 其要害组件包含: Connector:容许用户将流数据迁入和迁出 Pulsar,助力企业更轻松地将 Pulsar 引入其现有基础架构,简化系统集成。StreamNative Hub 反对用户应用 Pulsar 的全副内置 connector。Offloader:容许用户将历史数据从 BookKeeper 卸载到内部近程存储,节约数据存储老本,且能够随数据量轻松扩大。协定处理程序:容许用户在运行 Pulsar 时原生并动静反对其余音讯协定(例如,Kafka、AMQP 和 MQTT)。在无需批改代码即可应用 Pulsar 的企业级性能,极大地简化了操作。。 ...

August 5, 2021 · 2 min · jiezi

关于pulsar:Apache-Pulsar-社区志愿者招募文档翻译社区管理员

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/ 目前 Pulsar 社区心愿更多有志于扭转技术将来的小伙伴退出咱们,一起致力,一起成长!施展你的才华,反对社区基础设施,让更多人看到 Pulsar 的魅力。 在这里,你能够有机会: 结识一群乐观踊跃的小伙伴;支付不定期小福利(Pulsar 周边T恤、水杯、定制小礼品等等...)翻译实现后:文章公布时会署名译者及其简介获取 Pulsar 社区颁发的特地证书Pulsar 社区的倒退离不开各位小伙伴们的长时间辛苦付出和贡献,在此向所有反对 Pulsar 的小伙伴示意由衷的感激! 目前咱们正在招募以下志愿者: 一、翻译贡献者翻译内容次要把国外 Pulsar 相干的新闻资讯、技术动静、技术论文、利用技巧、机制原理等文章翻译成中文。(本次次要为 Pulsar 技术文章的翻译 ) 根本要求具备良好的英语浏览能力,领有肯定的翻译技巧和素质,逻辑思维能力强。翻译要保证质量,力求精确残缺,语法通顺,要达到在 Pulsar 社区发表的程度。二、流动相干贡献者除此之外咱们也正在招募一些志愿者小伙伴负责保护社区的日常治理。 具体分类如果你有以下技能或教训: 经营:负责 Pulsar 社区社区活动计划的策动及顺利开展、微信群的治理,有丰盛公众号经营、流动举办教训善于写文案的优先;视频:负责 Pulsar 社区活动的视频制作编辑;如果您没有上述相干教训,但酷爱 Pulsar,想要为 Pulsar 社区奉献本人的一份力量,能够参考下方内容: 非专业技能要求区域辅助咱们落地各类型流动(比方:Pulsar Tea Party、Contributor Club、Meetup 等...)Pulsar 技术交换群的日常治理保护所在当地的 Pulsar 区域交换群及策动组织一些日常流动(区域&流动管理员)福利与社区中的技术大咖间接交换沟通;与社区中其余优良的小伙伴一起学习成长;其余不定期的社区福利; 不论如何,欢送酷爱 Pulsar 的你,退出咱们! 分割咱们有意向者请扫描下方二维码退出咱们(也可增加微信:StreamNative_BJ 回复「志愿者」退出微信群),连忙口头起来吧!也欢送大家帮忙转发和举荐! 扫/码/报/名

July 21, 2021 · 1 min · jiezi

关于pulsar:Pulsar-社区周报|20210614~20210620

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/ 导语各位小伙伴们,Pulsar 社区周报更新来啦! 本次 Pulsar 社区周报,为大家出现 Pulsar client、broker、transactions 等内容,帮忙社区小伙伴们把握 Pulsar 我的项目及社区每周停顿,也不便大家更好地参加到 Pulsar 社区中来! 感激本周以下小伙伴为 Apache Pulsar 添砖加瓦(排名不分先后,看看你有没有上榜): mattisonchao、newur、rdhabalia、lhotari、merlimat、eolivelli、aloyszhang、congbobo184、315157973、codelipenghui、lbenc135、BewareMyPower、wuzhanpeng、vmalloc、Yiyiyimu、murong00、massakam、mostafij-rahman、Anonymitaet、ericsyh、michaeljmarshall、xuesongxs、yangl接下来,一起看看 06 月 14 日 ~ 06 月 20 日有哪些值得你关注的停顿吧! 本周亮点Broker:失败和超时的 topic 会进行 replicator 并且清理失败的 topic。https://github.com/apache/pul... 贡献者:@rdhabalia Broker:启用 Replicator 后,更新分区数量时不会去创立 managedLedger。https://github.com/apache/pul... 贡献者:@315157973 重要个性因为 PR 较多,仅列举较大 PR 停顿,不包含当周全副动静上面 PR 均已合入 Pulsar 主分支Security:排除并删除 FreeBuilder 依赖。https://github.com/apache/pul... 贡献者:@lhotari Security:将 BouncyCastle 降级到 1.69 版本。https://github.com/apache/pul... 贡献者:@lhotari Security:将 Kubernetes Java 客户端降级到 12.0.1 版本。https://github.com/apache/pul... 贡献者:@lhotari ...

June 25, 2021 · 2 min · jiezi

关于pulsar:ApacheCon-Asia-2021-Apache-Pulsar-技术议题一览

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/ 对于 ApacheCon AsiaApacheCon Asia 是 ApacheCon 组委会首次针对亚太地区举办的 ApacheCon 在线会议,次要指标在于更好地服务亚太地区快速增长的 Apache 用户和贡献者。ApacheCon Asia 2021 将于 2021 年 8 月 6-8 日在线举办。 近期 ApacheCon Asia 2021 团队正式颁布了大会日程,Apache Pulsar 社区积极参与本次年度开源盛会,你在音讯零碎、大数据、流解决等专场都能看到 Apache Pulsar 社区成员的议题,内容丰盛,欢送关注。上面将相干技术议题列出,不便参考。 大数据2021-08-08 13:30应用 Hashicorp Vault 建设一个认证和受权零碎议题简介:学习如何应用 Hashicorp Vault 为 Apache Pulsar 建设一个认证和受权零碎。Vault 提供了一种平安的形式来生成令牌和存储敏感数据,而 Pulsar 有一个可插拔的架构用于认证、受权和密钥治理。本讲座将介绍如何基于 Vault 为 Pulsar 建设一个认证和验证零碎,次要包含以下几点: 基于 Vault 构建灵便的认证,确保 Pulsar 集群能够轻松拜访各种零碎,如 LDAP如何实现基于 Vault 的利用角色的服务账户分享嘉宾:俄广宁,Apache Pulsar Committer,Apache Pulsar IO 和 Apache Pulsar Manager 次要贡献者和维护者,目前在 StreamNative 公司负责高级软件工程师,专门从事云平台、云计算和大数据相干畛域的工作。 ...

June 24, 2021 · 3 min · jiezi

关于pulsar:Pulsar-社区周报|20210607~20210613

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/ 导语各位小伙伴们,Pulsar 社区周报更新来啦! 本次 Pulsar 社区周报,为大家出现 Pulsar client、broker、transactions 等内容,帮忙社区小伙伴们把握 Pulsar 我的项目及社区每周停顿,也不便大家更好地参加到 Pulsar 社区中来! 感激本周以下小伙伴为 Apache Pulsar 添砖加瓦(排名不分先后,看看你有没有上榜): eolivelli、ru1996、ciaocloud、dlg99、fantapsody、hangc0276、merlimat、wolfstudy、315157973、lhotari、codelipenghui、mattisonchao、sursingh、michaeljmarshall、jerrypeng、freeznet、sijie、BewareMyPower、aahmed-se接下来,一起看看 06 月 07 日 ~ 06 月 13 日有哪些值得你关注的停顿吧! 重要停顿[Client] 将 KeyValueSchema 作为公开 Schema API 接口。https://github.com/apache/pul...贡献者:@eolivelli [Metadata] 确保跨 broker 的元数据缓存统一。https://github.com/apache/pul...贡献者:@sursingh [Broker] 优化 topic 不存在时的提示信息。https://github.com/apache/pul...贡献者:@315157973 重要个性因为 PR 较多,仅列举较大 PR 停顿,不包含当周全副动静上面 PR 均已合入 Pulsar 主分支Broker:引入 metricsServletTimeoutMs 配置。https://github.com/apache/pul...贡献者:@sijie 重要 Bug 修复因修复内容较多,仅列举较重要修复内容,不包含本周全副动静上面修复均已合入 Pulsar 主分支C++:修复未初始化变量导致的未知行为。https://github.com/apache/pul...贡献者:@BewareMyPower Broker:修复不当的 class/method/field 修饰符。https://github.com/apache/pul...贡献者:@hangc0276 Broker:反对主动创立零碎主题 TRANSACTION_BUFFER_SNAPSHOT 。https://github.com/apache/pul...贡献者:@michaeljmarshall ...

June 23, 2021 · 1 min · jiezi

关于pulsar:直播回顾|TGIPCN-032Apache-Pulsar-快速上手实战

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/ 导语:本文是 StreamNative 解决方案工程师魏彬在 TGIP-CN 032 直播流动的文字整顿版本。在流动中,率领大家意识了 Pulsar 测试环境搭建、周边工具到组件等方面,帮忙大家疾速动手 Apache Pulsar。明天为大家带来 Apache Pulsar 疾速上手的内容,本次次要是面对刚刚接触 Pulsar 的同学,介绍如何疾速的搭建 Pulsar 测试环境,相熟 Pulsar 周边工具、相干组件。心愿通过这次分享,大家后续能本人依照这次分享的演练,疾速地把 Pulsar 相干集群、周边工具跑起来,为下一步进阶做好筹备。 本文内容次要分为以下三局部: Apache Pulsar 简介如何疾速上手 Apache PulsarPulsar 周边监控运维工具的应用Apache Pulsar 简介 简略介绍一下 Apache Pulsar,它是新一代的云原生分布式音讯流平台,这外面有几个关键词。云原生的话,置信大家应该都听得十分多了,简略能够了解成是面向 K8S,非常适合在 K8S 这种容器编排的零碎外面运作。音讯流平台是指 Apache Pulsar 是交融了音讯队列以及流解决两种个性的数据平台。 Pulsar 的呈现工夫是最晚的,大家能够从上图看到,Pulsar 是在 2012 年设计的,诞生起因是在它之前的我的项目没有满足过后创造者的需要。 Apache Pulsar 的定位 次要分为 Streaming(流解决生产模式) 和 Queuing(队列生产模式),具体如上图。 对音讯队列来讲,它们的差别是什么?讲到音讯队列,拿 RabbitMQ 举例,一条音讯进来之后,只会给一个消费者去生产,也就是说它只 deliver 一次,生产完就完结了,不会去存它。 绝对应的,如 Kafka 代表的 Streaming 零碎,它的音讯容许有多个消费者,也就是说音讯进来一次,但能够被生产屡次。另外它的音讯是能够长久化到 Streaming 的平台,也意味着后续是能够做历史性数据的反复生产。 ...

June 4, 2021 · 3 min · jiezi

关于pulsar:博文推荐|如何使用Apache-Pulsar-Hudi-构建-Lakehouse

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。 GitHub 地址:http://github.com/apache/pulsar/ 文章转自:ApacheHudi,作者:郭斯杰 StreamNative CEO,Apache Pulsar PMC 成员。本期文章排版:StreamNative@Tango 动机Lakehouse 最早由 Databricks 公司提出,其可作为低成本、间接拜访云存储并提供传统 DBMS 管零碎性能和 ACID 事务、版本、审计、索引、缓存、查问优化的数据管理系统,Lakehouse 联合数据湖和数据仓库的长处:包含数据湖的低成本存储和凋谢数据格式拜访,数据仓库弱小的治理和优化能力。Delta Lake,Apache Hudi 和 Apache Iceberg 是三种构建 Lakehouse 的技术。 与此同时,Pulsar 提供了一系列个性:包含分层存储、流式卸载、列式卸载等,让其成为一个能够对立批和事件流的存储层。特地是分层存储的个性,让 Pulsar 成为一个轻量级数据湖,然而 Pulsar 还是不足一些性能优化,比方索引,数据版本(在传统 DBMS 管理系统中十分常见),引入列式卸载程序的目标是为了放大性能差距,然而还不够。 本提议尝试将 Apache Pulsar 作为 Lakehouse,该提案仅提供顶层设计,具体设计和实现在前面的子提议中解决(有趣味的小伙伴能够继续关注)。 剖析本局部将剖析构建 Lakehouse 须要的要害个性,而后剖析 Pulsar 是否满足要求以及辨认还有哪些差距。 Lakehouse 有如下要害个性: 事务反对:企业级 Lakehouse 中很多数据 pipeliine 会并发读写数据,反对 ACID 事务能够保障并发读写的一致性,特地是应用 SQL;Delta Lake、Iceberg、Hudi 三个数据湖框架都基于低成本的对象存储实现了事务层,都反对事务。Pulsar 在 2.7.0 版本后引入了事务反对,并且反对跨 topic 的事务;Schema 束缚和治理:Lakehouse 须要反对 Schema 的束缚和演进,反对数仓型 Schema 范式,如星型/雪花型 Schema,另外零碎应该可能推理数据完整性,并且应该具备强壮的治理和审核机制,上述三个零碎都有该能力。Pulsar 有内置的 Schema 注册服务,它满足 Schema 束缚和治理的根本要求,然而可能仍有一些中央须要改良。BI 反对:Lakehouses 能够间接在源数据上应用 BI 工具,这样能够缩小陈旧性,进步新鲜度,缩小等待时间,并升高必须同时在数据湖和仓库中操作两个数据正本的老本。三个数据湖框架与 Apache Spark 的集成十分好,同时能够容许 Redshift,Presto/Athena 查问源数据,Hudi 社区也曾经实现了对多引擎如 Flink 的反对。Pulsar 裸露了分层存储中的段以供间接拜访,这样能够与风行的数据处理引擎严密集成。然而 Pulsar 中的分层存储自身在服务 BI 工作负载方面依然存在性能差距,咱们将在该提案中解决这些差距。存储与计算拆散:这意味着存储和计算应用独自的集群,因而这些零碎能够独自程度有限扩容。三个框均反对存储与计算拆散。Pulsar 应用了存储与计算拆散的多层体系结构部署。开放性:应用凋谢和标准化的数据格式,如 Parquet,并且它们提供了 API,因而各种工具和引擎(包含机器学习和 Python / R 库)能够"间接"无效地拜访数据,三个框架反对 Parquet 格局,Iceberg 还反对 ORC 格局,对于 ORC 格局 Hudi 社区正在反对中。Pulsar 还不反对任何凋谢格局,列存卸载反对 Parquet 格局。反对从非结构化数据到结构化数据的多种数据类型:Lakehouse 可用于存储、优化,剖析和拜访许多新数据应用程序所需的数据类型,包含图像、视频、音频、半结构化数据和文本。尚不分明 Delta、Iceberg、Hudi 如何反对这一点。Pulsar 反对各种类型数据。反对各种工作负载:包含数据迷信,机器学习以及 SQL 和剖析。可能须要多种工具来反对所有这些工作负载,但它们都依赖于同一数据存储库。三个框架与 Spark 紧密结合,Spark 提供了宽泛的工具抉择。Pulsar 也与 Spark 有着紧密结合。端到端流:实时报告是许多企业的常态,对流的反对打消了对专门用于服务实时数据应用程序的独自零碎的需要,Delta Lake 和 Hudi 通过变更日志提供了流性能。但这不是真正的“流”。Pulsar 是一个真正的流零碎。能够看到 Pulsar 满足构建 Lakehouse 的所有条件。然而当初的分层存储有很大的性能差距,例如: ...

May 12, 2021 · 2 min · jiezi

关于pulsar:译文|基于-Pulsar-的事件驱动铁路网

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。 GitHub 地址:http://github.com/apache/pulsar/ 本文译者:teng-da,作者:PAVELS SISOJEVS,文章首发于 InfoQ,原文地址:https://scala.monster/train-s... 浏览本文须要大概 10 分钟。 这张照片拍摄于瑞士的 Landwasser 高架桥。瑞士以其铁路网络闻名于世,依据维基百科,瑞士领有世界上最密集的铁路网。本文带你一起模仿瑞士的铁路网络。 咱们会用到 Apache Pulsar 和 Neutron。Apache Pulsar 是开源分布式 pub-sub 音讯零碎,最后由 Yahoo! 开发,目前属于 Apache 软件基金会。数据架构师、数据分析师、程序员等常常比照 Apache Pulsar 和 Apache Kafka,目前已有许多比照二者优劣势的文章。 Neutron 是基于 FS2 并发流解决库文件的 Pulsar 客户端。作为一款成熟的产品, Neutron 曾经用于 Chatroulette 的生产,但 Neutron 的开发并未进行。 领有一套玩具铁路网始终是我童年时的幻想。当初,我能够本人入手搭建一套虚构铁路网了。 接下来,咱们将一起开发一个事件驱动的铁路网络模拟器。 思路咱们要搭建一套蕴含三个车站的铁路网:日内瓦、伯尔尼和苏黎世。其中日内瓦和苏黎世均与伯尔尼相连,但日内瓦与苏黎世不相连。 每个站点为一个节点,相连节点通过音讯 broker——Apache Pulsar 通信。节点生产其相连节点公布的事件。consumer过滤传入事件后生产与特定城市相干的事件。 有两种形式能够管制模拟器的行为,一是增加可用于人工干预的 HTTP 端点。用户通过发送 HTTP 申请向零碎中增加新列车。 咱们不长久保留任何数据,无需应用数据库或缓存零碎,将所有数据保留在内存中。因而咱们能够应用相似于 Ref 的高级并发机制。 Apache Pulsar 是零碎的外围,负责节点间通信。一旦状态产生扭转,零碎应该公布形容这一动作的新事件。也就是说,每个事件都应该有一个工夫戳。此外,每个事件应有一个列车 ID,代表特定列车的标识号码。初始时,有两个事件: ...

May 11, 2021 · 5 min · jiezi

关于pulsar:Apache-Pulsar-12-月月报Pulsar-270-发布

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/本月报由 StreamNative 团队整顿。 导语各位小伙伴们,2020 年 12 月 Pulsar 社区月报来啦!首先给大家一个早退的 2021 新年祝愿! 本月 Pulsar 社区欠缺和更新很多产品细节,遍布方方面面。感激以下各位社区成员本月对 Pulsar 我的项目的反对,让 Apache Pulsar 持续发光发热!(排名不分先后,看看你有没有上榜 ????????): @jeames00、@congbobo184、@Renkai、@reswqa 、@lhotari、@codelipenghui、@jerrypeng、@eolivelli、@wolfstudy、@nodece、@erobot、@315157973、@gaoran10、@zymap、@eolivelli、@reswqa、@RobertIndie、@Gjiangtao、@erobot、 @mkozioro、@massakam、@k2la、@Renkai、 @Jennifer88huang、@tuteng、@zsh0139、@Huanli-Meng、@aahmed-se、@sijie、@sijia-w、@rathipry、@hangc0276、@BewareMyPower、@jianyun8023、@merlimat、@aloyszhang、@MarvinCai、@dockerzhang、@rdhabalia、@flowchartsman、@aloyszhang、@jerrypeng、@massakam、@sijie、@jiazhai、@cimura、@zzzming、@codelipenghui、@rdhabalia、@zymap、@saosir、@massakam、@dockerzhang、@Shoothzj、@eolivelli、@gaoran10、@milos-matijasevic、@k2la、@deonvdv、@wangjialing218、@astifter、@yufan022产品动静FunctionFunction: 在 Go Function builder 中反对 key-based 批处理 。https://github.com/apache/pul... Function:为示意 function 状态的 openTable() 调用增加超时。https://github.com/apache/pul... Function: 提供 Function worker 服务的接口。https://github.com/apache/pul... Function:在Function中容许批改状态不阻塞function运行。https://github.com/apache/pul... Function: 使源 topic 的 schema 信息可用于上游 sinks。https://github.com/apache/pul... Function: 在Pulsar Functions 中增加 --retain-key-ordering 标识。https://github.com/apache/pul... Function: 反对通过配置 URL 获取 Go 和 Python function。https://github.com/apache/pul... ...

January 5, 2021 · 3 min · jiezi

关于pulsar:Pulsar-270-新增特性概览事务支持Topic-级别策略配置等

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。GitHub 地址:http://github.com/apache/pulsar/ 本文转载自 StreamNative,作者李鹏辉,他是 Apache Pulsar PMC 成员,目前任职 StreamNative 软件工程师。他负责此次 Pulsar 2.7.0 Release Manager。Apache Pulsar 2.7.0 反对事务、Topic 级别策略配置、Azure Blob 二级存储、反对原生 protobuf schema、反对 Pulsar Functions 端到端加密等,修复了 2.6.2 版本中的诸多问题,改良了一些性能,进一步丰盛了 Pulsar 作为云原生流数据平台的性能。 Pulsar 2.7.0 版本中合并了来自社区的 450+ commit,上面一起来看看 2.7.0 版本有哪些更新吧! 反对事务Pulsar 事务反对事件流应用程序实现原子操作,同时实现生产、解决、生产音讯。采纳事务语义,Pulsar 的单分区和多分区都能够实现 exactly-once 语义。因而 Pulsar 能够利用于新的应用场景,即客户端(作为 producer 或 consumer)解决多个 Topic 和分区中的音讯,并保障将这些音讯作为一个音讯单元来解决。事务的引入不仅加强了 Pulsar 的音讯语义,也会进一步加强 Pulsar Functions 的解决保障。 目前,Pulsar 事务还在开发阶段。Pulsar 社区将会持续开发并欠缺事务的个性,推动事务在生产环境中的应用。 在 Pulsar 中启用事务,须要在 broker.conf 文件中配置以下参数。 ...

January 4, 2021 · 2 min · jiezi

关于pulsar:涂鸦物联网足迹涂鸦云平台消息服务顺带Pulsar简单介绍

前序系列文章>>>【涂鸦物联网脚印】涂鸦云平台规范指令集凋谢音讯平台次要通过 Pulsar 被动推送各种事件数据给内部合作伙伴,以满足合作伙伴对音讯实时性和音讯长久化的要求。一、Pulsar 对于Pulsar的介绍,大家能够看一下这位大佬的简略介绍>>>pulsar-介绍。简略来说,Pulsar最后由雅虎开发,当初由 Apache 软件基金会治理,是一个反对多租户、高性能的服务器到服务器之间音讯通信的解决方案。 涂鸦智能基于开源的 Pulsar 零碎进行了定制改良,依照涂鸦智能提供的 Pulsar SDK 可实现音讯接入。 Pulsar 作为音讯代理采纳了Pub/Sub(公布订阅)的设计模式。该设计模式中,生产者将音讯公布到主题,而后消费者能够订阅这些主题,解决传入音讯,并在解决实现时发送确认。当订阅被创立时(即便音讯解决设施已断开连接)所有的音讯都将被 Pulsar 保留。只有在音讯解决设施确认音讯被胜利解决后,保留下来的音讯才会被抛弃。 此外,一个主题能够由多个消费者订阅,并且当消费者胜利解决音讯时,它须要向代理发送确认,以便代理能够抛弃该音讯。涂鸦智能的 Pulsar 音讯散发器(Broker)为每个主题调配了多个分区,Pulsar 音讯散发器将依据分区和消费者散发音讯。 二、相干阐明 平安: 认证平安:涂鸦智能 Pulsar 音讯零碎针对身份认证进行了深度定制以满足高安全性要求,涂鸦智能采纳动静令牌机制加强平安,开发者可疏忽实现细节,基于涂鸦智能提供的 SDK 实现认证。数据安全: 传输平安:涂鸦智能 Pulsar 音讯推送零碎基于 SSL 传输数据。业务平安:业务数据均采纳 AES-128 加密,申请均附上签名。申请形式: 具体参考 ConsumerExample 代码。接入时须要提供以下三局部数据: username:填写云开发平台中 API 受权密钥的 Access ID。password:填写云开发平台中 API 受权密钥的 Access Secret。url:依据调用的区域进行抉择。 中国区:pulsar+ssl://mqe.tuyacn.com:7285/美国区:pulsar+ssl://mqe.tuyaus.com:7285/欧洲区:pulsar+ssl://mqe.tuyaeu.com:7285/印度区:pulsar+ssl://mqe.tuyain.com:7285/开明形式: 登录 IoT 工作台 > 云开发。2. 创立我的项目。 3. 在我的项目中的音讯订阅模块,开明音讯订阅性能。 代码示例: String url = "";String accessId = "";String accessKey = "";MqConsumer mqConsumer = MqConsumer.build() .serviceUrl(url) .accessId(accessId) .accessKey(accessKey) .maxRedeliverCount(3) .messageListener(new MqConsumer.IMessageListener() { @Override public void onMessageArrived(Message message) throws Exception { //write your own message processing logic } });mqConsumer.start();数据格式: ...

November 19, 2020 · 2 min · jiezi

关于pulsar:Pulsar-Summit-Asia-2020-场景案例论坛下多行业多场景

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。 以后已有泛滥国内外大型互联网和传统行业公司采纳 Apache Pulsar,案例散布在人工智能、金融、电信运营商、直播与短视频、物联网、批发与电子商务、在线教育等多个行业,如美国有线电视网络巨头 Comcast、Yahoo!、腾讯、中国电信、中国移动、BIGO、VIPKID 等。 对于 Pulsar SummitPulsar Summit 是由 StreamNative 组织的 Apache Pulsar 社区年度盛会,它将散布在世界各地的 Apache Pulsar 我的项目 Contributor、Commiter 和各企业 CTO/CIO、开发者、架构师、数据科学家,以及音讯和流计算社区的精英招集在一起。于此盛会,大家分享实践经验、交换想法、探讨对于 Pulsar 我的项目和社区的常识,切磋互动。 Pulsar Summit Asia 旨在汇集亚洲地区 Pulsar 开发者和贡献者,促成 Apache Pulsar 在亚洲地区的倒退。Pulsar Summit Asia 2020 将于 11 月 28-29 日以线上直播模式发展。 近期咱们将陆续对 Pulsar Summit Asia 2020 中英文专场及分论坛议题予以具体介绍,帮忙大家更好地理解行将到来的 Pulsar 社区盛会分享什么、有哪些亮点。明天为大家介绍场景论坛演讲下篇。 备注:上面演讲工夫及内容不能保障为最终版本,请关注 Pulsar Summit Asia 2020 官网获取最新动静 https://pulsar-summit.org/en/... 。 Apache Pulsar 在智联招聘搜寻举荐中的利用:数亿数据全量更新与实时同步 李世明 ...

November 12, 2020 · 2 min · jiezi

关于pulsar:Pulsar-社区周报-20201031-20201106

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。 GitHub 地址:http://github.com/apache/pulsar/ 导语各位小伙伴们,Pulsar 社区周报更新来啦! 本次 Pulsar 社区周报,为大家出现 Pulsar client、broker、transaction、分层存储等内容,帮忙社区小伙伴们把握 Pulsar 我的项目及社区每周停顿,也不便大家更好地参加到 Pulsar 社区中来! 感激本周以下小伙伴为 Apache Pulsar 添砖加瓦(排名不分先后,看看你有没有上榜): @Jennifer88huang、@rdhabalia、@gaoran10、@ltamber、@Renkai、@IvanStoilov、@hrsakai、@magrain、@RobertIndie、@jerrypeng、@merlimat、@vmalloc、@codelipenghui、@wolfstudy、@massakam、@cckellogg、@eolivelli、@sijia-w 接下来,一起看看 10-31 ~ 11-06 有哪些值得你关注的停顿吧! 本周亮点Pulsar 反对应用 Azure 卸载数据。 PR 地址: https://github.com/apache/pul... 贡献者:@gaoran10 重要个性因为 PR 较多,仅列举较大 PR 停顿,不包含当周全副动静上面 PR 均已合入 Pulsar 主分支[Broker] 获取 namespace 下的 bundle 列表。 PR 地址:https://github.com/apache/pul...贡献者:@rdhabalia [Broker] 勾销 namespace 的卸载策略。 PR 地址:https://github.com/apache/pul...贡献者:@Renkai [WebSocket] 减少通过 WebSocket 从新散发音讯的数量统计。 PR 地址:https://github.com/apache/pul...贡献者:@IvanStoilov ...

November 12, 2020 · 1 min · jiezi

关于pulsar:祝贺-StreamNative-团队成员-Jennifer-当选-Apache-Pulsar-PMC-成员

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。 以后已有泛滥国内外大型互联网和传统行业公司采纳 Apache Pulsar,案例散布在人工智能、金融、电信运营商、直播与短视频、物联网、批发与电子商务、在线教育等多个行业,如美国有线电视网络巨头 Comcast、Yahoo!、腾讯、中国电信、中国移动、BIGO、VIPKID 等。 Apache Pulsar 社区喜迎首位女性 PMC继十月份 Apache Pulsar 社区迎来两位新 Committer 后,在十一月初,社区又迎来首位女性 PMC 成员。在经验了 PMC 们的举荐与投票后,来自 StreamNative 团队的 Jennifer (GitHub 地址:@Jennifer88huang)退出了 PMC 的团队。Jennifer 撰写了大量 Pulsar 技术文档,并踊跃推动 Pulsar 的社区建设。 Apache Puslar 首位女性 PMC 成员的诞生,减速了 Puslar 社区多样性的过程,置信有越来越多的女性退出到 Pulsar 奉献中来,一起为 Apache Pulsar 增彩! PMC 寄语 Jennifer 寄语: “很荣幸可能退出 Pulsar 社区,并为社区的发展壮大添砖加瓦。从初识 Pulsar 到当初,快 2 年了。这 2 年里,咱们一起见证了 Pulsar 在各个方面的成长:Pulsar 产品性能稳固健全,生态集成丰盛多元,国内外用户和贡献者快速增长,社区培训、资源和各种流动百花齐放... 在为社区奉献的同时,我从社区学到了很多,特别感谢社区郭斯杰、翟佳、鹏辉等大佬们的领导和帮忙,感激社区诸多小伙伴们的反对:看到大家应用产品、发现问题、踊跃反馈并被动修复时,咱们心田充斥打动。看到有小伙伴被动分割,反对 Pulsar 我的项目本地化并踊跃奉献其中,常常凌晨 12 点后和休息日还在提交 PR 时,咱们疼爱大家的同时也倍感快慰。看到寰球各地的小伙伴们纷纷来信要求发展 Pulsar 培训、加入 Pulsar 社区活动,咱们备受鼓励......是社区小伙伴们的激情和反对激励着咱们奋勇前行! ...

November 11, 2020 · 1 min · jiezi

关于pulsar:Apache-Pulsar-社区周报0926-1009

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。 GitHub 地址:http://github.com/apache/pulsar/ 导语各位小伙伴们,Pulsar 社区周报带着假期期间的更新来啦! 在浏览周报之前,大家记得把流动退出日程哦:10 月 15 日,即周四早晨 8-9 点,Apache Pulsar PMC 翟佳将在云原生学院分享 Apache Pulsar 架构与最新技术停顿,以及云原生时代下音讯流零碎的技术倒退。观看直播参加流动还能够取得 Pulsar t 恤和周边哦。 本次 Pulsar 社区周报,为大家出现 Pulsar client、broker、Pulsar Admin、Pulsar Functions、Pulsar schema 等内容,帮忙社区小伙伴们把握 Pulsar 我的项目及社区每周停顿,也不便大家更好地参加到 Pulsar 社区中来! 感激本周以下小伙伴为 Apache Pulsar 添砖加瓦(排名不分先后,看看你有没有上榜): @zymap、@[315157973、@[hangc0276、@[racorn、@[lhotari、@[BewareMyPower、@[wangjialing218、@[rdhabalia、@[srkukarni、@[k2la、@[massakam、@[yuanboliu、@[david-streamlio、@[sbourkeostk、@[vaihtovirta、@tuteng接下来,一起看看 09-26 ~ 10-09 有哪些值得你关注的停顿吧! 重要停顿因为 PR 较多,仅列举较大 PR 停顿,不包含当周全副动静上面 PR 均已合入 Pulsar 主分支[Client] 改良 ClientCnx 的超时解决,对目前所有不解决超时的申请进行超时解决。 PR 地址:https://github.com/apache/pulsar/pull/8149 贡献者:@lhotari [Broker] 拦挡发送给消费者的音讯,并反对抛出相干异样。PR 地址:https://github.com/apache/pulsar/pull/8129 贡献者:@zymap ...

October 15, 2020 · 2 min · jiezi

关于pulsar:Apache-Pulsar-9月月报Pulsar-Summit-亚洲站正式启动

本月看点速览产品动静 新增性能Bug 修复社区动静 海内外社区动静技术干货对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等。 导语各位小伙伴们,Pulsar 社区月报如约而至! 本月 Pulsar 社区内也进行了很多产品细节欠缺和更新。本月咱们合并了来自社区的 126 个 commit,同时 transaction 和 topic policy 方面也在逐步欠缺,置信不久就会和大家见面。感激以下各位大佬本月对 Pulsar 我的项目的反对,让 Apache Pulsar 持续发光发热!(排名不分先后,看看你有没有上榜 ????????): @congbobo184 @merlimat @hrsakai @srkukarni @zymap @gaoran10 @aahmed-se @315157973 @mkozioro @zhanghaou @BewareMyPower @wolfstudy @hangc0276 @jerrypeng @aloyszhang @codelipenghui @Technoboy- @equanz、@kellyfj、@jianyun8023、@MarvinCai、@cimura、@tuteng、@Jennifer88huang、@RobertIndie、@massakam、 @Bklyn、@jiazhai、@lukestephenson-zendesk、@sijia-w、@yuku、2aloyszhang、@Huanli-Meng、@david-streamlio产品动静通过一直地致力,社区在本月胜利公布 Pulsar Flink Connector 2.5.0 版本。Pulsar Flink Connector 集成了 Apache Pulsar 和 Apache Flink(数据处理引擎),容许 Apache Flink 向 Apache Pulsar 读写数据。 ...

October 4, 2020 · 3 min · jiezi

关于pulsar:StreamNative-宣布开源-MoPApache-Pulsar-支持原生-MQTT-协议

咱们很快乐地发表 StreamNative 开源了 “MoP”(MQTT on Pulsar)。MoP 将 MQTT 协定解决插件引入 Pulsar broker。这样一来,Apache Pulsar 就能够反对原生 MQTT 协定。 与 KoP 类似,MoP 是一种可插拔的协定解决插件。将 MoP 协定解决插件增加到现有 Pulsar 集群后,用户不必批改代码就能够将现有的 MQTT 应用程序和服务迁徙到 Pulsar。 这样 MQTT 应用程序就能够利用 Pulsar 的个性,例如 Apache Pulsar 计算和存储拆散的架构以及 Apache BookKeeper 保留事件流和 Pulsar 分层存储等个性。 什么是 Apache PulsarApache Pulsar 是一个云原生的分布式消息传递和流数据平台,每天治理数千亿个事件。Pulsar 最后由 Yahoo 开发,于 2016 年底开源,并于 2018 年成为 Apache 软件基金会的顶级我的项目。Pulsar 将重要的 Yahoo 应用程序(例如 Yahoo Finance、Yahoo Mail 和 Flickr)连贯到数据的整合消息传递平台。 GitHub:https://github.com/apache/pulsar。 Pulsar 是一种多租户、高性能解决方案,用于在服务器之间传递音讯。Pulsar 反对以下要害个性: Pulsar 的单个实例原生反对多个集群,反对跨地区在集群间无缝复制音讯极低的公布提早和端到端提早反对扩大到数百万个 Topic通过 Apache BookKeeper 提供的长久化音讯存储机制保障消息传递目前,Apache Pulsar 曾经广泛应用于多个畛域。腾讯、Verizon Media、Splunk、中国移动、BIGO 等都在应用 Pulsar 来实现业务指标。 ...

September 29, 2020 · 2 min · jiezi

关于pulsar:译文|简明指南Apache-Pulsar-的分层存储

在一些流数据用例场景中,用户心愿将数据长时间存储在流中。尽管 Apache Pulsar 对 topic backlog 的大小没有限度,但将所有数据存储在 Pulsar 中较长时间,存储老本比拟大。 本文介绍了 Apache Pulsar 的分层存储个性(在 2.1 及之后的版本可用),分层存储反对在不影响终端用户的条件下,将较旧的数据挪动到长期存储中。 在举荐服务中,开发者不心愿限度 backlog 的大小。以音乐服务为例,终端用户每听一首歌,就向 topic 中增加一条音讯。应用这一 topic 训练举荐算法,依据终端用户听过的音乐举荐用户可能喜爱的音乐。而后,将计算结果举荐给用户,再循环这个过程。 举荐算法并非变化无穷。音乐服务的数据科学家始终在一直优化举荐算法,以更好地预测用户喜爱的音乐,从而进步用户对举荐服务的满意度和参与度。 然而,如果每次批改算法时,都只运行批改工夫点之后的用户数据,不仅预测的准确度会受到影响,判断算法的批改成果也会须要一段较长的工夫。为了解决这一问题,算法须要尽可能多地运行用户历史数据。 Pulsar 容许用户存储任意大小的 topic backlog。当集群将要耗尽空间时,用户只需增加新的存储节点,零碎将会主动从新均衡数据。然而,这样的操作运行一段时间后,运维老本非常低廉。 Pulsar 通过提供分层存储(Apache Pulsar 2.1 起新增的个性)缩小了老本/大小的损失。分层存储为用户提供大小不受限制的 backlog,且无需增加存储节点;卸载较旧的 topic 数据到长期存储中,长期存储的老本比在 Pulsar 集群中存储的成本低一个数量级。对于终端用户来说,生产存储在 Pulsar 集群或分层存储中的 topic 数据没有显著差异。位于 Pulsar 集群和分层存储中的 topic 生产和生产音讯的形式也完全相同。 Pulsar 通过分片架构实现了分层存储。Pulsar topic 的消息日志由一系列分片组成。序列中的最初一个分片是 Pulsar 以后写入的分片。以后序列之前的所有分片都已封装,也就是说,这些分片中的数据不可变。因为数据不可变,因而能够轻易地将数据复制到另一个存储系统,而不用放心一致性的问题。复制实现后,能够立刻更新消息日志元数据中的数据指针,并且能够删除 Pulsar 在 Apache BookKeeper 中存储的数据正本。 在 Pulsar 中应用分层存储Pulsar 目前反对通过 Amazon S3、GCS(Google Cloud Storage)、Filesystem 进行长期存储。要应用 S3 进行分层存储,管理员须要先在 S3 中创立一个存储桶(bucket);而后,用存储桶和创立存储桶的区域配置 broker。 ...

September 23, 2020 · 1 min · jiezi

关于pulsar:Apache-Pulsar-社区周报|0905-0911

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等。 导语各位小伙伴们,Pulsar 社区周报来啦! 本次 Pulsar 社区周报,为大家出现 Pulsar client、transaction、OAuth2 认证、Functions、security 等方面内容,帮忙社区小伙伴们把握 Pulsar 我的项目及社区停顿,也不便大家更好地参加到 Pulsar 社区中来! 感激本周以下小伙伴为 Apache Pulsar 添砖加瓦(排名不分先后,看看你有没有上榜 ????????): @gaoran10、@315157973、@zhanghaou、@hangc0276、@Technoboy-、@equanz、@srkukarni、@codelipenghui、@MarvinCai、@aloyszhang、@kellyfj、@zymap、@wolfstudy、@jerrypeng、@cimura、@tuteng、@jianyun8023、@Jennifer88huang、@RobertIndie、@BewareMyPower、@massakam、 @Bklyn、@mkozioro、@jiazhai、@lukestephenson-zendesk、@sijia-w、@yuku、2aloyszhang、@hangc0276、@Huanli-Meng、@david-streamlio接下来,一起看看 09-05 ~ 09-11 有哪些值得你关注的停顿吧! 重要个性因为 PR 较多,仅列举较大 PR 停顿,不包含本周全副动静以下 PR 均已 Merge 进 Pulsar 主分支 ???? Topic Policy: 反对在 topic 级别设置、获取、删除 inactiveTopicPolicies。PR 地址:https://github.com/apache/pul...贡献者:@315157973 ???? Bookie: 增加 bookkeeperClientMinNumRacksPerWriteQuorum 和 bookkeeperClientEnforceMinNumRacksPerWriteQuorum 配置选项。PR 地址:https://github.com/apache/pul...贡献者:@mkozioro ???? Topic Policy: 反对在 topic 级别设置、获取、删除 maxConsumers。PR 地址:https://github.com/apache/pul...贡献者:@zhanghaou ...

September 17, 2020 · 2 min · jiezi

关于pulsar:Apache-Pulsar-在腾讯-Angel-PowerFL-联邦学习平台上的实践

腾讯 Angel PowerFL 联邦学习平台联邦学习作为新一代人工智能根底技术,通过解决数据隐衷与数据孤岛问题,重塑金融、医疗、城市安防等畛域。 腾讯 Angel PowerFL 联邦学习平台构建在 Angel 机器学习平台上,利用 Angel-­PS 反对万亿级模型训练的能力,将很多在 Worker 上的计算晋升到 PS(参数服务器) 端;Angel PowerFL 为联邦学习算法提供了计算、加密、存储、状态同步等基本操作接口,通过流程调度模块协调参与方工作执行状态,而通信模块实现了工作训练过程中所有数据的传输。Angel PowerFL 联邦学习曾经在腾讯金融云、腾讯广告联结建模等业务中开始落地,并获得初步的成果。 Angel 机器学习平台:https://github.com/Angel-ML Angel PowerFL 对联邦通信服务的要求Angel PowerFL 联邦学习平台在训练任务过程当中,对参与方之间的音讯通信要求极高,要求音讯零碎必须稳固牢靠、放弃高性能且能保障数据安全。Angel PowerFL 的学习工作在训练过程当中,参与方之间会有大量的加密数据通过通信模块传输,Angel PowerFL 对通信服务有以下需要: ➡️ 稳固牢靠 Angel PowerFL 的学习工作时长从几分钟到几小时,算法执行对数据的准确性要求很高,不同算法的数据传输峰值也不一样,这须要通信模块的服务足够稳固,并且不能丢数据。 ➡️ 高性能传输 Angel PowerFL 底层通过 Spark 进行计算,Executor 并发执行会产生很多待传输的两头数据,通信模块须要将这些加密后的数据及时传输给对方,这就要求通信服务做到低延时、高吞吐量。 ➡️ 数据安全 尽管 Angel PowerFL 所有数据都通过加密模块进行了加密,但参加联邦学习的业务可能散布在不同公司;跨公网进行传输,须要通信模块足够平安,不易被攻打。 为什么抉择 Pulsar联邦通信服务在做技术预研的时候,思考过 RPC 直连、HDFS 同步、MQ 同步三种技术计划。思考到对平安和性能的要求比拟高,排除了 RPC 直连和 HDFS 同步计划,确定采纳 MQ 同步计划。 MQ 可选的服务很多,比方 Pulsar、Kafka、RabbitMQ、TubeMQ 等。思考到 Angel PowerFL 对稳定性、可靠性、高性能传输和数据安全有很高的需要,咱们征询了腾讯数据平台部 MQ 团队,他们向咱们举荐了 Pulsar。 ...

September 15, 2020 · 4 min · jiezi

关于pulsar:Apache-Pulsar-社区周报|0822-0904

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等。 导语各位小伙伴们,Pulsar 社区周报来啦! 本次 Pulsar 社区周报,为大家出现 Pulsar transaction、broker、metrics、client 等方面内容,帮忙社区小伙伴们把握 Pulsar 我的项目及社区停顿,也不便大家更好地参加到 Pulsar 社区中来! 感激本周以下小伙伴为 Apache Pulsar 添砖加瓦(排名不分先后,看看你有没有上榜 ????????): @gaoran10、@315157973、@zhanghaou、@hangc0276、@Technoboy-、@equanz、@srkukarni、@codelipenghui、@MarvinCai、@aloyszhang、@kellyfj、@zymap、@wolfstudy、@jerrypeng、@cimura、@tuteng、@jianyun8023、@Jennifer88huang、@RobertIndie、@BewareMyPower、@massakam、 @Bklyn接下来,一起看看 08-22 ~ 09-04 有哪些值得你关注的停顿吧! 重要个性因为 PR 较多,仅列举较大 PR 停顿,不包含本周全副动静 以下 PR 均已 Merge 进 Pulsar 主分支???? Transaction: 处理事务中的音讯确认。 PR 地址:https://github.com/apache/pul...贡献者: @gaoran10 ???? Transaction: 反对对分区事务的异样终止。 PR 地址:https://github.com/apache/pul...贡献者:@gaoran10 ???? Transaction: 优化生产事务型音讯的逻辑。 PR 地址:https://github.com/apache/pul... 贡献者:@gaoran10 ???? Topic Policy: 反对在 Topic 级别设置、获取和移除 inactiveTopicPolicies。 PR 地址:https://github.com/apache/pul...贡献者:@315157973 ???? Topic Policy: 反对在 Topic 级别设置卸载策略。 ...

September 11, 2020 · 2 min · jiezi

关于pulsar:中国移动张浩AMQP-on-Pulsar-的设计与应用一览

本期 TGIP-CN 直播,咱们邀请到了来自中国移动云能力核心的张浩,他在 AMQP on Pulsar 我的项目中参加了很多,也一起帮助推动了我的项目的开发与更新,接下来的内容次要基于此次直播中对于 AoP 的一些介绍和细节干货。 相干背景首先一个很重要的问题,就是咱们挪动外部为什么要本人做 AMQP 音讯队列?答案很显著。 一是为了满足外部组件的需要,中国移动是 OpenStack 的重度应用用户,而 OpenStack 中默认应用 RabbitMQ 作为 RPC 通信组件。应用 RabbitMQ 在线上环境部署和运维中,遇到了很多问题。因为咱们中间件团队次要采纳 Java 架构,围绕 RabbitMQ 只能做一些外围革新。 同时,中国移动的私有云中有很多须要应用 AMQP 音讯队列的客户,然而现有的 RabbitMQ 不满足云拜访的条件,因而,中国移动的中间件团队开始钻研 AMQP 音讯队列。在比照 Qpid,RocketMQ 和 Pulsar 之后,发现 Pulsar 的计算拆散存储架构非常适合目前的需要。 同时在对 Pulsar 进行调研之后,发现 StreamNative 曾经开源了 KoP,这更加确定了咱们要基于 Pulsar 开发 AMQP 的可行性。同时 Pulsar 社区活跃度很高,社区方面对本我的项目的反对力度很高。 所以,咱们便开启了与 StreamNative 共同开发 AoP 协定解决插件的征程,携手实现将 AoP 从 0 到 1 的变质。 AMQP 0.9.1AMQP 0.9.1(高级音讯队列协定)是一种消息传递协定,它容许符合标准的客户端应用程序与符合标准的消息传递中间件代理进行通信。 ...

September 11, 2020 · 3 min · jiezi

关于pulsar:开源流数据公司-StreamNative-正式加入-CNCF积极推动云原生策略发展

近日,开源流数据公司 StreamNative 发表正式退出云原生计算基金会 CNCF(全称:Cloud Native Computing Foundation ),成为 CNCF 共建云原生社区的重要合作伙伴。 Cloud Native Computing Foundation,简称 CNCF,是 Linux 基金会旗下专一于下一代云计算计划的子基金会,致力于对立云计算的接口和相干规范,保护和集成开源技术,并反对编排容器化微服务架构利用。StreamNative 同 UCloud、安全科技团体、DataStax、NGINX 等国内外科技公司均属 CNCF 银牌会员。 在云计算深入倒退阶段,云原生利用逐步成为企业的抉择。在此背景下,云原生技术成为更加重要的撑持。CNCF 正在联结越来越多的寰球企业,推动云原生在各行业中落地。 云原生,次要是指一套技术体系和方法论,具备麻利、牢靠、高弹性、易扩大、故障隔离爱护及继续更新等要害特色,能够帮忙企业疾速部署新业务新利用。云原生模式下的应用服务,能够更疾速地响应客户需要。 作为 Apache Pulsar 的商业反对公司,StreamNative 由 Apache Pulsar 、Apache BookKeeper 原生外围开发者组建而成,围绕 Apache Pulsar 及 Apache BookKeeper 打造下一代云原生流数据平台,近期已实现数百万美元的 Pre-A 轮融资。 Pulsar 是 Apache 软件基金会顶级我的项目,作为下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨地区数据复制,具备强一致性、高吞吐、低延时以及高可扩大流数据存储个性,是云原生时代解决实时音讯流数据传输、存储和计算的最佳解决方案。 Pulsar 目前已进入 CNCF Cloud Native Interactive Landscape 中 “App Definition and Development”上司“Streaming & Messaging”分类(https://landscape.cncf.io)。 Landscape 是 CNCF 的重要我的项目,目标在于为云原生利用者提供技术线路图。通过对云原生技术中的大多数我的项目和产品进行分类,追踪云原生生态中的大量技术与利用。Pulsar 入选 CNCF 云原生全景图,阐明 Pulsar 已取得行业权威机构的高度认可。 ...

September 9, 2020 · 1 min · jiezi

关于pulsar:Apache-Pulsar-8-月月报大放异彩里程碑一个接一个

本月看点速览产品动静新增 PIP新增性能Bug 修复社区动静海内外社区动静技术干货对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等。 导语各位小伙伴们,Pulsar 社区月报如约而至! 本月 Pulsar 社区内产生了很多「小事」。经验 8 个月后,我的项目贡献者已从 200 人达到 300+,突飞猛进。同时产品局部,Pulsar 也从 2.6.0 更新到了 2.6.1,修复了之前的 bug,合并了来自社区的 102 个 commit,感激以下各位大佬本月对 Pulsar 我的项目的反对,让 Apache Pulsar 持续发光发热!(排名不分先后,看看你有没有上榜 ????????): @jianyun8023、@315157973、@ebyhr、@BewareMyPower、@hangc0276、@wolfstudy、@sijie、@srkukarni、@jiazhai、@merlimat、@sijia-w、@Jennifer88huang、@Mefl、@codelipenghui、@geetha-rangaswamaiah、@zhanghaou、@RobertIndie、@BewareMyPower、@rudy2steiner、@gaoran10、@massakam、@zymap、@aahmed-se、@MarvinCai、@Bklyn产品动静Go Client 0.2.0 版本已公布,更多功能介绍能够参考下方链接:https://github.com/apache/pul... 。 ???? 新增 PIP PIP 69: Schema design for Go client 在基于 Pulsar 构建的一系列应用程序中,类型平安是一个很重要的个性。以后 Apache Pulsar 曾经反对了 Schema Registry 的性能。并且 Java、CPP 和 Python clients 曾经反对了 Schema 相干的性能。为了进一步欠缺 Go client 的性能,咱们也须要在 Go client 中反对 Schema Registry。 ...

September 4, 2020 · 2 min · jiezi

关于pulsar:最佳实践Pulsar-为批流处理提供融合存储

十分荣幸有机会和大家分享一下 Apache Pulsar 怎么为批流解决提供交融的存储。心愿明天的分享对做大数据处理的同学能有帮忙和启发。 这次分享,次要分为四个局部: 介绍与其余音讯零碎相比, Apache Pulsar 的独特劣势剖析批流解决中的存储需要讲述 Apache Pulsar 如何完满匹配批流解决中的存储需要介绍怎么应用 Apache Pulsar 提供批流交融的存储Apache Pulsar 简介 Apache Pulsar 是早先开源的一个大规模分布式音讯零碎,是 Apache 的顶级我的项目,在 Yahoo 寰球数十个机房大规模部署并线上稳固应用了 4 年多。Apache Pulsar 设计中学习和借鉴了其余优良的分布式系统,在保障一致性和高吞吐的同时,也提供了其余优良个性,比方反对上百万的 Topic、无缝的多核心互备、灵便的扩展性等。 这里咱们简略介绍一下,与其余音讯零碎相比, Apache Pulsar 领有的独特劣势,大抵有以下3点: 独特的软件架构(存储和计算拆散,分层分片的存储)灵便的生产模型( Exclusive、Failover、Shared 和 KeyShared)丰盛的企业个性(多租户)在介绍 Apache Pulsar 时,通常会用这样一句话,“Flexible Pub-Sub Messaging backed by durable log Storage”。这句话表明了 Pulsar 和其余音讯零碎的基本不同,它采纳了存储和计算拆散的架构。 Pulsar 的服务层应用 Broker,存储层应用 BookKeeper,来提供高效和统一的存储。 从架构上来说,Apache Pulsar 采纳了分层和分片的架构。这是 Pulsar 满足批流解决中存储需要的根底。 在 Apache Pulsar 的分层架构中,服务层 Broker 和存储层 BookKeeper 的每个节点都是对等的。Broker 仅仅负责音讯的服务反对,不存储数据。这为服务层和存储层提供了刹时的节点扩大和无缝的失效恢复。 ...

September 2, 2020 · 3 min · jiezi

关于pulsar:Apache-Pulsar-社区周报0815-0821

对于 Apache PulsarApache Pulsar 是 Apache 软件基金会顶级我的项目,是下一代云原生分布式音讯流平台,集音讯、存储、轻量化函数式计算为一体,采纳计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。 导语各位小伙伴们,Pulsar 社区周报来啦! 本周 Pulsar 社区周报,为大家出现 Pulsar client、broker 等内容,帮忙社区小伙伴们把握 Pulsar 我的项目及社区每周停顿,也不便大家更好地参加到 Pulsar 社区中来! 感激本周以下小伙伴为 Apache Pulsar 添砖加瓦(排名不分先后,看看你有没有上榜):@315157973、@zhanghaou、@jiazhai、@RobertIndie、@BewareMyPower、@rudy2steiner、@gaoran10、@massakam、@zymap、 @wolfstudy、@aahmed-se、 @MarvinCai、@Bklyn 接下来,一起看看 08-15 ~ 08-21 有哪些值得你关注的停顿吧! 重要个性因为 PR 较多,仅列举较大 PR 停顿,不包含本周全副动静上面 PR 均已合入 Pulsar 主分支[Broker] 反对在 Topic 级别设置 MaxUnackedMessagesOnConsumer。PR 地址:https://github.com/apache/pul... 贡献者:@315157973 [Broker] 反对在 Topic 级别设置 persistence 策略。PR 地址:https://github.com/apache/pul... 贡献者:@zhanghaou [Broker] 反对在 Topic 级别进行反复数据删除。PR 地址:https://github.com/apache/pul... 贡献者:@315157973 [Java Client] 反对批量音讯签收。PR 地址:https://github.com/apache/pul... 贡献者:@315157973 [Python CLient] 在 Python 客户端增加 oauth2 封装。PR 地址:https://github.com/apache/pul... ...

August 27, 2020 · 2 min · jiezi

关于pulsar:开源流数据公司-StreamNative-推出-Pulsar-云服务推进企业流优先进程

Apache 顶级我的项目 Pulsar 背地的开源流数据公司 StreamNative 发表,推出基于 Apache Pulsar 的云端服务产品——StreamNative Cloud。该产品的公布,让 Pulsar®-as-a-Service(PaaS)成为事实 ,减速 Pulsar 推广与落地,助力企业推动“流优先”策略。 Apache Pulsar 利用于各行各业Pulsar 作为下一代云原生分布式音讯流平台,具备对立的生产模型,同时反对流模型和队列模型。 通过计算与存储拆散的分层架构设计,Pulsar 反对多租户、长久化存储、多机房跨地区复制,具备强一致性、高吞吐、低延时以及高可扩大流数据存储等个性,轻松地解决了目前风行音讯零碎如 Kafka 等在诸多应用场景中的技术瓶颈,并且能够大大降低 IT 设施投入、简化运维操作,晋升稳定性。 目前已有泛滥国内外大型互联网公司和传统行业公司采纳 Pulsar,应用案例散布在人工智能、金融、电信运营商、直播与短视频、物联网、批发与电子商务、在线教育等多个行业,如腾讯、中国电信、中国移动、BIGO、涂鸦智能、智联招聘、VIPKID、Yahoo!、Verizon Media 等都已将 Pulsar 作为外围要害组件。 StreamNative Cloud 云端开启 Pulsar 之旅StreamNative Cloud 提供的 PaaS 服务,操作简略、疾速、牢靠,效率高、成本低。对于想要搭建下一代音讯和事件流零碎服务的企业来说,StreamNative Cloud 是首选解决方案。 应用 StreamNative Cloud,开发者无需在本地保护简单的服务零碎 ,能够更专一于外围业务利用、微服务开发等。StreamNative Cloud 反对用户间接在云端开启 Apache Pulsar 之旅,助力企业疾速落地“流优先”策略,减速业务倒退。 StreamNative 团队由 Apache Pulsar 、Apache BookKeeper 外围开发者组建而成,是寰球惟一一家由 Pulsar 原生开发者组建的开源流技术团队,团队成员有着丰盛的 Pulsar 大规模生产环境(Twitter 和 Yahoo!)开发与运维教训,这保障了 StreamNative Cloud 可能为开发者提供更加杰出的 Pulsar 云服务。 ...

August 25, 2020 · 1 min · jiezi

关于pulsar:Pulsar-联合-TiDB-推出大数据场景数据应用分析解决方案

计划概述大数据时代,各类利用对音讯解决方案的要求不仅仅是数据的流动,而是要在持续增长的服务和利用中传输海量数据,进行智能的解决和剖析,帮忙业务做出更加精准的决策。 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 成为流原生平台的现实抉择。 Pulsar 的企业个性包含音讯的长久化存储、多租户、多机房互联互备、加密和安全性等。Pulsar 提供和 Kafka 兼容的 API,以及 Kafka-On-Pulsar(KoP) 组件来兼容 Kafka 的应用程序。KoP 在 Pulsar Broker 中解析 Kafka 协定,用户不必改变客户端的任何 Kafka 代码就能间接应用 Pulsar。 ...

August 18, 2020 · 2 min · jiezi

关于pulsar:Pulsar-联合-TiDB-推出大数据场景数据应用分析解决方案

计划概述大数据时代,各类利用对音讯解决方案的要求不仅仅是数据的流动,而是要在持续增长的服务和利用中传输海量数据,进行智能的解决和剖析,帮忙业务做出更加精准的决策。 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 成为流原生平台的现实抉择。 Pulsar 的企业个性包含音讯的长久化存储、多租户、多机房互联互备、加密和安全性等。Pulsar 提供和 Kafka 兼容的 API,以及 Kafka-On-Pulsar(KoP) 组件来兼容 Kafka 的应用程序。KoP 在 Pulsar Broker 中解析 Kafka 协定,用户不必改变客户端的任何 Kafka 代码就能间接应用 Pulsar。 ...

August 18, 2020 · 2 min · jiezi

关于pulsar:Pulsar-与-Kafka-全方位对比上篇功能性能用例

越来越多的音讯平台开始采纳实时流技术,这促成了 Pulsar 的应用与倒退。在 2020 年,Pulsar 的受关注度与使用量都有了显著减少。从《财产》百强企业到有前瞻性的初创团队,但凡开发音讯平台和事件流应用程序的公司都对 Pulsar 放弃关注,始终在激励着 Pulsar 的倒退,并且,围绕 Pulsar 我的项目的生态也有了迅猛发展,近期多家媒体也在对此争相报道。 最近的新闻和博客文章都在主观地介绍 Pulsar,读者能够清晰地理解 Pulsar 的性能及用例。Verizon Media、Iterable、Nutanix、Overstock.com 等公司最近也公布了 Pulsar 的用例,并分享了对于如何通过 Pulsar 实现商业指标的一系列想法。 然而,媒体的信息并非齐全实在精确。此外,Pulsar 社区的小伙伴也向咱们发出请求,心愿咱们针对近期 Confluent 博客发表的《 Kafka、Pulsar 和 RabbitMQ比照》技术文章做出回应。很庆幸,Pulsar 可能倒退如此迅速,并成为一项变革性的技术,咱们也很想借此机会深刻探索 Pulsar 的性能。 本文将深刻介绍 Pulsar 技术、社区及生态的相干信息,主观、全面地展现事件流的整体状况。本系列文章共有两篇,本文为上篇,次要比照 Pulsar 和 Kafka 在性能、架构和个性方面的区别。下篇次要介绍 Pulsar 的用例、反对与社区等。 留神 因为 Kafka 的可用文档更为全面,熟知的人也更多,本文会重点介绍目前 Pulsar 绝对根底和文档中波及不多的内容。详情组件Pulsar 由 3 个次要组件组成:broker、Apache BookKeeper 和 Apache ZooKeeper。Broker 是无状态服务,客户端须要连贯到 broker 进行外围消息传递。而 BookKeeper 和 ZooKeeper 是有状态服务。BookKeeper 节点(bookie)存储音讯与游标,ZooKeeper 则只用于为 broker 和 bookie 存储元数据。另外,BookKeeper 应用 RocksDB 作为内嵌数据库,用于存储外部索引,但 RocksDB 的治理不独立于 BookKeeper。Kafka 采纳单片架构模型,将服务与存储相结合,而 Pulsar 则采纳了多层架构,能够在独自的层内进行治理。Pulsar 中的 broker 在一个层上进行计算,而 bookie 则在另一个层上治理有状态存储。 ...

August 13, 2020 · 3 min · jiezi

关于pulsar:Pulsar-与-Kafka-全方位对比上篇功能性能用例

越来越多的音讯平台开始采纳实时流技术,这促成了 Pulsar 的应用与倒退。在 2020 年,Pulsar 的受关注度与使用量都有了显著减少。从《财产》百强企业到有前瞻性的初创团队,但凡开发音讯平台和事件流应用程序的公司都对 Pulsar 放弃关注,始终在激励着 Pulsar 的倒退,并且,围绕 Pulsar 我的项目的生态也有了迅猛发展,近期多家媒体也在对此争相报道。 最近的新闻和博客文章都在主观地介绍 Pulsar,读者能够清晰地理解 Pulsar 的性能及用例。Verizon Media、Iterable、Nutanix、Overstock.com 等公司最近也公布了 Pulsar 的用例,并分享了对于如何通过 Pulsar 实现商业指标的一系列想法。 然而,媒体的信息并非齐全实在精确。此外,Pulsar 社区的小伙伴也向咱们发出请求,心愿咱们针对近期 Confluent 博客发表的《 Kafka、Pulsar 和 RabbitMQ比照》技术文章做出回应。很庆幸,Pulsar 可能倒退如此迅速,并成为一项变革性的技术,咱们也很想借此机会深刻探索 Pulsar 的性能。 本文将深刻介绍 Pulsar 技术、社区及生态的相干信息,主观、全面地展现事件流的整体状况。本系列文章共有两篇,本文为上篇,次要比照 Pulsar 和 Kafka 在性能、架构和个性方面的区别。下篇次要介绍 Pulsar 的用例、反对与社区等。 留神 因为 Kafka 的可用文档更为全面,熟知的人也更多,本文会重点介绍目前 Pulsar 绝对根底和文档中波及不多的内容。详情组件Pulsar 由 3 个次要组件组成:broker、Apache BookKeeper 和 Apache ZooKeeper。Broker 是无状态服务,客户端须要连贯到 broker 进行外围消息传递。而 BookKeeper 和 ZooKeeper 是有状态服务。BookKeeper 节点(bookie)存储音讯与游标,ZooKeeper 则只用于为 broker 和 bookie 存储元数据。另外,BookKeeper 应用 RocksDB 作为内嵌数据库,用于存储外部索引,但 RocksDB 的治理不独立于 BookKeeper。Kafka 采纳单片架构模型,将服务与存储相结合,而 Pulsar 则采纳了多层架构,能够在独自的层内进行治理。Pulsar 中的 broker 在一个层上进行计算,而 bookie 则在另一个层上治理有状态存储。 ...

August 13, 2020 · 3 min · jiezi

关于pulsar:Pulsar-与-Kafka-全方位对比上篇功能性能用例

越来越多的音讯平台开始采纳实时流技术,这促成了 Pulsar 的应用与倒退。在 2020 年,Pulsar 的受关注度与使用量都有了显著减少。从《财产》百强企业到有前瞻性的初创团队,但凡开发音讯平台和事件流应用程序的公司都对 Pulsar 放弃关注,始终在激励着 Pulsar 的倒退,并且,围绕 Pulsar 我的项目的生态也有了迅猛发展,近期多家媒体也在对此争相报道。 最近的新闻和博客文章都在主观地介绍 Pulsar,读者能够清晰地理解 Pulsar 的性能及用例。Verizon Media、Iterable、Nutanix、Overstock.com 等公司最近也公布了 Pulsar 的用例,并分享了对于如何通过 Pulsar 实现商业指标的一系列想法。 然而,媒体的信息并非齐全实在精确。此外,Pulsar 社区的小伙伴也向咱们发出请求,心愿咱们针对近期 Confluent 博客发表的《 Kafka、Pulsar 和 RabbitMQ比照》技术文章做出回应。很庆幸,Pulsar 可能倒退如此迅速,并成为一项变革性的技术,咱们也很想借此机会深刻探索 Pulsar 的性能。 本文将深刻介绍 Pulsar 技术、社区及生态的相干信息,主观、全面地展现事件流的整体状况。本系列文章共有两篇,本文为上篇,次要比照 Pulsar 和 Kafka 在性能、架构和个性方面的区别。下篇次要介绍 Pulsar 的用例、反对与社区等。 留神 因为 Kafka 的可用文档更为全面,熟知的人也更多,本文会重点介绍目前 Pulsar 绝对根底和文档中波及不多的内容。详情组件Pulsar 由 3 个次要组件组成:broker、Apache BookKeeper 和 Apache ZooKeeper。Broker 是无状态服务,客户端须要连贯到 broker 进行外围消息传递。而 BookKeeper 和 ZooKeeper 是有状态服务。BookKeeper 节点(bookie)存储音讯与游标,ZooKeeper 则只用于为 broker 和 bookie 存储元数据。另外,BookKeeper 应用 RocksDB 作为内嵌数据库,用于存储外部索引,但 RocksDB 的治理不独立于 BookKeeper。Kafka 采纳单片架构模型,将服务与存储相结合,而 Pulsar 则采纳了多层架构,能够在独自的层内进行治理。Pulsar 中的 broker 在一个层上进行计算,而 bookie 则在另一个层上治理有状态存储。 ...

August 13, 2020 · 3 min · jiezi

关于pulsar:BIGO-的-Pulsar-性能调优实战上

作者:陈航@BIGO,内容由 StreamNative 邀请发动。 1. 背景大家在应用/压测 Pulsar 时,可能会遇到如下问题: Pulsar broker 节点之间出入流量不平衡Pulsar broker 端 Cache 命中率低,导致大量读申请进入 bookie,且读性能比拟差压测的时候经常出现 broker direct memory OOM(内存溢出)bookie 呈现 direct memory OOM 导致过程挂掉bookie 节点之间出入流量不平衡,且常常抖动当 Journal 盘为 HDD 时,尽管敞开了 fsync,然而 bookie add entry 99th latency 仍旧很高,写入性能很差当大量读申请进入 bookie 时,呈现写被反压,add entry latency 回升Pulsar client 经常出现“lookup timeout exception”ZooKeeper 读写提早过高导致整个 Pulsar 集群不稳固应用 reader API(eg. flink) 生产 Pulsar topic 时,生产速度很慢(Pulsar 2.5.2 之前版本)当 Journal/Ledger 盘为机械硬盘(HDD)时,问题 4、5、6、7 体现得尤为重大。这些问题直观来看,是磁盘不够快造成的,如果 Journal/Ledger 盘读写速度足够快,就不会呈现音讯在 Direct Memory 中沉积,也就不会有一系列 OOM 的产生。因为大部分音讯队列生产零碎中,Journal 盘和 Ledger 盘都是 SSD 并不是太广泛,那么有没有可能在 Pulsar / BookKeeper 上做一些参数/策略的优化,让 HDD 也能达到近似于 SSD 的性能呢? ...

August 5, 2020 · 7 min · jiezi

关于pulsar:BIGO-的-Pulsar-性能调优实战上

作者:陈航@BIGO,内容由 StreamNative 邀请发动。 1. 背景大家在应用/压测 Pulsar 时,可能会遇到如下问题: Pulsar broker 节点之间出入流量不平衡Pulsar broker 端 Cache 命中率低,导致大量读申请进入 bookie,且读性能比拟差压测的时候经常出现 broker direct memory OOM(内存溢出)bookie 呈现 direct memory OOM 导致过程挂掉bookie 节点之间出入流量不平衡,且常常抖动当 Journal 盘为 HDD 时,尽管敞开了 fsync,然而 bookie add entry 99th latency 仍旧很高,写入性能很差当大量读申请进入 bookie 时,呈现写被反压,add entry latency 回升Pulsar client 经常出现“lookup timeout exception”ZooKeeper 读写提早过高导致整个 Pulsar 集群不稳固应用 reader API(eg. flink) 生产 Pulsar topic 时,生产速度很慢(Pulsar 2.5.2 之前版本)当 Journal/Ledger 盘为机械硬盘(HDD)时,问题 4、5、6、7 体现得尤为重大。这些问题直观来看,是磁盘不够快造成的,如果 Journal/Ledger 盘读写速度足够快,就不会呈现音讯在 Direct Memory 中沉积,也就不会有一系列 OOM 的产生。因为大部分音讯队列生产零碎中,Journal 盘和 Ledger 盘都是 SSD 并不是太广泛,那么有没有可能在 Pulsar / BookKeeper 上做一些参数/策略的优化,让 HDD 也能达到近似于 SSD 的性能呢? ...

August 5, 2020 · 7 min · jiezi

关于pulsar:基于-Pulsar-Functions-的事件处理设计模式

原作者:David Kjerrumgaard翻译:StreamNative——Sijia 本文将介绍一些常见的实时流式传输模式及其实现。 模式 1:动静路由首先回顾一下如何应用 Apache Pulsar Functions 实现基于内容的路由。基于内容的路由是一种集成模式。该模式曾经存在多年,通常用于事件核心和音讯框架中。基本思路是查看每条音讯的内容,依据音讯内容将音讯路由到不同目的地。 上面的例子应用了Apache Pulsar SDK,SDK 容许用户配置三个不同的值: 用于在音讯中查找匹配的正则表达式音讯匹配表达式模式时被发送到的 topic音讯不匹配表达式模式时被发送到的 topic这个例子证实了 Pulsar Functions 功能强大,能够基于性能逻辑动静决定将事件发送到哪里。 import java.util.regex.*; import org.apache.pulsar.functions.api.Context; import org.apache.pulsar.functions.api.Function; public ContentBasedRoutingFunction implements Function<String, String> { String process(String input, Context context) throws Exception { String regex = context .getUserConfigValue(“regex”).toString(); String matchedTopic = context .getUserConfigValue(“matched-topic”).toString(); String unmatchedTopic = context .getUserConfigValue(“unmatched-topic”).toString(); Pattern p = Pattern.compile(regex); Matcher m = p.matcher(input); if (m.matches()) { context.publish(matchedTopic, input); } else { context.publish(unmatchedTopic, input); } } }模式 2:过滤如果想通过仅保留满足给定条件的事件来排除 topic 上的大多数事件时,利用抉择过滤模式。过滤模式对仅查找感兴趣的事件特地无效,如信用卡付款超过了肯定金额;日志文件中的 ERROR 音讯;传感器读数超过特定阈值等等(见模式 4)。 ...

July 23, 2020 · 3 min · jiezi

Apache-Pulsar-260-重磅发布新特性独家解读

在 Pulsar 2.5.2 版本公布后的 1 个月,2020 年 6 月 18 日,Apache Pulsar 正式公布了 2.6.0 版本! Pulsar 2.6.0 版本新增了诸多性能,并修复了大量破绽,笼罩存储端、Broker 端、客户端、Pulsar Functions、Pulsar IO、Pulsar SQL、Pulsar proxy 和平安等多方面,判若两人地丰盛和欠缺了 Pulsar 作为一个云原生流数据平台的能力。 2.6.0 版本总共承受了来自社区约 450 个 commits,越来越多的代码奉献来自于中国开发者,中国力量越发迅猛。 以下是 2.6.0 版本重要新增性能的详细信息。 Pulsar 外围[PIP-37] 反对传输大音讯体的音讯通过将大音讯体的音讯拆分成多个 chunk,该 PIP 反对生产和生产大音讯体的音讯。目前,该性能仅对 non-shared subscription 无效,并对客户端有改变。如需应用该性能,你须要将 Pulsar 客户端降级至 2.6.0。应用该个性能够在生产端启用音讯 trunking 机制。 client.newProducer() .topic("my-topic") .enableChunking(true) .create();更多对于 PIP-37 的信息,参阅这里。更多对于该性能的代码实现细节, 参阅 PR-4440。[PIP-39] 新增 system topic,用于存储 namespace 更改事件在 Pulsar 2.6.0 以前,Pulsar 只能设置 namespace 级策略,属于同一 namespace 的所有 topic 都遵循雷同的 namespace 策略,但许多用户心愿能设置 topic 级别策略。另外,不应用和 namespace 级策略的实现形式是因为更多的 Topic 策略会减轻 ZooKeeper 累赘,而 system topic 的设计初衷是心愿将 topic 策略存储在 topic(而不是 ZooKeeper)中。该 PIP 是实现 topic 级策略的第一步,基于此,将来能实现更多相干性能。 ...

July 15, 2020 · 6 min · jiezi

KoP-正式开源在-Apache-Pulsar-上支持原生-Kafka-协议

咱们很快乐地发表 StreamNative 和 OVHcloud 开源了 “KoP“(Kafka on Pulsar)。KoP 将 Kafka 协定解决插件引入 Pulsar broker。这样一来,Apache Pulsar 就反对原生 Apache Kafka 协定。将 KoP 协定解决插件增加到现有 Pulsar 集群后,用户不必批改代码就能够将现有的 Kafka 应用程序和服务迁徙到 Pulsar。这样,Kafka 应用程序就能够应用 Pulsar 的弱小性能,例如: 利用企业级多租户个性简化经营。防止数据搬迁,简化操作。利用 Apache BookKeeper 和分层存储长久保留事件流。利用 Pulsar Functions 进行无服务器化事件处理。什么是 Apache PulsarApache Pulsar 是一个事件流平台。最后,Apache Pulsar 就采纳云原生、分层分片的架构。该架构将服务和存储拆散开来,使零碎实现更敌对的容器化。Pulsar 的云原生架构具备强扩展性、高一致性和高弹性,使公司能通过实时数据解决方案扩大业务。自 2016 年开源以来,Pulsar 已失去宽泛采纳,并于 2018 年成为 Apache 顶级我的项目。 对 KoP 的渴望Plusar 为队列和流工作负载提供对立的音讯模型。Pulsar 反对本人基于 protobuf 的二进制协定,以确保高性能和低提早。protobuf 有利于实现 Pulsar 客户端。而且,该我的项目也反对 Java,Go,Python 和 C ++ 语言以及社区提供的第三方客户端。然而,对于应用其余音讯传输协定编写的应用程序,用户必须重写这些应用程序,否则这些应用程序无奈采纳 Pulsar 新的对立音讯传输协定。 ...

July 14, 2020 · 3 min · jiezi

如何使用-OpenTracing-和-Jaeger-追踪-Pulsar-消息

OpenTracing 是针对应用程序和 OSS(Open-Source Software)软件包的凋谢分布式追踪规范。许多追踪后端服务都反对 OpenTracing API,例如 Jaeger、Zipkin 和 SkyWalking。 本文具体介绍如何应用 Jaeger 通过 OpenTracing API 追踪 Pulsar 音讯。 筹备工作在开始前,须要装置好 JDK 8、Maven 3 和 Pulsar(集群模式或单机模式)。如果还没有装置 Pulsar,点击这里依照提醒进行装置。 第 1 步:启动 Jaeger 后端在 Docker 中启动 Jaeger 后端。 docker run -d -p 6831:6831/udp -p 16686:16686 jaegertracing/all-in-one:latest胜利启动 Jaeger 后,就能够关上 Jaeger UI 网站。 提醒如何你没有 Jaeger Docker 环境,能够下载二进制文件或通过源代码构建。 拜访 http://localhost:16686,无需填写用户名或明码就能够关上 Jeager UI 网站。 第 2 步:增加 maven dependencies本示例应用 Open Tracing Pulsar Client,它是 Pulsar Client 与 OpenTracing API(基于 Pulsar Client Interceptors)的集成,用于追踪 Pulsar 音讯。OpenTracing Pulsar Client 由 StreamNative 研发,是 StreamNatvie Hub 中的监控工具。 ...

July 14, 2020 · 2 min · jiezi

Pulsar-IO-简介

翻译:StreamNative——Sijia Apache Pulsar 是业界当先的音讯零碎。应用音讯零碎时,一个较为常见的问题就是:将数据移入或移出音讯平台的最佳办法是什么?当然,用户能够应用 Pulsar 的 consumer 和 producer API 编写自定义代码,来传输数据。但除此之外,是否还有其余办法呢? 以下为用户提出的一些相干问题: 要将数据公布到 Pulsar 或应用 Pulsar 中的数据,我应该在哪里运行相应程序?要将数据公布到 Pulsar 或应用 Pulsar 中的数据,我应该怎么运行相应程序?用户之所以会提出这些问题,是因为其余音讯/公布-订阅零碎没有提供有组织且容错的形式来帮忙用户从内部零碎输出数据或将数据输入到内部零碎,因此用户须要寻求自定义解决方案并手动运行。 为了解决上述问题并简化这一过程,咱们推出了 Pulsar IO。Pulsar IO 通过利用现有的 Pulsar Functions 框架来输出/输入数据。而 Pulsar Functions 框架的所有劣势(如:容错性、并行性、弹性、负载平衡、按需更新等)都能够间接被 Pulsar 输出/输入数据的应用程序所利用。 而且,咱们发现常常会呈现这样的状况,用户花很大功夫(因为他们不是音讯零碎方面的专家,可能也不想成为这一畛域的专家)去编写自定义程序,用于从消息传递零碎拜访数据。自定义编写这些应用程序不仅会很艰难,而且咱们发现,许多用户在尝试实现执行雷同性能的应用程序时,做了雷同的工作。归根结底,音讯零碎只是用于挪动数据的工具,因而,在设计 Pulsar IO 框架时,咱们的次要指标之一就是易用性。咱们心愿用户可能在不编写任何代码,也不必同时成为 Pulsar 和内部零碎专家的状况下,能够从内部零碎输出数据或将数据输入到内部零碎。咱们将在下文介绍如何达成这一指标。 Pulsar IO 框架是什么样的?首先,咱们定义两个应用程序,一个作为 source 将数据输出到 Pulsar ,另一个作为 sink 从 Pulsar 接收数据。 Source 将数据从内部零碎导入 Pulsar,而 sink 将数据从 Pulsar 导出到内部零碎。具体来看,source 从内部零碎读取数据,并将数据写入 Pulsar topic,而 sink 从一个或多个 Pulsar topic 读取数据,并将数据写入内部零碎。 ...

July 10, 2020 · 4 min · jiezi

Apache-Pulsar-的访问模式与分层存储

原作者:Ivan Kelly翻译:StreamNative——Sijia 之前咱们谈到了 Apache Pulsar 如何利用 BookKeeper 多正本的工作形式以及 BookKeeper 中不同的 I/O 模式。本文将探讨在 Pulsar 中多正本怎么与不同的 I/O 模式交互,以及 Pulsar 如何通过这种交互实现分层存储等。从实质上看,Pulsar 采纳分层架构,而这种分层架构使得每种 I/O 模式都能够独立工作,因而读写之间永远不会互相烦扰。分层还简化了以与 Pulsar 齐全集成的形式增加存储层的操作,从而在对应用 Pulsar 的开发者不产生任何影响的条件下,升高减少存储层的老本,并进步新增存储层的可扩展性。 Pulsar 是一个提供公布-订阅和排队语义的音讯零碎。客户端能够是 producer 或 consumer,也能够是两者组合。生产客户端向 broker 发送音讯,生产客户端从 broker 生产音讯。Pulsar 将音讯整顿寄存在 topic 中,并把 topic 调配给 broker。在一个 topic 内,Pulsar 保障全序原子播送(Total Order Atomic Broadcast),也就是说,一旦 Pulsar broker 向 producer ack topic 中某音讯的公布,绝对于同一 topic 中的其余音讯,此音讯将永远不会失落、被复制或被从新排序。并且,音讯程序完全相同,所有 consumer 读取音讯的程序也完全相同。 Pulsar 应用 BookKeeper 作为 topic 积压音讯的后备存储。Pulsar broker 作为 BookKeeper 存储顶部的无状态服务层。当 producer 向 Pulsar 发送音讯时,Pulsar 立即将此音讯写入 BookKeeper。一旦 BookKeeper ack 写操作,broker 便能够向 producer ack 音讯公布,并且 consumer 能够读音讯。 ...

July 10, 2020 · 1 min · jiezi

Apache-Pulsar-分层存储帮你省钱

原作者:Jesse Anderson翻译:StreamNative-Sijia企业在考虑部署实时消息系统时,总体硬件成本是很重要的。通过预先规划,企业可以节省高达 85% 的总体存储成本。 在比较存储成本之前,我先简要介绍一下 Apache Kafka 和 Apache Pulsar 如何存储数据,它们之间有何差异,以及为什么这些差异很重要。 Kafka 中的数据存储 在 Kafka 中,Broker 进程负责移动并存储数据。Producer 将数据发送到 Broker 进程中。当 Consumer 轮询数据时,从 Broker 中检索数据。Broker 进程接收到数据时,会将数据存储在单独的本地目录中。 Kafka 集群支持同时运行多个不同的 Broker 进程,而每个 Broker 进程分别运行在物理上独立的计算机或容器上。 Pulsar 中的数据存储可以通过几种不同的方式建立 Pulsar 集群。这种可扩展性正是优化存储成本的方式。 简单的 Pulsar 设置 在 Pulsar 中,Broker 进程负责移动数据。Producer 将数据发送到 Broker 进程中。当 Consumer 推送数据时,数据来自 Broker。当 Broker 接收到数据时,会将数据存储在一个共置的 BookKeeper Bookie(BookKeeper 中存储数据的进程)中。 Pulsar 集群支持同时运行多个不同的 Broker 进程,而每个 Broker 进程分别运行在物理上独立的计算机或容器上。 具有独立 BookKeeper 集群的 Pulsar 如图所示,Pulsar Broker 不直接存储数据,而是使用 Apache BookKeeper 来存储数据。数据发送/接收和存储的解耦使得 BookKeeper 可以在物理上独立的计算机或容器上运行。 ...

July 3, 2020 · 2 min · jiezi

用-Pulsar-Functions-进行实时分析

原作者:David Kjerrumgaard翻译:StreamNative-Sijia对于许多事件驱动的应用程序来说,如何快速处理、理解和响应数据至关重要。在针对这些场景的分析和数据处理中,计算精确值可能会过于费时,或不合理占用资源。这种情况下,在给定时间内得到近似结果比等待准确结果更有意义。例如,要计算某个网页或网站上独立访客的确切数量,需要保留所有之前的独立访客记录以进行比较。唯一标识符的数量不可累加,因此并行性完全无所助益。 如果一个用例不需要精确结果,并且可使用近似值,那么在需要更少内存的条件下,我们可以提供多种技术和算法更快地计算精确的近似值。并且,有几个开源库实现了本文中涉及的每个模式,这相对简化了在 Apache Pulsar Function 中使用这些库的操作。 近似设计模式此类模式指当事件流太大而无法存储,或因数据移动得太快而无法处理时,提供近似值、估计值和随机数据样本以进行统计分析的技术。 我们可以利用能够使用小型数据结构的算法,而无需保留大量数据。这些数据结构通常为千字节,又称为 sketch。Sketch 也是流算法,因为每个传入的项目只需要查看一次。由于具有这两个属性,这些算法成为了边缘设备部署上的理想选择。 模式 1:集合元素有时,我们需要在不查询外部数据存储的条件下,确认是否在合理确定范围内看到过流元素。由于无法将整个流历史记录保留在内存中,我们需要借助一种能够利用数据结构的近似技术—— Bloom filter。Bloom filter 是一种节省空间的概率数据结构,可用于测试元素是否属于集合。 如图 1 所示,所有 bloom filter 都使用两个关键元素。 N 位数组,初始化为 0K 个独立哈希函数 h(x)的集合,输入一个值,生成一个小于 N 的数向 filter 中添加新元素时,对该元素执行所有哈希函数。这些哈希值可视为位数组的索引,并将相应的数组元素设置为“1”。 当检查 filter 中是否已经存在某个元素时,我们会再次使用哈希函数,但是这次要对每个哈希索引进行数组查找。如果其中至少有一个为零,则 filter 中不存在此元素。Bloom filter 的一个主要特点是保证不会返回假阴性。因此,可以确定一个元素不在集合中,或可能在集合中,但需要其他逻辑才能最终确定。下面的示例利用 Twitter 中 Bloom Filter 算法的stream-lib 来实现,Bloom Filter 最简单的操作就是过滤。当 Pulsar Function 处理新事件时,首先检查确认我们是否见过这一事件。如果没有,则将其路由到“未见过” topic 以进行进一步处理。 import org.apache.pulsar.functions.api.Context;import org.apache.pulsar.functions.api.Function;import com.clearspring.analytics.stream.membership.BloomFilter; public class BloomFilterFunction implements Function<String, Void> { BloomFilter filter = new BloomFilter(20, 20); Void process(String input, Context context) throws Exception { if (!filter.isPresent(input)) { filter.add(input); // Route to “not seen” topic context.publish(“notSeenTopic”, input); } return null; }}模式 2:事件频率另一个常见的近似统计是一个特定元素在含有重复元素的无限数据流中出现的频率。这在回答诸如“元素 X 在数据流中出现了多少次?”的问题时非常有用。而这类结果在网络监控和分析中尤为实用。 ...

July 3, 2020 · 2 min · jiezi

一张图表告诉你谁对-Apache-Pulsar-感兴趣

原作者:Ben Lorica、Jesse Anderson 翻译:StreamNative-Sijia多层架构、可扩展、多租户和持久性只是众多公司选择 Pulsar 的一部分原因。 想要了解更多关于 Apache Kafka、Apache Pulsar、Apache Spark 和其他数据技术的信息,欢迎参加 2019 年 9 月 23 日至 26 日在纽约市举办的 Strata Data Conference,在"Data Engineering & Architecture"研讨会上均有介绍。 企业通过越来越多的系统和设备生成数据,消息传递和事件流解决方案也(尤其是 Apache Kafka)得以广泛使用。在过去的一年里,我们一直在追踪 Apache Pulsar(以下简称 Pulsar)的进展。虽然 Pulsar 是一个后起新秀,但的确是个功能强大的解决方案。Pulsar 由 Yahoo 研发并开源,旨在智能地处理、分析和交付数据(数据来自不断扩展的服务和应用程序),因此非常适合现代数据平台。另外,Pulsar 也被设计成可以减轻与复杂分布式系统相关的运维负担。 还有谁对 Pulsar 感兴趣?Streamlio 的 CEO Karthik Ramasamy 分享了最近访问 Pulsar 主页用户的地理统计数据: 在几千名访问者中,有 33% 来自美洲,36% 来自亚太地区,27% 来自欧洲、中东和非洲。 尽管 Apache Kafka 是迄今为止最受欢迎的发布/订阅解决方案,但在过去的一年中,我们发现有不少公司使用 Pulsar。事实证明,Pulsar 的一些特性受到了这些公司的重视,包括: 多层架构:由服务层(broker 协调消息接收、存储、处理和传递)、存储层(使用 Apache BookKeeper 节点持久化消息)和处理层(通过 Pulsar functions 或 Pulsar SQL)组成。高性能和可扩展性:Pulsar 已经在 Yahoo 使用了多年,每天处理超过 200 万个主题中的 1000 亿条消息。它能够支持数百万个主题,同时还能保证高吞吐量和低延迟的性能。易于增加存储或服务,而无需重新平衡整个集群:多层架构允许存储可以被独立地添加,也允许在不停机的情况下扩展服务层和存储层。支持常见消息模型,包括发布/订阅消息和消息队列。多租户:单个 Pulsar 集群能支持整个企业的需求,并允许每个团队拥有各自的命名空间和容量。持久性(无数据丢失):数据被复制多份并同步到磁盘。跨地域复制:原生支持跨地域分布的应用程序。Pulsar 支持多个模式,方便在集群之间复制数据。上一代消息系统主要关注移动数据,而新兴框架(例如,Pulsar)则添加了数据处理功能,这些功能对于将数据提供给分析和 AI 应用至关重要。互联设备的增加、5G 的来临、机器学习和 AI 重要性的日益增长,都要求企业建立基础架构,用于捕获、处理和移动数据流。企业也将越来越需要(近)实时执行这些任务。好消息是,用于数据管理、处理、传输和调度的关键组件在不断改进,自动化技术应该能够降低运营负担。 ...

July 3, 2020 · 1 min · jiezi