集群和分布式
有这样一个单机服务器,多个模块提供了下面这些功能
分布式相比单机服务器的好处
- 系统中,有些模块属于CPU密集型的,有些模块属于I/O密集型的,各模块对硬件的需求是不一样的
- 单机服务器中任意模块的修改,会导致整个项目代码的重新编译部署
分布式通信框架要考虑:
模块怎么划分?
机器1上的模块怎么调用机器2上的模块的一个业务方法?
机器1上的一个模块进程1怎么调用机器1上的模块进程2里面的一个业务方法呢?
RPC通信原理
主要包括两部分:
黄色部分:涉及rpc方法参数的打包和解析,也就是数据的序列化和反序列化,用protobuf
做RPC
方法调用的序列化和反序列化。
绿色部分:网络部分,包括寻找rpc服务主机,发起rpc调用请求和响应rpc调用结果,使用muduo网络库和zookeeper服务配置中心(服务发现)
项目代码工程目录
bin:可执行文件
build:项目编译文件
lib:项目库文件
src:源文件
test:测试代码
example:框架代码使用范例
CMakeLists.txt:顶层的cmake文件
README.md:项目自述文件
autobuild.sh:一键编译脚本
业界优秀的RPC框架
业界优秀的RPC框架:百度的brpc,google的grpc
- 施磊——【高级】C++项目-实现分布式网络通信框架-rpc通信原理