【C++从零实现Json-Rpc框架】第六弹——服务端模块划分

【C++从零实现Json-Rpc框架】第六弹——服务端模块划分

一、前言

        在第五弹中我们对项目的功能进行了讲解,接下来我们就服务端的角度,来设计对应模块,帮助服务端实现项目的三个功能:

●  rpc调用

● 服务的注册与发现以及服务的下线/上线通知

● 消息的发布订阅

二、正文

1. 服务端的功能需求

在进行服务端具体的模块划分之前,我们先来明确下服务端的功能需求

● 基于网络通信接受客户端的请求,提供rpc服务

● 基于网络通信接受客户端的请求,提供服务注册与发现,上线&下线通知

●  基于网络通信接受客户端的请求,提供主题操作(创建/删除/订阅/取消),消息发布

2. 服务端的模块划分 

基于上述的功能,我们对服务端可以划分出这么几个模块

Network:网络通信模块

Protocol: 应用层通信协议模块

Dispatcher:消息分发处理模块

RpcRouter: 远端调用路由功能模块

Publish-Subcriber: 发布订阅模块

Registry-Discovery:服务注册/发现/上线/下线功能模块

Server:基于以上模块整合而出的服务端模块

3. Network模块

该模块为网络通信模块,实现底层的网络通信功能,这个模块本质上也是一个比较复杂庞大的模块块,由于项目的重点在于Rpc,因此该模块我们使用陈硕大佬的Muduo库来进行搭建

4. Protocol

当我们有了Network模块,双方就可以进行通信了,但是由于采取的TCP协议,因此数据在传输的时候,有可能会出现粘包问题,因此就需要存在应用层通信协议模块:解析数据,解决通信中有可能存在的粘包问题,能够获取到一条完整的消息

在前面的muduo库的基本使用中,我们能够知道想要让一个服务端/客户端对消息处理,就要设置一个onMessage的回调函数,在这个函数中对收到的数据进行应用层协议处理

而Protocol模块就是网络通信协议模块的设计,也就是在网络通信中,我们必须设计一个应用层的网络通信协议出来,以解决网络通信中可能存在的粘包问题,而解决粘包问题有三种方式:特殊字符间隔,定长,LV格式

     

Read more

2025华为OD机试真题+全流程解析+备考攻略+经验分享+Java/python/JavaScript/C++多种语言最佳实现

2025华为OD机试真题+全流程解析+备考攻略+经验分享+Java/python/JavaScript/C++多种语言最佳实现

华为OD全流程解析,备考攻略 快捷目录 * 华为OD全流程解析,备考攻略 * 一、什么是华为OD? * 二、什么是华为OD机试? * 三、华为OD面试流程 * 四、华为OD薪资待遇及职级体系 * 五、ABCDE卷类型及特点 * 六、题型与考点 * 七、机试备考策略 * 八、薪资与转正 * 九、常见问题解答 * 十、总结 * 2025 华为OD 机试真题 B卷 100分题型 * 2025 华为OD 机试真题 B卷 200分题型 * 2025 华为OD 机试真题 A卷 100分题型 * 2025 华为OD 机试真题 A卷 200分题型 一、什么是华为OD? 华为OD(Outsourcing Dispacth)

By Ne0inhk
【Python基础】(五)Python 库使用全攻略:从标准库到第三方库,让开发效率翻倍

【Python基础】(五)Python 库使用全攻略:从标准库到第三方库,让开发效率翻倍

目录 编辑 前言 一、Python 库的核心认知:什么是库?为什么要用库? 1.1 库的本质:现成的 "代码工具箱" 1.2 库的分类:标准库 vs 第三方库 (1)标准库:Python 自带的 "基础工具箱" (2)第三方库:全球开发者共建的 "扩展工具箱" 1.3 使用库的核心优势:效率翻倍的关键 二、标准库实战:内置工具的高效用法 2.1 日期时间处理:datetime库(计算日期差、格式转换) 实战需求:计算你和心爱的人认识多少天 扩展用法:

By Ne0inhk
【开源工具】超全Emoji工具箱开发实战:Python+PyQt5打造跨平台表情管理神器

【开源工具】超全Emoji工具箱开发实战:Python+PyQt5打造跨平台表情管理神器

🌟 超全Emoji工具箱开发实战:Python+PyQt5打造跨平台表情管理神器 🌈 个人主页:创客白泽 - ZEEKLOG博客 🔥 系列专栏:🐍《Python开源项目实战》 💡 热爱不止于代码,热情源自每一个灵感闪现的夜晚。愿以开源之火,点亮前行之路。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更多人哦 📖 概述 在当今数字化社交时代,Emoji已成为全球通用的视觉语言。本文介绍如何使用Python和PyQt5开发一个功能全面的Emoji工具箱,包含完整的Unicode 14.0标准表情库,提供分类浏览、智能搜索和快捷复制等功能。该项目具有以下技术亮点: * 采用MVC架构设计 * 支持跨平台运行(Windows/macOS/Linux) * 实现高性能的emoji渲染和搜索 * 提供现代化的UI交互体验 * 完整包含1800+个标准emoji 🎯 功能特性 1. 全量Emoji集合 * 涵盖9大分类体系 * 每个emoji包含官方名称标注 * 支持最新Unicode 14.0标准 2. 智能搜索系统 * 支持中文

By Ne0inhk
Python中的__slots__:减少内存占用的高级技巧

Python中的__slots__:减少内存占用的高级技巧

「编程类软件工具合集」 链接:https://pan.quark.cn/s/0b6102d9a66a 在Python开发中,内存管理是性能优化的关键环节。当需要处理大量对象时,普通类的动态属性存储机制会带来显著的内存开销。__slots__作为Python的高级特性,通过限制实例属性存储方式,能有效减少内存占用并提升访问速度。本文将从内存优化原理、实践技巧、继承场景处理及典型应用场景四个维度,深入解析这一特性。 一、动态属性存储的内存代价 Python默认使用字典(__dict__)存储实例属性,这种设计提供了极高的灵活性,但存在内存冗余问题。以存储两个属性的Point类为例: class RegularPoint: def __init__(self, x, y): self.x = x self.y = y 每个实例需维护一个约240字节的__dict__字典,加上对象头信息,总内存占用约56字节。当创建10,000个实例时,仅字典结构就消耗240×10,

By Ne0inhk