# Json-Rpc 分布式服务通信框架 **Repository Path**: island0920/Json-Rpc ## Basic Information - **Project Name**: Json-Rpc 分布式服务通信框架 - **Description**: Json-Rpc 项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-13 - **Last Updated**: 2025-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Json-Rpc项目 ## 介绍 🔥`RPC(Remote Procedure Call)`远程过程调用,是一种通过网络从远程计算机上请求服务,而不需要了解底层网络通信细节。 - `RPC` 可以使用多种网络协议进行通信,如HTTP、TCP、UDP等,并且在 `TCP/IP` 网络四层模型中跨越了传输层和应用层。简言之RPC就是像调用本地方法一样调用远程方法 - 包含:序列化协议、通信协议、连接复用、服务注册、服务发现、服务订阅和通知、负载均衡、服务监控、同步调用、异步调用 该项目是基于JsonCpp/muduo网络库实现的RPC通信框架,提供不同服务间高效可靠的通信。具备服务注册/发现/调用,主题创建/删除/订阅/发布等核心功能,并支持同步/异步/回调三种调用方式 ## 项目架构 - 框架设计:分布式架构的形式,框架分三层进行设计 --(抽象层,实现层,业务层) - 抽象:针对底层的网络通信和协议部分进行了抽象,降低框架的依赖,提高框架的灵活度,以及可维护性 - 实现:针对抽象的功能进行具体的实现(muduo库搭建高性能客户端服务器,TLV应用层协议格式,消息类型) - 业务:基础rpc,服务发现与注册以及上线/下线通知,发布订阅。 ## 项目特点 1. 模块化设计与JSON序列化:整体采用模块化设计,使用JSONCPP进行消息的序列化与反序列化,方便调试与扩展。 2. 动态服务治理:实现服务注册中心,支持服务的动态注册、发现、上线与下线通知,提高系统灵活性和可用性。 3. 发布/订阅消息系统:内建Topic机制,支持消息的发布与订阅,适用于异步通信和事件驱动场景。 4. 基于Muduo的高性能网络通信:利用Muduo网络库处理底层TCP连接与事件驱动,保证通信效率。 5. 灵活的调用方式:客户端支持同步、异步和回调请求调用,适应不同业务需求。 ## 安装教程 由于 Centos 7 已在 2024-06 停止了维护,因此这个项目是基于 Ubuntu 22.04 的实现,这里还用到了 Json库、muduo 库 ① 安装 wget -- 一般默认情况下都有 ```bash sudo apt-get install wget ``` ② 更新国内软件源 先备份原来的 /etc/apt/source.list 文件 ```bash sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 比如 lighthouse@VM-8-10-ubuntu:~$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak lighthouse@VM-8-10-ubuntu:~$ ls /etc/apt/ apt.conf.d keyrings sources.list sources.list.curtin.old trusted.gpg.d auth.conf.d preferences.d sources.list.bak sources.list.d ``` 添加软件源文件内容,新增以下内容 ```bash # 先打开源文件 sudo vi /etc/apt/source.list deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse #添加清华源 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse ``` 新增完毕后,更新源 ```bash sudo apt-get update ``` ③ 安装 lrzsz 传输工具 ```bash sudo apt-get install lrzsz rz --version rz (lrzsz) 0.12.20 ``` ④ 安装高版本 gcc/g++ 编译器 ```bash sudo apt-get install gcc g++ ``` ⑤ 安装项目构建工具 make 和 cmake ```bash sudo apt-get install make sudo apt-get install cmake cmake --version cmake version 3.22.1 ``` ⑥ 安装调试器 gdb ```bash sudo apt-get install gdb ``` ⑦ 安装 git ```bash sudo apt-get install git git --versio ``` ⑧ 安装 Jsoncpp 库 ```bash sudo apt-get install libjsoncpp-dev # 安装成功之后 ls /usr/include/jsoncpp/json/ allocator.h config.h json_features.h reader.h version.h assertions.h forwards.h json.h value.h writer.h ``` ⑨ 安装 Muduo - 下载源码 ```bash # git⽅式 [zsc@node ~]$ git clone https://github.com/chenshuo/muduo.git ``` - 安装依赖环境 ```bash sudo apt-get install libz-dev libboost-all-dev ``` 运行脚本编译安装 ```bash unzip muduo-master.zip ./build.sh ./build.sh install ``` ### 个人博客讲解 - [Json-Rpc 学习](https://blog.csdn.net/island1314/category_12921727.html) ### 参考 https://zhuanlan.zhihu.com/p/460646015 https://zhuanlan.zhihu.com/p/33298916 源码:https://github.com/cinemast/libjson-rpc-cpp 源码:https://github.com/qicosmos/rest_rpc