基于C++的分布式RPC框架(一)

开发环境配置

我使用的系统是Ubuntu22.04,为了确保所有配置的准确无误,请尽量选择和我一样的系统环境。需要配置的主要有三个部分:

基础环境安装:

bash 复制代码
sudo  apt-get update
sudo apt-get install -y g++ unzip  cmake build-essential autoconf automake libtool curl make

boost库安装:

muduo网络库依赖于boost库,所以需要在安装muduo网络库之前安装boost库,muduo库的安装比较复杂,这里暂时先按下不表。

bash 复制代码
sudo apt-get install -y libboost-all-dev

protobuf (protocol buffers)

protobuf用于生成序列化和反序列化的数据。有两种安装方式,一种是直接使用linux命令安装

bash 复制代码
sudo apt-get install protobuf-compiler libprotobuf-dev

另一个种是到官网下载压缩包[github.com/protocolbuf...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fprotocolbuffers%2Fprotobuf%2Freleases%3Fpage%3D16 "https://github.com/protocolbuffers/protobuf/releases?page=16") ,解压编译安装

bash 复制代码
解压压缩包:unzip protobuf-cpp-3.11.0.zip
进入目录:cd  protobuf-cpp-3.11.0
自动生成配置文件./autogen.sh
配置环境:./configure
编译源代码:make
安装:sudo make install 
刷新动态库:sudo ldconfig

检查是否安装完成

bash 复制代码
protoc  --version

glog安装

glog是google的一个日志库,用于打印日志信息

bash 复制代码
sudo apt-get install libgoogle-glog-dev libgflags-dev

muduo网络库的安装

首先去官网下载muduo网络库2.0.2版本并解压[github.com/chenshuo/mu...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fchenshuo%2Fmuduo%2Farchive%2Frefs%2Ftags%2Fv2.0.2.zip "https://github.com/chenshuo/muduo/archive/refs/tags/v2.0.2.zip")

bash 复制代码
编译:./build.sh
进入编译后的目录:cd ../build/release-install-cpp11 
将头文件移动到系统默认路径:mv include/muduo /usr/include/ 
将动态库移动到系统默认路径:mv lib/* /usr/local/lib/ 
检查是否成功:find /usr/include/muduo

java安装

zookeeper需要依赖于java,在安装zookeeper前需要安装openjdk或jdk

linux命令安装

bash 复制代码
sudo apt install openjdk-11-jdk

手动安装

  • 从官网下载jdk指定版本.tar.gz包,解压到指定目录(如/usr/lib/jvm):

    bash 复制代码
    sudo tar -zxvf jdk指定版本.tar.gz -C /usr/lib/jvm
  • 配置环境变量(编辑~/.bashrc/etc/profile):

    bash 复制代码
    export JAVA_HOME=/usr/lib/jvm/具体jdk目录
    export PATH=$JAVA_HOME/bin:$PATH
  • 生效配置:source ~/.bashrc

zookeeper和zookeeper API 安装

自动安装和启动

bash 复制代码
安装zookeeper :sudo apt-get install -y zookeeperd 
安装api :sudo apt-get install -y  libzookeeper-mt-dev
启动服务:sudo  systemctl  start zookeeper

手动安装和启动

bash 复制代码
zookeeper
1、官网下载解压包 unzip  zookeeper-3.4.10.zip
2、zookeeper-3.4.10$ cd conf
zookeeper-3.4.10/conf$ mv zoo_sample.cfg zoo.cfg
3、进入bin目录,启动zkServer, ./zkServer.sh start
4、可以通过netstat查看zkServer的端口,在bin目录启动zkClient.sh链接zkServer,熟悉zookeeper怎
么组织节点

zookeeper的原生开发API(c/c++接口)
进入上面解压目录src/c下面,zookeeper已经提供了原生的C/C++和Java API开发接口,需要通过源码
编译生成,过程如下:
~/package/zookeeper-3.4.10/src/c$ sudo ./configure
~/package/zookeeper-3.4.10/src/c$ sudo make
~/package/zookeeper-3.4.10/src/c$ sudo make install

查看服务是否启动

bash 复制代码
netstat -na | grep 2181

拉取项目代码

我用的是代码随想录的Krpc代码:github.com/youngyangya...

在我的电脑上运行的时候,我发现配置文件test.conf在解析出ip和端口的时候会出现\r,会导致服务启动失败。 因此需要对代码进行一些修改,另外example下的Kclient.cc中的调用次数要减少,不然客户端也会报错。最后提醒一下zookeeper一定要启动

Krpcprovider.cc

zookeeperutil.cc

Kclient.cc

运行

bash 复制代码
第一步:进入到Krpc文件
cd Krpc
第二步:然后进入到example文件夹下,找到user.proto文件执行以下命令,
重新生成user.pb.h和user.pb.cc,注意是重新生成!!!!!!!!!:
cd example
protoc --cpp_out=.user.proto
第三步:进入到src文件下,找到krpcheader.proto文件同样会生成如上pb.h和pb.cc文件
cd src
protoc--cpp_out=.Krpcheader.proto
第四步:生成项目可执行程序
mkdir build && cd build && cmake ..&& make -j${nproc}
第五步:进入到bin文件夹下,分别运行./server和./client,即可完成服务发布和调用。
进入bin文件:
cd bin
运行server可执行程序:
./server -i./test.conf
运行client可执行程序:
./client -i./test.conf

到这里就运行成功啦~

相关推荐
Mortalbreeze7 分钟前
C++11 ---- 引用折叠、完美转发、可变模板参数、emplace系列接口
开发语言·c++
星恒随风7 分钟前
C++ 内存管理详解:从内存分区、malloc/free 到 new/delete
开发语言·c++·笔记·学习
C+++Python9 分钟前
C++ 常量全面讲解
java·开发语言·c++
江屿风9 分钟前
C++图论基础拓扑排序经典OJ题流食般投喂
开发语言·c++·笔记·算法·图论
C+-C资深大佬12 分钟前
C++ 数字与字符串互转
java·c++·算法
小灰灰搞电子16 分钟前
C++ boost::asio 详解:网络编程领域的“瑞士军刀“
网络·c++·boost
玖玥拾9 小时前
C/C++ 基础笔记(十四)多态与模板编程
c语言·c++·多态·模板
Roann_seo%10 小时前
C++文件操作完全指南:从文本读写到二进制文件处理
开发语言·c++
坚果派·白晓明11 小时前
【鸿蒙PC】SDL3 适配:AtomCode + Skills 快速集成 NAPI 测试工具
c++·华为·ai编程·harmonyos·atomcode
凡人叶枫11 小时前
Effective C++ 条款17:以独立语句将 newed 对象置入智能指针
java·linux·开发语言·c++·算法