Canal与Kafka数据传输协议protocol buffer

news2024/11/16 2:56:56

1.写在前面

        实时数仓开发中,利用Canal伪装slave获取MySQL的增量数据,获取后的数据由Kafka生产者接收,交由Flink实时流计算。传输数据量较大时,会占用内存及带宽,所以考虑将数据序列化和反序列化操作,这里介绍的是protocal buffers

2.介绍

       Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化、反序列化,常用于RPC 系统和持续数据存储系统。

       其类似于XML生成和解析,但protobuf的效率高于XML,不过protobuf生成的是字节码,可读性比XML差,类似的还有json、Java的Serializable等。

       很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。

3.安装说明

1)本文采用eclipse编写Java代码

2)protocal语法proto3

4.安装及测试

1)新建一个程序,能跑就行,我新建一个springboot程序

2)proto文件内容准备

//语法
syntax = "proto3";
//等下这个文件编译成Java后的包地址,这个包路径要提前创建,不建议与proto文件放一起
option java_package = "com.example.demo.protoCom";

message Person {
    // ID
    int32 id = 1;
    // 姓名
    string name = 2;
    // email
    string email = 3;
    // 朋友
    string friends = 4;
}

 3)安装protocol插件

插件的作用:把定义好的proto文件提交给protoc.exe程序编译

eclipse中help----eclipse market place

搜索protocol,看到下图中的插件,点击安装,安装提示重启eclipse即可

 4)添加jar包依赖

这里的语法用的是proto3,版本选择3.21.12,

jar包同protoc.exe的版本一定要一致,不然会报错

如果是proto2的话,在写proto文件的时候语法不同,这里2.5.0也是可以的

<dependency>  
    <groupId>com.google.protobuf</groupId>  
    <artifactId>protobuf-java</artifactId>  
    <version>3.21.12</version>  
</dependency> 

 5)配置protocal插件

eclipse中点击window----preference 查找protocol buffer

图中的protoc.exe是编译程序,下载后放电脑中任意地址,这里给路径连接即可

本教程3.21.12版本的protoc.exe地址:https://download.csdn.net/download/u010763324/87408397

官方下载地址:Releases · protocolbuffers/protobuf · GitHub

下图中Java输出地址,不用写package的地址,因为package地址在proto文件中已写,

即Java output Directory + Java package = 生成Java文件的地址

 白话文:安装一个protobuf-dt 2.2.1插件,将编写的proto文件发送给已经下载好的protoc.exe文件编译,编译后产生的Java文件要设置放置路径

 6)测试方法类

package com.example.demo.controller;

import java.io.IOException;
import com.example.demo.protoCom.PersonMsg;

public class CanalDemo {
	
	public void canal() throws IOException{
		
		//实例化protobuf的对象
		PersonMsg.Person.Builder builder  = PersonMsg.Person.newBuilder();
        //给user对象进行赋值
        builder.setId(1);   //用户id
        builder.setName("张三");//用户名
        builder.setEmail("1234566@dd");//邮箱

        //获取User对象的属性
        PersonMsg.Person userBuilder = builder.build();
        System.out.println(userBuilder.getId());
        System.out.println(userBuilder.getName());
        System.out.println(userBuilder.getEmail());
		
	}	
} 

这次开发没写注解,运行测试方法类需要在主程序实例化运行即可

运行结果

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

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

相关文章

KNN(K-近邻)算法

1、概述 KNN(K−NearestNeighbor)KNN \left( K-Nearest Neighbor \right)KNN(K−NearestNeighbor)是机器学习中最基础的算法之一。既可以用于分类也可以用于回归&#xff0c;KNNKNNKNN通过测量不同特征值之间的距离来进行分类。 2、实例理解 如果k3k 3k3&#xff0c;绿色圆点…

【Cocos新手入门】使用 cocos creator 创建单行文本输入框及多行文本输入框

本篇文章主要讲解使用 cocos creator 创建单行文本输入框及多行文本输入框&#xff0c;并绑定文本框获取文本输入数据的方法。 作者&#xff1a;任聪聪 日期&#xff1a;2023年2月2日 cocos引擎版本2.4.3 实际效果 单行文本效果、多行文本效果 说明&#xff1a;如果不清楚按钮…

jquery:表单请求、序列化+案例

表单请求提交原则name相同的表单提交&#xff0c;name出现多次&#xff0c;对应不同表单的值没有name&#xff0c;含有disabled&#xff08;禁用&#xff09;禁止提交多选单选下拉列表需要设置value属性才能取值表单提交事件名称写法描述提交方式method“get”get不安全取数据&…

30. 面向对象高级编程

1. __solts__ 正常情况下&#xff0c;当我们定义了一个class&#xff0c;创建了一个class的实例后&#xff0c;我们可以给该实例绑定任何属性和方法&#xff0c;这就是动态语言的灵活性。 from types import MethodTypeclass Student:def __init__(self):passdef set_num(sel…

OSCP_VULHUB_Matrix3

文章目录简介扫描ida汇编ssh登录/提权简介 下载地址&#xff1a; https://download.vulnhub.com/matrix/Machine_Matrix_v3.ova 环境&#xff1a; VMware 16虚拟机软件 Matrix3靶机IP地址&#xff1a;192.168.132.145 Kali的IP地址&#xff1a;192.168.132.139 Matrix3靶机与…

Shiro基础知识与集成应用

1、Shiro可以完成: 【认证、授权、加密、会话管理】、与Web集成、缓存等2、特点: 易于使用、全面、灵活、强力支持Web、兼容性强、社区支持 外部观看内部观看3、 登录认证:1)身份验证&#xff1a;一般需要提供如身份ID等一些标识信息来表明登录者的身份&#xff0c;如提供email…

Druid(德鲁伊)数据库连接池

文章目录一.数据库连接池的必要性(一).传统数据库连接模式的的步骤(二).传统数据库连接模式存在的问题二.数据库连接池技术(一).数据连接池的思想&#xff1a;(二).数据库连接池的任务&#xff1a;(三).数据库连接池的规模&#xff1a;(四).工作原理&#xff1a;(五).数据库连接…

5 -【Faster R-CNN】之 AnchorGenerator 代码精读

【Faster R-CNN】之 AnchorGenerator 代码精读1、anchor 的 size 和 aspect_ratios2、计算以中心坐标为 (0, 0) 的 anchor3、将 anchor 映射到原图上4、代码汇总anchor 的作用&#xff1a;anchor 是用来做辅助计算的&#xff0c;用于和 &#xff08;上节课说的&#xff0c;由RP…

共享模型之内存(一)

1.Java内存模型 1>.JMM即Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着CPU寄存器、缓存、硬件内存、CPU指令优化等; 2>.JMM体现在以下几个方面: ①.原子性 - 保证指令不会受到线程上下文切换的影响; ②.可见性 - 保证指令不会受cpu缓存的影响; ③.有序…

大型会场活动线上保障方案

背景 为保证活动上线后的质量&#xff0c;大型会场活动上线前通常会预设一些线上可能出现的问题&#xff0c;提前制定保障方案。 这些与活动保障相关的问题可能与App端上的容器环境有关&#xff0c;也可能与大盘用户设备特征有关&#xff0c;问题的处理方案会影响活动的线上效…

《啊哈算法图的遍历》(14张图解)

目录 前言 一&#xff0c;dfs和bfs是什么 二&#xff0c;城市地图--图的深度优先遍历 三&#xff0c;最少转机--图的广度优先遍历 前言 &#x1f33c;说爱你&#xff08;超甜女声版&#xff09; - 逗仔 - 单曲 - 网易云音乐 1月22日一个女孩加了我&#xff0c;她和我聊音…

adb常用指令合集

adb文件管理指令 1.复制设备里的文件到电脑 adb pull <设备里的文件路径> [电脑上的目录] 电脑上的目录 参数可以省略&#xff0c;默认复制到当前目录 例&#xff1a;adb pull /data/tsplogtool /home/jxq/文档/场景魔方 2.复制电脑里的文件到设备 adb push <电脑上的…

浅谈未来10年IT行业的变局与抉择,一文带你认识元宇宙

一. 困局据国家就业部门最新统计数据报告&#xff0c;2022年应届毕业生的数量首次突破1000万大关。其中研究生达到130万&#xff0c;985、211等名校毕业生75万&#xff0c;普通本科毕业生470万&#xff0c;专科生460万&#xff0c;另外还有几十万的归国留学生&#xff01;但这还…

《从0开始学大数据》之Spark性能优化案例

基于软件性能优化原则和 Spark 的特点&#xff0c;Spark 性能优化可以分解为下面几步。 性能测试&#xff0c;观察 Spark 性能特性和资源&#xff08;CPU、Memory、Disk、Net&#xff09;利用情况。分析、寻找资源瓶颈。分析系统架构、代码&#xff0c;发现资源利用关键所在&a…

【前端】Vue项目:旅游App-(17)home:页面滚动显示搜索栏、节流、时间同步

文章目录目标过程与代码页面滚动到目标位置显示搜索框优化&#xff1a;节流搜索栏显示时间同步效果总代码修改或添加的文件search-bar.vueuseScroll.jsstore的main.jsformatDate.jshome.vue参考本项目博客总结&#xff1a;【前端】Vue项目&#xff1a;旅游App-博客总结 目标 …

HDFS文件浏览器功能OOM排查

现象描述 涉及HDFS文件浏览器的某个功能运行一段时间后会出现OOM的情况 错误日志如下&#xff1a; service.log.2023-02-01-0.log:java.lang.OutOfMemoryError: Java heap space排查过程 需要查看dump文件排查一下造成OOM的原因 查看jvm参数如下&#xff1a; java -Duser.t…

一文讲明Docker的基本使用,常见Docker命令使用 、Docker的安装使用等【详细说明+图解+概念+实践】

一个混迹于Github、Stack Overflow、开源中国、CSDN、博客园、稀土掘金、51CTO等 的野生程序员。 目标&#xff1a;分享更多的知识&#xff0c;充实自己&#xff0c;帮助他人 GitHub公共仓库&#xff1a;https://github.com/zhengyuzh 以github为主&#xff1a; 1、分享前端后端…

【Python合集系列】2023兔年吉祥,新的一年希望放烟花的人跟看烟花的人都能平平安安哦~(附多种源码)

前言 希望放烟花的人跟看烟花的人都能平平安安。 &#x1f440; NICE TO MEET YOU :)&#x1f319; 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末公众hao即可免费。 ​哈喽&#xff01;我是木子&#xff0c;新…

设计模式之适配器模式,以C++为例。

今天来盘一盘适配器模式。适配器&#xff1a;顾名思义&#xff0c;就是让原本不合适的变为合适的&#xff0c;好似一对男女&#xff0c;没有中间的媒婆是不会互相了解的&#xff0c;好像不太恰当&#xff0c;就这么解释吧&#xff0c;只有有了这个中间人他们才会产生联系&#…

智能驾驶开启高精定位新赛道,这家供应商正加码布局海外市场

高工智能汽车研究院监测数据显示&#xff0c;2022年1-11月中国市场乘用车前装标配搭载NOA交付达到18.38万辆&#xff0c;同比增长91.86%&#xff1b;同时&#xff0c;NOA搭载的车型配置价格还在不断下滑&#xff0c;正在把NOA的配置拉至15万元价格区间。 而作为高精定位&#x…