pulsar:分布式 pub-sub 消息平台,灵活模型与直观 API,支持水平扩展与多租户

Apache Pulsar - distributed pub-sub messaging system

分支34Tags242
文件最后提交记录最后更新时间
3 年前
3 年前
2 年前
3 年前
2 年前
2 年前
3 年前
6 年前
2 年前
4 年前
2 年前
4 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
3 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
3 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
2 年前
3 年前
3 年前
2 年前
2 年前
2 年前
2 年前
4 年前
4 年前
3 年前
6 年前
8 年前
8 年前
4 年前
4 年前
4 年前
4 年前
5 年前
2 年前

Pulsar 是一个分布式发布订阅消息平台,其模型极为灵活,拥有直观的客户端API。

欲了解更多关于 Pulsar 的信息,请访问 https://pulsar.apache.org

主要特性

  • 水平可扩展(支持数百万独立主题与每秒处理数百万条消息)
  • 强排序和一致性保证
  • 低延迟持久化存储
  • 主题及队列语义
  • 负载均衡器
  • 设计用于托管服务:
    • 多租户
    • 认证
    • 授权
    • 配额
    • 支持混合不同类型的工作负载
    • 可选硬件隔离
  • 追踪消费者游标位置
  • REST API 适用于配置管理与统计
  • 地理复制
  • 分区主题透明处理
  • 消息透明批量操作

存储库

此存储库是 Apache Pulsar 的主存储库。Pulsar 项目管理委员会也维护了生态系统的其他组件存储库,包括连接器、适配器与其他语言的客户端。

Helm 图表

生态系统

客户端

管理仪表板与工具

文档

持续集成/持续部署

构建 Pulsar

需求:

编译并安装:

$ mvn install -DskipTests

单独编译并安装模块

$ mvn -pl module-name (例如:pulsar-broker)install -DskipTests

最小构建(跳过大部分外部连接器和分层存储处理器)

mvn install -Pcore-modules,-main -DskipTests

运行单元测试:

$ mvn test

运行个别单元测试:

$ mvn -pl module-name (例如:pulsar-client)test -Dtest=unit-test-name (例如:ConsumerBuilderImplTest)

选择性地运行测试包:

$ mvn test -pl module-name (例如,pulsar-broker)-Dinclude=org/apache/pulsar/**/*.java

启动独立 Pulsar 服务:

$ bin/pulsar standalone

参见 https://pulsar.apache.org 获取文档和示例。

构建自定义 Docker 映像

Docker 映像必须使用 Java 8 在 branch-2.7 或之前分支中构建,这是因为存在 问题 8445。 Java 11 是在 master / branch-2.8 中推荐的 JDK 版本。

这会构建 Docker 映像 apachepulsar/pulsar-all:latestapachepulsar/pulsar:latest

mvn clean install -DskipTests
mvn package -Pdocker,-main -am -pl docker/pulsar-all -DskipTests

映像构建后,可以标记并推送到您自定义的仓库。以下是一个 Bash 脚本的例子,该脚本用当前版本和 Git 提交记录给 Docker 映像打上标签,并将其推送到 localhost:32000/apachepulsar

image_repo_and_project=localhost:32000/apachepulsar
pulsar_version=$(mvn initialize help:evaluate -Dexpression=project.version -pl . -q -DforceStdout)
gitrev=$(git rev-parse HEAD | colrm 10)
tag="${pulsar_version}-${gitrev}"
echo "使用标签 $tag"
docker tag apachepulsar/pulsar-all:latest ${image_repo_and_project}/pulsar-all:$tag
docker push ${image_repo_and_project}/pulsar-all:$tag
docker tag apachepulsar/pulsar:latest ${image_repo_and_project}/pulsar:$tag
docker push ${image_repo_and_project}/pulsar:$tag

设置您的开发环境

Apache Pulsar 使用 Lombok,所以您需要确保您的 IDE 已配置所需的插件。

IntelliJ

将项目 JDK 设置为 Java 11 JDK

  1. 打开 项目设置。点击 文件 -> 项目结构 -> 项目设置 -> 项目

  2. 选择 JDK 版本。 从 JDK 版本下拉列表中,选择 下载 JDK... 或选择现有最近的 Java 11 JDK 版本。

  3. 在下载对话框中,选择版本 11。您可以从多个供应商中挑选版本。除非您有特定偏好,否则请选择 Eclipse Temurin(AdoptOpenJDK(Hotspot))

在 IntelliJ 中为 Maven 配置 Java 版本

  1. 通过以下路径打开 Maven 导入设置对话框: 设置 -> 构建、执行、部署 -> 构建工具 -> Maven -> 导入

  2. JDK for Importer 设置选择 使用项目 JDK。这样在将项目导入到 IntelliJ 时使用 Java 11 JDK 来运行 Maven 。Maven 构建中的部分配置基于 JDK 版本,当“JDK for Importer”与“项目 JDK”不一致时,可能会导致错误的选择。

  3. 验证 Maven -> Runner 对话框中的 JRE 设置已设为 使用项目 JDK

在 IntelliJ 中配置注解处理

  1. 通过以下路径打开注解处理器设置对话框: 设置 -> 构建、执行、部署 -> 编译器 -> 注解处理器

  2. 选中下列按钮:

    1. 启用注解处理
    2. 从项目类路径获取处理器
    3. 相对于:模块内容根目录 存储生成源代码
  3. 将生成源代码目录设为与 Maven 目录相等:

    1. 将 “生产源代码目录” 设置为 “target/generated-sources/annotations”。
    2. 将 “测试源代码目录” 设置为 “target/generated-test-sources/test-annotations”。
  4. 点击 确定

  5. 在 IntelliJ 中安装 Lombok 插件。

配置代码样式

  1. 通过以下路径打开代码样式设置对话框:设置 -> 编辑器 -> 代码样式

  2. 点击齿轮图标 -> 导入方案 -> Intellij IDEA 代码样式 XML

  3. 选取文件 ${pulsar_dir}/src/idea-code-style.xml

  4. 在弹出的对话框中,点击 确定

  5. 确保创建的方案已在 方案 下拉菜单中被选中,然后点击 确定

配置 Checkstyle

  1. 安装 Checkstyle-IDEA 插件。

  2. 通过以下路径打开 Checkstyle 设置对话框:设置 -> 工具 -> Checkstyle

  3. Checkstyle 版本 设置为 8.37

  4. 扫描范围 设置为 仅限 Java 源码(包括测试)

  5. 单击 配置 部分的 + 按钮以打开一个对话框来选择检查文件。

    1. 输入 描述。例如,Pulsar。
    2. 选择 使用本地 Checkstyle 文件
    3. 文件 设置为 buildtools/src/main/resources/pulsar/checkstyle.xml
    4. 选择 相对于项目位置存储
    5. 点击 下一步 -> 下一步 -> 完成
  6. 通过切换相应的复选框激活刚刚添加的配置。

  7. 点击 确定

在 IntelliJ 中进一步配置

  • 当在 IntelliJ 上工作于 Pulsar 核心模块时,减少 IntelliJ 中活跃项目的数量以加快 IDE 动作速度并减少无关的 IDE 警告。

    • 在 IntelliJ 的 Maven UI 的树视图下的“配置文件”
      • 启用 “core-modules” Maven 配置文件
      • 禁用 “main” Maven 配置文件
      • 从 Maven UI 工具栏运行 “重新加载所有 Maven 项目” 动作。您也可以在按下 Shift 键两次激活 IntelliJ 的 “搜索所有地方” 窗口找到动作名称。
  • 从 Maven UI 工具栏运行 “为所有项目生成源代码并更新文件夹” 动作。您也可以在按下 Shift 键两次激活 IntelliJ 的 “搜索所有地方” 窗口找到动作名称。对所有项目运行此动作大约需要十分钟时间。当 “core-modules” 配置文件是唯一的活跃配置文件时,这会更快。

IntelliJ 使用技巧

注意:由于篇幅限制,此处省略了最后的 IntelliJ 使用技巧部分。

编译错误处理

  • 对于缺少Protobuf类的编译错误,请确保执行“为所有项目生成源码和更新文件夹”的操作。

  • 在IntelliJ中,非核心模块的Pulsar源代码可能无法完全正确编译,导致编译错误。

    • 如果专注于Pulsar的核心模块,使用core-modules配置文件,这些模块的源码可以在IntelliJ中编译。
    • 遇到问题时,可以右击项目名称,在IntelliJ的Maven界面选择忽略项目来标记特定项目。
    • 当前,由于编译问题,不总是能直接从IDE运行单元测试。作为替代方案,可以通过命令行使用mvn test -Dtest=TestClassName来运行单个测试类。
  • 若已执行上述步骤但测试仍然无法运行。

    • 尝试以下步骤:
      1. 关闭IntelliJ。
      2. 在命令行中运行mvn clean install -DskipTests
      3. 重新打开IntelliJ。
    • 如果问题依旧:
      1. 确认Maven版本被支持。支持的Maven版本在主pom.xml文件的<requireMavenVersion>部分定义。
      2. 在IntelliJ中尝试“重启并清除缓存”,然后重复上述步骤以重新加载项目和生成源码。

Eclipse配置

请参照此处的指南配置您的Eclipse环境。

构建Pulsar文档

参阅文档的README

联系方式

邮件列表

名称 范围 订阅方法 取消订阅方法 存档链接
users@pulsar.apache.org 用户相关讨论 邮件订阅 邮件取消订阅 存档
dev@pulsar.apache.org 开发相关讨论 邮件订阅 邮件取消订阅 存档

Slack

Apache Pulsar的Slack频道位于: https://apache-pulsar.slack.com/

您可自行注册于: https://apache-pulsar.herokuapp.com/

许可证

本软件遵循Apache许可证2.0版:http://www.apache.org/licenses/LICENSE-2.0

加密软件通知

此分布包含加密软件。您当前所居住国家对加密软件的进口、持有、使用及再出口至其他国家可能有限制。使用任何加密软件之前,请检查贵国关于进口、持有或使用以及再出口加密软件的法律、规章和政策,确认是否许可。更多信息请访问:http://www.wassenaar.org/

美国商务部工业与安全局(BIS)已将该软件分类为出口商品控制号码(ECCN)5D002.C.1,包括使用或执行非对称算法的信息安全软件。这种形式的Apache软件基金会分发方式符合技术软件不受限制(TSU)例外(见BIS出口管理法规第740.13节)的规定,适用于目标代码和源代码的出口。

以下是包含的加密软件的详细信息:Pulsar使用了来自Bouncy Castle的SSL库,由http://www.bouncycastle.org编写。

项目介绍

Apache Pulsar —— 分布式发布-订阅消息系统【此简介由AI生成】

定制我的领域
013.42 K3.49 K访问 GitHub