分布式项目学习笔记(一):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。 阅读详情

相关推荐

实验三 Gmapping建图

自主移动机器人第三次实验课,内容包括:(1)turtlebot的gmapping建图;(2)rosbag的使用;(3)gazebo中的gmapping建图。

lj164567487的博客 4648

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

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

wzw1609119742的博客 1万+

【Python脚本】Python自动大麦网抢票,准点原价秒杀演唱会门票,拒绝黄牛交易!从我做起!!!1

你是否错过了周杰伦的票,最近又没抢到五月天的票,不要太难过,今晚有张学友的票,后天还有张杰的票,加油哦!

weixin_45841831的博客 6万+

源码安装protobuf

源码安装protobuf

qq_16740151的专栏 496

雷电模拟器+Google Play服务配置全指南:从安装到定位问题解决

本文详细介绍了雷电模拟器配置Google Play服务的全流程,包括版本选择、组件安装、定位服务调试及网络问题排查。针对安卓开发者的常见挑战,提供从基础到高级的解决方案,帮助优化测试环境稳定性与定位精度。

weixin_30399821的博客 1234

【STM32】H743的25MHZ外部晶振下480MHz时钟的CubeMX配置图

备忘 有时候临时调一个外设做实验需要快速搭建工程的时候,老忘记配置的数据 再补一段代码格式的 void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; /** Supply configuration up

一只爱做笔记的码农 3395

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万+

OpenClaw对接本地大模型:Llama3/Qwen/ChatGLM全适配,完全私有化部署

OpenClaw对接本地大模型,是企业级AI智能体落地的必经之路——它不仅解决了数据隐私和合规问题,还能大幅降低成本、提升响应速度、实现定制化。这篇文章我给大家完整拆解了两套部署方案:Ollama(新手首选,5分钟搞定)和vLLM(生产环境首选,高性能),覆盖了Llama3/Qwen/ChatGLM三大主流模型,还有真实的落地案例、高级优化、踩坑避坑指南,看完你就能零代码完成完全私有化的部署。从零开发自定义工具,给OpenClaw添加专属业务能力;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 808

protobuf安装与使用

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

AntigravityC的博客 920

Windows 上安装 OpenCode 完全指南:从零到成功,人人能看懂!

跟着这篇教程,你应该已经成功在 Windows 上安装并运行了 OpenCode。步骤操作要点1安装 Chocolatey必须以管理员身份运行 PowerShell2安装 OpenCode3验证安装关闭并重新打开终端,输入4进入项目目录必须是 Git 仓库(git init5配置模型输入/connect,输入 API Key6开始使用输入问题测试最后的小建议如果没有 API Key,可以从 DeepSeek 或 Kimi 开始,有免费额度初次使用建议先在简单项目上测试。

专注于编程、AI、人工智能等多个领域内容研究和分析 3889

运放+MOS恒流源电路仿真分析

利用运放设计一个恒流源

HW-BASE的博客 4084

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

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

theaipower的博客 7477

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

gitblog_00675的博客 386

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

yttt的博客 1615

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

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

Harris-H的博客 706

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、付费专栏及课程。

余额充值