Apache Pulsar:分布式发布订阅消息系统

Apache Pulsar是一个开源的分布式pub-sub消息传递系统,最初由Yahoo创建,并且是Apache Software Foundation的一部分 。

Pulsar是用于服务器到服务器消息传递的多租户高性能解决方案。

脉冲星的主要功能包括[4]:

  • 对Pulsar实例中的多个集群的本地支持,跨集群的消息无缝地域复制
  • 极低的发布和端到端延迟
  • 无缝扩展可扩展到超过一百万个主题
  • 一个带有Java , Python和C ++绑定的简单客户端API
  • 主题的多种订阅模式 ( 独占 , 共享和故障转移 )
  • 由Apache BookKeeper提供的持久性消息存储保证了消息的传递

架构概述

在最高级别,一个Pulsar实例由一个或多个Pulsar簇组成。 一个实例中的集群可以在它们之间复制数据[4]。

下图提供了一个脉冲星团的图示:

与Apache Kafka的Pulsar比较

下表列出了Apache Pulsar和Apache Kafka [5]之间的异同:

卡夫卡 脉冲星
概念 生产者主题消费者组消费者 生产者主题订阅消费者
消费 更侧重于流,分区上的独占消息传递。 没有共享的消费。 统一消息传递模型和API。
  • 通过独家故障转移订阅进行流式传输
  • 通过共享订阅排队
king 简单的胶印管理
  • 在Kafka 0.8之前,偏移量存储在ZooKeeper中
  • 在Kafka 0.8之后,偏移量存储在偏移量主题上
统一消息传递模型和API。
  • 通过独家故障转移订阅进行流式传输
  • 通过共享订阅排队
保留 邮件将根据保留时间被删除。 如果使用者在保留期之前没有阅读邮件,它将丢失数据。 仅在所有订阅使用完邮件后,邮件才会被删除。 即使订阅的使用者长时间停机也不会造成数据丢失。

即使所有订阅都使用了邮件,邮件也可以保留配置的保留期限。

TTL 不支持TTL 支持消息TTL

结论

Apache Pulsar是由Apache Incubator PMC赞助的Apache Software Foundation(ASF) [3]进行孵化的一项工作。 由于其独特的功能,它似乎可以替代Apache Kafka。

资源:

[1] https://pulsar.apache.org/ [2] https://developer.yahoo.com/open-source/ [3] https://apache.org / [4] https:// pulsar。 apache.org/docs/latest/getting-started/ConceptsAndArchitecture/ [5] https://streaml.io/blog/pulsar-streaming-queuing/

翻译自: https://www.javacodegeeks.com/2017/12/apache-pulsar-distributed-pub-sub-messaging-system.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查看mysql进程ps_linux ps命令查看当前运行的进程

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想对进程进行实时的监控,应该用 top 命令。要对进程进行监测和控制&#xff0…

java获取文件编码_java如何获取文件编码格式

1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK。按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三…

java上传文件功能_Java MemoryMapped文件的功能

java上传文件功能Java MemoryMapped文件的功能 在JDK 1.4中,内存映射文件的一个有趣功能被添加到Java中,该功能允许将任何文件映射到OS内存以进行有效读取。 内存映射文件可用于开发IPC类型的解决方案。 本文是使用内存映射文件创建IPC的实验。 有关内存…

java代码快速_java代码编写快捷途经

CtrlR 然后按下R键SHiftAltR:对选定属性进行全局命名CtrlD:删除当前行CtrlQ: 定位到最后编辑的地方CtrlL: 定位在某行CtrlM: 最大化当前的 Edit(命令)CtrlO:快速显示大纲CtrlD:显示继承结构CtrlW :关掉当…

控制Java并行流的并行度

在掌握了这些新功能之后,随着Java 9的最新发布,我们有了许多新功能可以用来改进我们的解决方案。 Java 9的发布也是修改我们是否掌握Java 8功能的好时机。 在本文中,我想解决关于Java并行流的最常见的误解。 人们通常说您不能以编程方式控制…

java小型超市系统_Java小型超市收银系统

【实例简介】Java SE开发的超市收银系统,实现了数据库操作,文件读取数据,写入数据等操作【实例截图】【核心代码】超市收银系统└── 期末综合├── bin│ ├── Driver.class│ ├── control│ │ ├── ExportMenuController…

double取值范围 java_Java中float/double取值范围与精度

Java浮点数浮点数结构要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个东西&#…

开源点云数据处理 开源_大数据开源安全

开源点云数据处理 开源在安全性方面从未有(恕我直言)已经足够了开源解决方案和布鲁斯已经撰写了有关这几个 时间在过去 ,而且也没有必要再次改写参数。 现在,随着市场上“ NoSQL”和“大数据”开源趋势的发展,安全终于…

为您的Web应用程序启用两因素身份验证

支持两因素身份验证(2FA)几乎总是一个好主意,尤其是对于后台系统。 2FA有许多不同的形式,其中一些包括SMS,TOTP甚至是硬件令牌 。 启用它们需要类似的流程: 用户转到其个人资料页面(如果要在注…

redis java序列化_java处理redis的几种序列化策略

简单记录一下java处理redis的几种序列化策略,这里使用的环境是springboot 2.0.4springboot中提供了StringRedisTemplate和RedisTemplate两种序列化类,它们都只能读自己存的数据,即数据互不相通。主要区别如下:1、采用的序列化策略…

java 访问内部类的属性_java中的内部类详细总结

内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,此处不能单方…

迟来总比没有好:SSE或服务器发送的事件现在已在JAX-RS中

服务器发送的事件 (或简称为SSE )是非常有用的协议,它允许服务器通过HTTP将数据推送到客户端。 这是我们的网络浏览器支持的年龄,但令人惊讶的是, JAX-RS规范在很长一段时间内都忽略了这一点。 尽管Jersey提供了适用于…

java 面向对象继承的思想_Java面向对象思想

Java类的定义:成员变量会默认初始化,局部变量不会默认初始化。如何在内存中区分类和对象:♦类是静态的概念,代码区♦对象是new出来的,位于堆内存,类的每一个成员变量在不同的对象中都有不同的值(除了静态变…

java 垃圾回收手动回收_Java垃圾回收(4)

java 垃圾回收手动回收G1:垃圾优先 G1收集器是热点JVM中要实现的最新收集器。 自Java 7 Update 4以来,它一直是受支持的收集器。OracleGC团队也公开表示,他们对低暂停GC的希望是完全实现的G1。 这篇文章来自我之前的垃圾收集博客文章&#xf…

使用正确的垃圾收集器将Java内存使用量降至最低

大小对于软件至关重要。 很明显,与大型整体方法相比,在微服务体系结构中使用小型组件具有更多优势。 最新的Java版本的Jigsaw可帮助分解旧应用程序或从头开始构建新的云原生应用程序。 这种方法减少了磁盘空间,构建时间和启动时间。 但是&am…

java 鼠标画多个圆形_点击鼠标不同的建(左、中、右)画一个不同颜色的圆

[java]代码库import java.awt.Color;import java.awt.Graphics;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JFrame;public class T1 extends JFrame{int x;int y;Color c;public T1(){this.setSize(600,400);this.setDefaultCl…

jslint4java_JSLint检测javascript的错误提示

“Missing semicolon.” : “缺少分号.”,“Use the function form of \”use strict\”.” : “使用标准化定义function.”,“Unexpected space after ‘-’.” : “在’-后面不应出现空格.”,“Expected a JSON value.” : “请传入一个json的值.”,“Mixed spaces and tabs.…

jar运行 osgi保存_自动化的OSGi测试运行程序

jar运行 osgi保存在我的团队成员中,我以忘记维护(JUnit)测试套件而闻名。 我只是无法完成手动添加测试套件这一额外步骤。 幸运的是,有连续的集成服务器可以按命名模式收集测试。 如果我介绍的一项孤立测试失败了,那么…

mysql 去掉默认约束_06. 默认约束-创建、添加和删除

# 数据库的基本操作创建 删除 数据库、创建 删除表修改 表名 数据类型 字段名 添加字段删除 字段 调整字段位置 更换存储引擎 删除外键删除 数据表 包括被关联父表# 数据完整性六项约束主键约束(PRIMARY KEY)自增约束(AUTO_INCREMENT PRIMARY KEY)唯一约束(UNIQUE)默认约束(DEF…

通过粘性仙人掌基元进行延迟加载和缓存

您显然知道什么是延迟加载 ,对吗? 而且您无疑知道缓存 。 据我所知,Java中没有一种优雅的方法来实现它们中的任何一个。 这是我在Cactoos原语的帮助下为自己找到的。 Matteo Garrone的《 Reality(2012)》 假设我们需…