单机,集群和分布式概念

单机的局限性:

1.受限于硬件资源,单机所能承受的用户并发量太少;

2.一个系统有多个模块,任意模块的修改都会导致整个项目代码重新编译、部署;

3.系统中,有些模块是CPU密集型,有些模块是I/O密集型,造成各个模块对于硬件资源的需求是不一样的。

集群:

负载均衡

集群的优点?

性能提升了,用户的并发量提升了,因为水平扩充了硬件资源;

部署简单。
集群的缺点?

1、项目代码还是需要整体重新编译,而且需要进行多次部署。

2、系统中有些模块是属于CPU密集型(计算量大的),有些模块是属于I/O密集型的(接触输入输出,网络IO),造成各模块对硬件资源的需求是不一样。

并不是说机器多,并发量就上来,性能就高。像一些使用不多的模块,不需要高并发,所以也就不需要分别部署在三台机器上,不常用的模块只需要部署在一台机器上就好

分布式:

集群:每一台服务器独立运行一个工程的所有模块。

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

分布式优点:

1.对于并发量大的模块我们单独处理,单独加集群;

2.假如其中一个模块出问题了,我们只需要修改一个模块就可以了;

3.把CPU密集型的模块部署在CPU资源好的机器上。把内存小的模块部署在硬盘资源少的机器上。把IIO密集型的模块部署在CPU不是很好的机器上。

4、有的模块要求并发能力高,可以进行多机器集群部署。有的模块并发能力小,部署在一台机器就可以。

5、配置着高可用,容灾,主备服务器,不用担心就---套系统挂掉了怎么办。

分布式问题:

1、大系统的软件模块该怎么划分?

  • 各模块可能实现大量重复的代码!
  • 模块和模块之间的界线不清晰(有的模块里面的函数调动另一个模块的函数代码)。
  • 处理不好,造成大量重复代码。而且你改你的,我改我的,重复的公共代码就出问题了,变成不可控制了。
  1. 各个模块之间如何通信?

两个模块之间rpc通信协议,交互。

相关推荐
Wang's Blog15 小时前
Elastic Stack梳理:Logstash Input插件详解与Codec插件应用指南之文件监控、多行日志处理与Kafka集成
分布式·搜索引擎·kafka·elastic search
int WINGsssss16 小时前
【无标题】
pytorch·分布式·python
小安同学iter17 小时前
天机学堂day05
java·开发语言·spring boot·分布式·后端·spring cloud·微服务
孟意昶17 小时前
Doris专题27-mysql兼容性与join连接
大数据·数据库·分布式·sql·mysql·doris
Wang's Blog17 小时前
Elastic Stack梳理:Logstash线程模型与多实例部署解析
分布式·elastic search
西岭千秋雪_17 小时前
MySQL日志梳理(存储引擎层)
java·数据库·分布式·mysql·oracle
小白|18 小时前
OpenHarmony + Flutter 混合开发进阶:构建支持离线优先、边缘同步与冲突解决的分布式数据应用
分布式·flutter
张人玉19 小时前
大数据hadoop系列——在ubuntu上安装HBase 伪分布式
大数据·hadoop·分布式·hbase
闲人编程20 小时前
API限流、鉴权与监控
分布式·python·wpf·限流·集群·令牌·codecapsule
苦学编程的谢20 小时前
RabbitMQ_4_高级特性(1)
分布式·rabbitmq