很显然啊,这个项目是上一个集群项目的延伸,所以代码的篇幅不会有那么多,就是一些 “易筋” 嘛,主要还是理论 + 实践。
集群:每台服务器独立运行一个工程的所有模块。 分布式:一个工程拆分成多个模块,每一个模块运行在独立的服务器主机上,所有服务器协同工作共同提供服务。每个模块称为一个节点,根据节点的并发需求,可以针对节点再做集群。
对于单机服务器:
1、受限于硬件资源,并发量上不去。 2、整个系统的耦合性太高,模块化的解耦合是有,但是总的来说还是属于一个项目,一旦要更新优化,就要整个项目进行重新编译部署。 3、有些模块属于CPU密集型,有些模块属于IO密集型,全堆在一起了,有点浪费资源,短板效应明显。
对于集群服务器: 1、水平扩充了硬件资源。 2、对于上面那个问题2,嗯。。。心照不宣。 3、对于上述第三个问题,依旧有点尴尬。 4、某一台服务器出问题了不影响其他服务器。
对于分布式服务器: 1、提高了并发性能。 2、将模块解耦合。 3、可以将CPU密集型的服务器放在CPU好的服务器上,IO密集型的放到带宽好的服务器上,需要做大量存储的模块放到硬盘大的服务器上、、、 4、某个节点挂了,就GG了。
所以,处于扬长避短,我们采用:集群 + 分布式 的服务器部署模式。 (本系列不讲容灾备份,技术不太够,只听说过一点理论,没试过)
1、各模块之间可能会存在大量重复的代码(时间推移,各管一块,就有可能出现重复) 2、各模块之间怎么互相访问? 3、哪些模块需要做容灾?做集群?
这个项目就是来写一个分布式网络通信的框架,除了容灾,本篇提出的问题都会得到解答。