从零开始实现RPC框架---------项目介绍及环境准备

news2024/12/25 12:38:37

一,介绍

RPC(Remote Procedure Call)远程过程调⽤,是⼀种通过⽹络从远程计算机上请求服务,⽽不需要 了解底层⽹络通信细节。RPC可以使⽤多种⽹络协议进⾏通信, 如HTTP、TCP、UDP等, 并且在 TCP/IP⽹络四层模型中跨越了传输层和应⽤层。简⾔之RPC就是像调⽤本地⽅法⼀样调⽤远程⽅法。 过程可以理解为业务处理、计算任务,更直⽩的说,就是程序/⽅法/函数等,就是像调⽤本地⽅法⼀样 调⽤远程⽅法。

 二,该项目的基本模块

我们的项⽬是基于C++、JsonCpp、muduo⽹络库实现⼀个简单、易⽤的RPC通信框架,即使是不懂 ⽹络的开发者也可以很快速的上⼿,它实现了同步调⽤、异步callback调⽤、异步futrue调⽤、服务注 册/发现,服务上线/下线以及发布订阅等功能设计。虽然没有实现一个完整的RPC框架,但是这个项目仍然值得我们学习。

三,项目环境准备

该项目在ubuntu22.04环境下实现,在开始项目的学习时首先要搞定的就是项目环境的搭建。下面我们就来安装下该项目要使用到的工具。

//安装wget
sudo apt install wget
//安装lrzsz工具
sudo apt-get install lrzsz
//安装gcc/g++编译器
sudo apt-get install gcc g++
//安装项目构建工具make
sudo apt-get install make
//安装gdb调试工具
sudo apt-get install git
//安装cmake工具
sudo apt-get install cmake
//安装git
apt install git
//安装jsoncpp库
sudo apt-get install libjsoncpp-dev
//安装muduo库
git clone https://github.com/chenshuo/muduo.git
//安装依赖环境
sudo apt-get install libz-dev libboost-all-dev

 因为muduo库是在github上面下载下来的,所以需要解压并编译。指令如下:

unzip muduo-master.zip

./build.sh

./build.sh install

当执行玩上面的安装muduo库的文件后便会在以下路径下看到muduo库的存在

四,结语

按照上面的步骤搭建好项目环境后,便可以开始做项目了。 

 

 

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

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

相关文章

匿名方法与Lambda表达式+泛型委托

匿名方法 和委托搭配使用,方便我们快速对委托进行传参,不需要我们定义一个新的函数,直接用delegate关键字代替方法名,后面跟上参数列表与方法体。 格式:delegate(参数列表){方法体} lambda表达式 是匿名方法的升级…

Brave编译指南2024 MacOS篇-环境配置(四)

引言 在上一篇文章中,我们成功获取了Brave浏览器的源代码。现在,我们将进入编译过程的关键阶段:环境配置。正确的环境配置对于成功编译Brave浏览器至关重要,它能确保所有必要的工具和依赖项都已就位,并且版本兼容。 …

JAVAIDEA初始工程的创建

四结构 建工程综述* 初始*: 1、先建个空项目, 2、打开文件中的项目结构新建module模块(模块下有src) 修改模块名: 也是Refactor,Rename,但是要选第三个同时改模块和文件夹名字 导入模块&am…

【Python】ftfy 使用指南:修复 Unicode 编码问题

ftfy(fixes text for you)是一个专为修复各种文本编码错误而设计的 Python 工具。它的主要目标是将损坏的 Unicode 文本恢复为正确的 Unicode 格式。ftfy 并非用于处理非 Unicode 编码,而是旨在修复因为编码不一致、解码错误或混合编码导致的…

【Python】path:简化文件路径处理的 Python 库

path 是一个 Python 库,提供了对文件系统路径的简洁抽象,使文件和目录操作更加直观和 Pythonic。该库建立在 pathlib 的基础上,扩展了文件路径处理的功能,使得开发者能够更高效地进行文件操作,如文件读写、目录遍历、路…

Redis缓存穿透雪崩击穿及解决

封装缓存空对象解决缓存穿透与逻辑过期解决缓存击穿工具类 Slf4j Component public class CacheClient {private final StringRedisTemplate stringRedisTemplate;public CacheClient(StringRedisTemplate stringRedisTemplate) {this.stringRedisTemplate stringRedisTemplat…

《Linux从小白到高手》理论篇(十一):Linux的系统环境管理

值此国庆佳节,深宅家中,闲来无事,就多写几篇博文。本篇详细深入介绍Linux的系统环境管理。 环境变量 linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每…

震撼!AI造声新标杆,20字生成完美音频

震撼!AI造声新标杆,20字生成完美音频 EzAudio是一款革命性的文本到音频生成AI🎶,快速生成高质量音频,告别机械音🔊。它能将文字瞬间变成音乐和配音,为创作增添无限可能✨!快来体验这…

源2.0全面适配百度PaddleNLP,大模型开发开箱即用

近日,源2.0开源大模型与百度PaddleNLP完成全面适配。用户通过PaddleNLP,可快速调用源2.0预训练大模型,使用源2.0在语义、数学、推理、代码、知识等方面的推理能力,也可以使用特定领域的数据集对源2.0 进行微调,训练出适…

C++11_lambda

lambda表达式 在C98中,如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法。比如说,我想在某宝买一件商品,我想买该商品价格最便宜的哪一个,这就需要对价格排升序;我如果想买性价比最高的&…

AAC-Fe³⁺水凝胶,兼具拉伸性与导电性,还有自修复和4D打印能力

大家好!今天我们来了解一种用于可拉伸电子产品的创新材料——自修复和4D打印水凝胶——《Self‐Healable and 4D Printable Hydrogel for Stretchable Electronics》发表于《Advanced Science》。在科技发展中,可拉伸电子产品需求大增,但现有…

我尝试了LangGraph Studio的AI Agent功能

构建一个真正“智能”的Agent——一个能够理解语言、做出决策并进行有意义互动的Agent——并不像编写几行代码那么简单。 它需要对AI原理和软件工程有深刻的理解。 此外,传统的软件工具并不适合Agent的开发,无法满足其独特需求。 这也是像LangGraph S…

【数据分享】2001-2023年我国省市县镇四级的逐月平均气温数据(免费获取/Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月平均气温栅格数据,该数据来源于国家青藏高原科学数据中心。为方便大家使用,我们还基于上述平均气温栅格数据将数据处理为Shp和Excel格式的省市县三级逐月平均气温数据(可查看之前的文章获悉详情&#…

10.2今日错题解析(软考)

目录 前言面向对象技术——设计模式的应用场景系统开发基础——概要设计与详细设计 前言 这是用来记录我备考软考设计师的错题的,今天知识点为设计模式的应用场景、概要设计与详细设计,大部分错题摘自希赛中的题目,但相关解析是原创&#xf…

银河麒麟V10如何配置外网yum源?

银河麒麟V10如何配置外网yum源? 一、常用的软件源地址二、配置yum源的步骤1. 打开终端2. 进入yum配置文件目录3. 编辑或创建.repo文件4. 配置软件源信息5. 保存并退出6. 更新软件包列表7. 验证软件源 💖The Begin💖点点关注,收藏不…

三色标记算法

三色标记算法 GC---> 标记(可达性算法)---> 根据不同算法去处理回收 STW:GC时对程序暂停处理下垃圾。不暂停,就会一直制造垃圾,清理不干净。暂停就会阻塞期间请求,影响系统性能 三色标记&#xff…

媒介坊:软文自助发布平台,开启营销新篇章

在数字化时代,企业营销的方式日新月异,软文作为一种高效、低成本的营销手段,越来越受到企业的青睐。然而,如何在众多媒体中精准投放软文,实现品牌的有效传播,成为了众多企业关注的焦点。媒介坊软文自助发布…

闯关训练三:Git 基础知识

任务1: 破冰活动:自我介绍 点击Fork目标项目,创建一个新的Fork 获取仓库链接 在连接好开发机的vscode终端中逐行执行以下代码: git clone https://github.com/KelvinIII/Tutorial.git # 修改为自己frok的仓库 cd Tutorial/ git branch -a g…

在腾讯云上使用docker

第一次使用腾讯云,记录一下过程 因为我平时需求量不大,所以选择的是按需购买 腾讯云服务器购买链接 按照提示一步步往下走,创建实例 如果你不记得密码,那么在下面这幅图中可以重置(选择在线重置,对实例没影响) 因为…

C++——模拟实现vector

1.查看vector的源代码 2.模拟实现迭代器 #pragma oncenamespace jxy {//模板尽量不要分离编译template <class T>class vector{public:typedef T* iterator;//typedef会受到访问限定符的限制typedef const T* const_iterator;//const迭代器是指向的对象不能修改&#xf…