分布式项目学习笔记(一):protobuf 的安装以及使用

【protobuf入门学习(一)】 —— protobuf安装教程 protobuf介绍以及安装教程 阅读详情

一、概述

由于分布式需要在不同的主机之间进行通信,因此需要对信息进行打包。打包之后发送的数据称为“序列化”信息,接受方接收到序列化信息之后,需要进行“反序列化”得到结构化的信息。protobuf 正是提供了这两个过程的一个库。

二、protobuf 的安装

	1. 获取源码:https://github.com/google/protobuf
	2. 源码包中的src/README.md,有详细的安装说明,安装过程如下:

	1、解压压缩包:unzip protobuf-master.zip
	2、进入解压后的文件夹:cd protobuf-master
	3、安装所需工具:sudo apt-get install autoconf automake libtool curl make g++ unzip
	4、自动生成configure配置文件:./autogen.sh
	5、配置环境:./configure
	6、编译源代码(时间比较长):make
	7、安装:sudo make install
	8、刷新动态库:sudo ldconfig

三、功能的简单测试

我们可以编写简单的文件来测试protobuf 的功能:

1. 创建test.proto文件:

syntax = "proto3"; // 声明proto的版本

package fixbug; // 声明了代码所在的包

// 定义登录请求消息类型
message LoginRequest{
    bytes name = 1;
    bytes pwd = 2;
}

// 定义登录响应消息类型
message LoginRespone{
    int32 errcode = 1;
    bytes errmsg = 2;
    bool success = 3;
}

2. 对test.proto进行编译

这里编译的作用生成相对应的C++代码来给程序进行调用。命令:

protoc test.proto --cpp_out ./

其中,protoc 是编译命令,test.proto是文件名,./ 是指定了当前的路径

编译之后会增加两个文件 test.pb.cc 和 test.pb.h(忽略main.cc 和 a.out):
在这里插入图片描述

3. 使用main函数测试功能

#include <iostream>
#include <string>
#include "test.pb.h" // 引入之前生成的库

using namespace fixbug; // 解开命名空间


int main() {

    LoginRequest req;   // 创建对象
    req.set_name("zhang san");  // 设置
    req.set_pwd("123456");    	// 设置
	
	// 序列化为string
    std::string send_str;
    if (req.SerializeToString(&send_str)) {
        std::cout << send_str.c_str() << std::endl;
    }
	
	// 从string反序列化
    LoginRequest reqB;
    if (reqB.ParseFromString(send_str)) {
        std::cout << reqB.name() << std::endl;
        std::cout << reqB.pwd() << std::endl;
    }
    
    return 0;
}

3.1 编译

g++ main.cc test.pb.cc -lprotobuf // 注意一定要动态连接

3.2 运行

./a.out

3.3 输出结果

在这里插入图片描述

完成收工!!!

分布式网络通信框架(十五)——Mprpc项目总结 会一直阻塞下去),也就是指定的timeout时间内没有收到rpc 请求的响应,判断当前rpc 请求失败,此处为了实现高可用性,可以再尝试请求比如3 次,3 次都失败的话,可以从zookeeper 上查询还有没有其它主机提供同样的rpc 服务,然后重新向新主机发起请求,直到请求成功,如果所有提供该rpc 服务的主机都没有响应或已经没有其它主机提供该rpc 服务了,那么尝试3 次后,可以判定请求失败(确实有其它因素导致所有的服务器都挂掉了,这一般是严重的线上bug)。,封装了很好用的接口,之前只用过json。 阅读详情

相关推荐

数学不好是原罪——高等数学笔记(汇总版)

这是本人之前考研的高数手写笔记,工科学硕数一考了146(满分150),笔记有一定参考价值,欢迎大家收藏借鉴。

xuuyann 5万+

Hello! protobuf——编译与安装(c++版)

Protocol Buffers是Google开发的一种平台无关,语言无关,可扩展的的序列化结构数据格式,类似与XML,但是比XML更小,更快,更简单。你只需要按照规则定义你需要的数据结构,然后通过专门的源代码生成工具就可以生成各种语言所需要的数据类文件。非常好用~ ...

wzw1609119742的博客 1万+

嘉立创EDA实战:4层板叠层设计避坑指南(附阻抗计算技巧)

本文详细解析了嘉立创EDA在4层PCB叠层设计中的实战技巧与避坑指南,涵盖经典叠层方案对比、介质厚度选择、电源系统设计及高速信号完整性优化。特别介绍了阻抗计算工具的应用,帮助工程师在高速电路设计中实现性能与成本的最佳平衡。

sea99的博客 965

源码安装protobuf

源码安装protobuf

qq_16740151的专栏 496

UE5新手必看:3种UI定位方法实战(含蓝图配置截图)

本文为UE5新手详细解析了三种核心UI定位方法:屏幕空间、场景空间和世界空间。通过实战蓝图配置与控件操作,指导开发者如何根据HUD、角色血条、3D物体标记等不同应用场景,正确选择并配置UI的定位方式,以实现清晰的信息传递与沉浸式体验。

weixin_29018815的博客 473

NSIDC海冰运动产品-速度矢量场图绘制(数据下载和处理--年、季节平均)【python/basemap】

入门级NSIDC海冰运动产品速度矢量场图绘制(数据下载和处理--年、季节平均)【python/basemap】

Mluoo的博客 2959

protobuf源码编译与安装

protobuf源码编译与安装1.下载protobuf源码git clone https://github.com/google/protobuf.git2.安装编译所需的依赖sudo yum install -y autoconf automake libtool curl make g++ unzip3.产生配置脚本./autogen.sh4.编译与安装$ ./configure --prefi

wenwenxiong的专栏 1万+

Windows 11最新WDK安装避坑指南:从Visual Studio配置到KMDF驱动开发

本文提供了在Windows 11系统上进行KMDF驱动开发的完整环境搭建与实战指南。针对最新WDK与Visual Studio的配置变化,详细解析了从独立安装WDK/SDK、创建首个KMDF驱动项目,到编译排错、部署调试的全流程,帮助开发者高效避坑,顺利开启Windows内核开发。

weixin_29302047的博客 526

protobuf安装与使用

更新系统软件包列表安装 Protocol Buffers 编译器和运行时库注:常见问题:缺少依赖解决依赖问题后重新安装即可显示版本。

AntigravityC的博客 920

华为od 面试八股文_数据库_01_含答案

华为od 面试八股文_数据库_01_含答案

MISAYAONE的博客 2166

STM32芯片解锁读写保护:更改Option Byte [Error已解决]

解锁读保护:STLink更改Option Byte 变Level从1变为0,点击Apply即可。(程序执行读保护,其实是将Level从0变为1) 默认情况下该保护功能是不开启的,若要开启该功能,需要改写内部FLASH选项字节(Option Bytes)中的配置。 RDP读保护级别 级别0,无保护, 级别1,使能读保护, 这种保护下,若使用调试功能(使用下载器、仿真器)或者从内部SRAM自举时都不能对内部FLASH及备份SRAM作任何访问(读写、擦除都被禁止); 当芯片处于级别1的时候,可以把选项字节

HowieXue 薛永浩的博客 2万+

【Go | 从0实现简单分布式缓存】-5:使用Protobuf通信

本文为极客兔兔动手写分布式缓存GeeCache学习笔记。

theaipower的博客 7477

【自适应滤波】自适应UKF,基于新息自适应调节Q和R,场景为雷达跟踪与滤波、MATLAB实现

本文提出了一种基于新息协方差匹配的自适应UKF(CM-AUKF)算法,用于解决噪声统计未知或时变场景下的目标跟踪问题。通过实时调整过程噪声协方差Q和观测噪声协方差R,CM-AUKF显著提升了跟踪精度和稳定性。仿真结果表明,相比传统UKF,CM-AUKF在位置和速度估计误差上分别降低了约50%和30%,且无需人工调参。该算法适用于无人机导航、雷达跟踪等动态环境,MATLAB代码可直接运行复现结果。自适应曲线显示算法能有效收敛到真实噪声参数,验证了其自适应能力。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 329

深入理解GeeCache项目:使用Protobuf优化分布式缓存通信

深入理解GeeCache项目:使用Protobuf优化分布式缓存通信 【免费下载链接】7days-golang 7 days golang programs from scratch (web framework Gee, distributed cache GeeCache, object relational map...

gitblog_00675的博客 386

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

基于muduo和protobuf的分布式网络通信框架

基于muduo和protobuf的分布式网络通信框架

yttt的博客 1615

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Go分布式缓存 使用 Protobuf 通信(day7)

Go分布式缓存 使用 Protobuf 通信(day7)

Harris-H的博客 706

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

protobuf、protobuf-c、protobuf-c-rpc在Linux(Ubuntu18.04)编译安装及交叉编译arm\aarch64版本

如下介绍c语言的protobuf+rpc的开源库protobuf-c和protobuf-c-rpc,其适合于嵌入式分布式场景,利用protobuf协议的可扩展性比较方便进行协议兼容升级,利用rpc接口的网络易用性,不需要再从头到尾实现一遍socket通信、通信接口设计,只需要实现C函数接口设计和开发以及利用proto设计好交互协议即可,并且具备一定的跨编程语言交互特性,每个具备联网能力的嵌入式设备都可作为rpc客户端和服务端,可以快速进行嵌入式设备业务组网开发(此外,还有一些适合于stm32的protobu

逍遥游的博客 1554

秋招项目ByteTalk —— 分布式集群的聊天系统

文章目录写在前面系统前置知识ByteTalk架构设计图ByteTalk架构 —— nginx反向代理负载均衡nginx 反向代理的配置ByteTalk架构 —— 服务器群(服务单元)ByteTalk 服务单元 —— 抽象服务节点:ProxyServiceByteTalk 抽象服务节点 —— 聊天处理服务器:ChatServerByteTalk 业务服务单元 —— 以登录、注册节点:UserService为例ByteTalk 架构缺陷参考文献 作者:shenmingik 邮箱:2107810343@qq.co

0 error(s) 3891

RPC分布式网络通信框架项目

RPC分布式网络通信框架项目详解

weixin_45029883的博客 2839

RPC分布式网络通信框架(一)—— protobuf的使用

rpc分布式网络框架

weixin_42690036的博客 3565

Protobuf 开源项目指南

Protobuf 开源项目指南 项目介绍 Protobuf(Protocol Buffers) 是Google开发的一种数据序列化协议(与XML、JSON类似),用于高效地序列化结构化数据。此开源项目由用户@chrisdew维护的一个分支版本,提供了一种灵活、高效且自动化的机制来定义数据结构和服务接口,然后在不同的语言之间进行通信。通过 Protobuf,开发者可以轻松地处理复杂的数据传输,而无需...

gitblog_01114的博客 358

[C++项目] Mprpc分布式网络通信框架

zookeeper中间件流程图。二进制存储占用字节数少,网络传输节省带宽资源。

sdadsa2132131的博客 916

简单的使用protobuf和protostuff

在我们的开发过程中,序列化是经常需要处理的问题,比如在做分布式访问数据时,或者是在做redis缓存存储数据时,如果我们涉及的知识面不够广的话,可能会简单的使用JDK的序列化,也即在需要序列化的类上implements Serializable接口去实现序列化,我想说的是这种方式在小系统中尚且可以用一用,如果是并发很大的系统会受到严重影响,这是由于JDK自带的序列化效率很低,不论是时间上还是空间上。

眼前一座山,踏平它 1万+

go项目实战——动手写分布式缓存GeeCache

GeeCache 的缓存全部存储在内存中,内存是有限的,因此不可能无限制地添加数据。假定我们设置缓存能够使用的内存大小为 N,那么在某一个时间点,添加了某一条缓存记录之后,占用内存超过了 N,这个时候就需要从缓存中移除一条或多条数据了。那移除谁呢?我们肯定希望尽可能移除“没用”的数据,那如何判定数据“有用”还是“没用”呢?

mirana的专栏 2188

day7 使用 Protobuf 通信

本文是`7天用Go从零实现分布式缓存GeeCache`的第七篇。 - 为什么要使用 `protobuf`? - 使用 `protobuf` 进行节点间通信,编码报文,提高效率。代码约`50`行

YouMing_Li的博客 770

c++分布式网络通信框架【万字拆解】

基于c++的分布式网络框架,项目基于muduo高性能网络库+Protobuf开发,实现的主要功能了是通过zookeeper实现服务注册以及发现,muduo网络库以及Protobuf实现远程RPC调用,异步日志。

weixin_44545838的博客 5707
上一篇: C++ AVL树手撕代码实现
下一篇: Leetcode44: 通配符匹配
zsiming
博客等级 码龄7年 43粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值