集群聊天服务器:集群与分布式理论
前言
在聊天服务器项目中实现了集群,在这里根据该项目来讲解一下单机、集群与分布式理论。
单机服务器
图示:
单机服务器的性能瓶颈:
- 所能承受的用户并发量受限于硬件资源,32位Linux最多支持两万并发量。
- 运维困难,任意模块的修改都需要整个项目的重新编译、部署。
- 系统中,有些模块属于CPU密集型,有些模块属于I/O密集型的。造成各模块对硬件资源的需求是不同的。
集群服务器
集群:每一台服务器独立运行一个工程的所有模块。
优点:
性能提升了,用户的并发量提升了;部署方式简单(扩充多台服务器)。
缺点:
- 项目代码还是需要重新编译,而且需要多次部署。
- 后台管理模块用户本来就不多,所以根本不需要高并发,但却部署在了多台服务器上。
分布式系统
分布式:一个工程拆分了很多模块,每一个模块独立部署运行在一个服务器主机上,所有服务器协同工作共同提供服务,每一台服务器称作分布式的一个节点,根据节点的并发要求,对一个节点可以再做节点模块集群部署。
分布式系统解决了单机服务器的缺点:
- 解决了并发能力,而且如果想要在提升并发量的话,可针对性的改良,比如对如图所示的分布式结点1进行扩充多台服务器。
- 运维方便,某个业务出现bug,只需要对相对应的结点进行重新编译、部署。
- 有些业务属于CPU密集型,有些属于I/O密集型,可以将CPU密集型的业务部署在CPU性能强的机器上,其他资源可以相对弱一些;I/O密集型的业务部署在内存和磁盘性能强的机器上。这样的设计,系统和成本都得到了优化。
问题:
4. 大系统的软件模块该怎么划分?因为各模块可能会出现大量重复代码。
5. 各模块之间怎么访问?机器1上的模块怎么调用机器2上的模块的一个业务方法?机器1上的一个模块进程1怎么调用机器1上的模块进程2里面的一个业务方法呢?
如图:针对于这两个server之间的桥梁,就是需要实现的分布式网络通信框架。在后面的项目学习中会解决这些问题。