Pulsar IO实战

news2025/7/19 17:26:50

一、引言

今天跟着 官方文档 基于docker玩一把Pulsar IO吧

二、概要

  • 在用户能够轻松的将消息队列跟其他系统(数据库、其他消息系统)一起使用时,消息队列的作用才是最强大的。而Pulsar IO connectors可以让你很轻松的创建、部署以及管理这些跟外部系统的连接,例如mysql、kafka、cassandra等。

  • Pulsar connector分为Source和Sink两种,Source connector会将数据从外部系统喂给Pulsar,而Sink connector负责将数据从Pulsar喂给外部系统。

  • Pulsar connector是一种特殊的Function,只不过这个Function持有其他系统的客户端作为pulsar与其他系统的桥梁,它在处理保证上跟Function是一致的,分别是最多一次、至少一次、精准一次。处理保证不仅依靠Pulsar,还跟外部系统相关以及实现逻辑相关。

    • 最多一次:发给connector的消息最多处理一次或者不做处理
    • 至少一次:发给connector的消息处理一次或者多次
    • 精准一次:发给connector的消息只处理一次

三、实战

1.安装connector

  1. 在 这里 下载对应的connector,先选择对应的版本,在点进 connectors 目录选择对应的source或者sink
    在这里插入图片描述

  2. 将下载的nar文件放到pulsar安装地址的connectors 目录下(没有则需要创建)
    在这里插入图片描述

  3. 启动Pulsar

  4. 通过指令查看服务connector信息,先输出下面这样的信息就说明connector已经注册到Pulsar上面了

    curl -s http://localhost:8080/admin/v2/functions/connectors
    

    在这里插入图片描述

2. 安装Cassandra

  1. 基于 brew install --cask --appdir=/Applications docker 安装docker(仅针对mac环境)

  2. 基于docker运行 cassandra,成功运行后通过 docker ps可以看到Cassandra服务已经起来了

    docker run -d --rm --name=cassandra -p 9042:9042 cassandra:3.11
    

在这里插入图片描述

  1. 通过 docker exec -ti cassandra cqlsh localhost 进入Cassandra服务的容器,并通过以下指令进行库表的初始化

    CREATE KEYSPACE pulsar_test_keyspace WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};
    
    USE pulsar_test_keyspace;
    
    CREATE TABLE pulsar_test_table (key text PRIMARY KEY, col text);
    
  2. 先查询该表确保没有数据 select * from pulsar_test_table;
    在这里插入图片描述

3. 功能验证

  1. 写配置文件cassandra-sink.yml

    configs:
        roots: "localhost:9042"
        keyspace: "pulsar_test_keyspace"
        columnFamily: "pulsar_test_table"
        keyname: "key"
        columnName: "col"
    
  2. 启动写Cassandra的sink,启动后通过指令查看显示sink已经正常启动

pulsar-admin sinks create \
    --tenant public \
    --namespace default \
    --name cassandra-test-sink \
    --sink-type cassandra \
    --sink-config-file examples/cassandra-sink.yml \
    --inputs test_cassandra

在这里插入图片描述

  1. 执行命令批量往pulsar中写入数据,看是否会正常输出到Cassandra中

    for i in {0..9}; do pulsar-client produce -m "key-$i" -n 1 test_cassandra; done
    
  2. 由于上面的操作是有延迟的,所以不断的查询Cassandra的表是可以看到数据在逐步的增加,并最终写满十条数据
    在这里插入图片描述
    在这里插入图片描述

四、总结

纸上得来终觉浅,绝知此事要躬行。 学习不能仅仅停留在纸面上或者理论,脱离使用去探讨设计或者源码都是不切实际的。因此今天一起体验了一把Pulsar IO,除此之外Pulsar还提供了非常丰富的跟其他系统交互的Connector,详细可以看上面发的下载地址并尝试使用自己感兴趣的Connector感受下实操的快乐~

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

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

相关文章

Golang 开发实战day04 - Standard Library

Golang 开发实战day04 - Standard Library 接下来开始我们第四天学习,Go语言标准库提供了丰富的功能,可以帮助开发者快速完成各种任务。 golang就像其他语言一样,附带了一些非常轻量级的函数和特性,都是开箱即用的,这里…

KMM初探

什么是KMM? 在开始使用 KMM 之前,您需要了解 Kotlin。 KMM 全称:Kotlin Multiplatform Mobile)是一个用于跨平台移动开发的 SDK,相比于其他跨平台框架,KMM是原生UI逻辑共享的理念,由KMM封装成Android(Kotlin/JVM)的aar…

第四百一十一回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"给geolocator插件提交问题的结果"相关的内容,本章回中将介绍自定义标题栏.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我…

第四百一十二回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"给geolocator插件提交问题的结果"相关的内容,本章回中将介绍自定义标题栏.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我…

我的自建博客之旅04之Halo

我的自建博客之旅04之Halo Halo是我无意间发现的一款博客框架,如果你讨厌Hexo,Vuepress等静态框架本地编辑,构建部署等方式,如果你想要一款一次搭建,前台是博客,后台是文章维护,并且支持各种定制化折腾的博客框架,可能Halo会比较适合你。 因为我个人还是比较偏技术,…

八节【DBA从入门到实践】课程,带你快速掌握OceanBase运维管理核心技能

为帮助用户及开发者更好、更快地掌握OceanBase DBA核心技能,OceanBase社区设计了配套教程——“DBA从入门到实践”。8期教程带大家循序渐进掌握OceanBase运维管理核心技能。搭配随堂习题和OceanBase技术专家在线答疑,快速掌握重要知识点,并轻…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Refresh)

可以进行页面下拉操作并显示刷新动效的容器组件。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 支持单个子组件。 从API version 11开始,Refresh子组件会跟随手势下拉而下移…

【数据结构】链表力扣刷题详解

前言 题目链接 移除链表元素 链表的中间结点 反转链表 分割链表 环形链表的约瑟夫问题 ​ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 移除链表元素 题述 给你一个链表的头节点 head 和一个整数 val ,请…

搜维尔科技:OptiTrack提供了一个通用、精确、灵活和可监控的系统!

MELS集成OptiTrack与最前沿的虚拟生产阶段 在加拿大蒙特利尔,MELS Studios and Postproduction设有20个工作室,以满足各种规模的电影和电视项目的需求。凭借先进的技术设施和专业的技术团队,梅尔斯为电影行业的合作伙伴提供从摄影棚和设备租…

应用开发技术巩固指南

前言 起初毕业前夕,个人已经开始自学Android开发,由于没有指导,所以起步很难,写的代码也规范,逻辑不清,技术止步于皮毛,很多东西都不理解。 后来步入工作,逐渐熟悉了这个方向&…

Zustand极简的状态管理工具

介绍 一个小型、快速且可扩展的 Bearbones 状态管理解决方案。 Zustand 有一个基于 hooks 的舒适 API。它不是样板文件或固执己见,但有足够的惯例来明确和类似通量。 zustand官网 zustand使用方法及调试工具的安装使用 安装包 npm install zustand2.创建store仓…

【算法专题--双指针算法】leetcode--283. 移动零、leetcode--1089. 复写零

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 前言1. 移动零&#xff0…

多线程(部分)

Day28下2 多线程 一、什么是进程 进程是系统进行资源分配和调用的独立单元,每一个进程都有它的独立内存空间和系统资源。 二、单进程操作系统和多进程操作系统的区别 单进程操作系统:dos(一瞬间只能执行一个任务) 多进程单用户操…

想第一时间接收API变更信息?用Apipost这样做

Apipost致力于为开发者提供更全面的API管理功能。而最近,Apipost又新增了一个非常实用的功能:第三方消息推送。这个功能可以帮助开发人员及时了解API的变更情况,从而更好地管理和优化自己的API。 具体来说,Apipost的第三方消息推…

Linux操作系统——多线程

1.线程特性 1.1线程优点 创建一个新线程的代价要比创建一个新进程小得多与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多线程占用的资源要比进程少很多能充分利用多处理器的可并行数量在等待慢速I/O操作结束的同时,程序可执行其他的计…

2024.3.9|第十五届蓝桥杯模拟赛(第三期)

2024.3.9|十五届蓝桥杯模拟赛(第三期) 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第八题 第九题 第十题 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C学习笔记,常言道,不积跬步无以至千里&…

sql-bypass通关笔记(作业)

靶场环境的搭建: 首先安装dvwa靶场;因为要用到dvwa的数据库然后将该靶场放到phpstudy的www目录下创建一个网站指向该文件夹通过访问文件夹中php文件的形式进行闯关具体压缩包我放到最后的资料里了 index1.php通关笔记 知识点: 空格过滤 #…

51单片机—直流电机

1.元件介绍 2.驱动电路 3.电机调速 一般会保证一个周期的时间是一样的 应用&#xff1a; 1.LED呼吸灯 #include <REGX52.H>sbit LEDP2^0;void Delay(unsigned int t) {while(t--); } void main() {unsigned char Time,i;while(1){for(Time0;Time<100;Time){for(i0;…

MateBook 14s 2023款 集显 触屏(HKFG-16)原厂Win11系统

HUAWEI华为MateBook14s笔记本电脑2023款原装Windows11&#xff0c;恢复出厂开箱状态系统下载 适用型号&#xff1a;HKFG-XX、HKFG-16、HKFG-32 链接&#xff1a;https://pan.baidu.com/s/1GBPLwucRiIup539Ms2ue0w?pwdfm41 提取码&#xff1a;fm41 原厂系统自带所有驱动、…

python失物招领系统-安卓-flask-django-nodejs-php

对于本失物招领 的设计来说&#xff0c; 它是应用mysql数据库、安卓等技术动态编程以及数据库进行努力学习和大量实践&#xff0c;并运用到了 建设中在整个系统的设计当中&#xff0c;具体根据网上失物招领的现状来进行开发的&#xff0c;具体根据用户需求实现网上失物招领网络…