本项目为C++11编写的轻量级网络库和简易RPC框架。
- 网络库实现了事件注册、事件通知模块及定时任务。
- 简易RPC框架提供了远程调用的同步和异步接口,使用Redis作为注册中心,并实现了客户端的负载均衡。
* OS: Ubuntu 18.04
* Complier: g++ 7.4.0
名称 | 作用 |
---|---|
google protobuf | 序列化反序列化 |
zlib | 奇偶校验 |
hiredis | Redis注册中心客户端 |
openssl | MD5计算Hash值 |
- 使用Epoll边沿触发的IO多路复用技术,非阻塞IO,使用Reactor模式
- 主线程只负责accept请求,并以Round Robin的方式分发给其它IO线程(兼计算线程),锁的争用只会出现在主线程和某一特定线程中
- 使用eventfd实现了线程的异步唤醒
- 使用timerfd和红黑树管理定时器
- 使用智能指针等RAII机制进行资源管理防止内存泄漏
- 支持优雅关闭连接和服务器的主动关闭
- Redis作为注册中心,使用TCP server的事件注册和通知模块作为网络库实现Redis的异步调用
- 客户端部署多种负载均衡算法:Consistent Hash算法、LeastUnreplied算法
- 提供了多种调用接口sync和async(返回future结构),支持注注册Callback函数
- 设计了基于Bounded Blockingqueue的Redis连接池以及针对客户端的RPC连接池,避免连接的频繁创建销毁的开销