栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

集群和分布式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

集群和分布式

集群

参考之前写的***集群***聊天系统,做了模块化设计,每一个模块都包含很多特定的业务,如下几个缺点:

  • 1.受限于硬件资源,聊天服务器所能承受的用户的并发量
  • 2.任意模块的修改,都会导致整个项目代码重新编译、部署
  • 3.系统中,有些模块属于CPU密集型的,有些模块属于I/O密集型的,造成各模块对于硬件资源的需求不一样的。
单机服务器切换到集群服务器

单机服务器

集群服务器

  • 1.在水平方向扩建机器 ,每一台服务器都独立的运行了一台聊天服务器,解决了受限于硬件资源。
  • 2.但重新编译、部署更加困难了。编译一套代码,在多个机器上部署。
  • 3.问题3还是没有解决,模块还是没有单独的去机器部署。但我们可以发现后台管理这样的模块,权限太大,只需要一点点资源,不需要高并发。像后台管理这样的模块,只需要把他部署在一台服务器上就够了,不需要多次部署。
所有服务器共同构成一个聊天系统


分布式里面还可以包含集群。甚至可以把用户管理放在server2里面。

  • 因为分布式把模块从整体拆分出来,每一个模块编译成独立运行小的服务,如果后台管理出问题了,我们只需要把后台管理模块重新编译,其余模块不需要。而且后台模块在server3,我们只需要把server3机器上的模块重新更新就完事了。解决了第二个问题
  • 第三个问题很明显,如果后台管理是CPU密境 我们给这个服务器安装好的CPU资源.
  • 当然分布式服务器忽然挂掉,这样又要说到容灾这些问题,主备服务器,高可用。
集群和分布式

集群:每一台服务器独立运行一个工程的所有模块。
分布式:一个工程拆分了很多模块,每一个模块独立部署运行在一个服务器主机上,所有服务器协同工作共同提供服务,每一台服务器称作分布式的一个节点,根据节点的并发要求,对一个节点可以再做节点模块集群部署。

分布式问题
  • 1.大系统的软件模块该怎么划分
    各个模块可能会实现大量重复的代码
  • 2.各个模块之间该怎么访问?
    各个模块都运行不同的进程里面
    机器1上的模块怎么调用机器2上的模块的一个业务方法呢
    机器1上的一个模块进程1怎么调用机器1的模块进程2里面的一个业务方法呢
RPC通信原理

RPC(Remote Procedure Call Protocol)远程过程调用协议。


黄色部分:设计rpc方法参数的打包和解析,也就是数据的序列化和反序列化,使用Protobuf。
绿色部分:网络部分,包括寻找rpc服务主机,发起rpc调用请求和响应rpc调用结果,使用muduo网络库和zookeeper服务配置中心(专门做服务发现)。
mprpc框架主要包含以上两个部分的内容。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/886067.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号