单机服务器
优缺点
优点:实现简单
缺点:
1.受硬件资源的限制,并发量提升不了。
2.数据库压力
3.模块的小修改,导致所有模块都需要重新编译,重新部署,代价太大了
4.有一些模块是cpu密集型,有一些模块是IO密集型,对硬件的资源要求不一样,我们不能合理使用资源。
cpu密集型:对cpu性能要求大一点,对内存,磁盘大小要求不大;
IO密集型:对CPU性能要求不高,对内存容量,磁盘大小,网络带宽要求比较大。
5.有一些模块工作频繁,压力大,有一些模块工作次数少,压力小。资源分配不均匀, 浪费。
集群:
概念
集群是在单机服务器上面,进行水平扩展。水平扩展的意思是增加服务器数量,相当于,一个服务器就是一个单机服务器系统。
优缺点:
优点:并发量提升了,实现简单,方便扩展
缺点:
1.数据库压力
2.模块的小修改,导致所有模块都需要重新编译,重新部署,代价太大了
3.有一些模块是cpu密集型,有一些模块是IO密集型,对硬件的资源要求不一样,我们不能合理使用资源。
cpu密集型:对cpu性能要求大一点,对内存,磁盘大小要求不大;
IO密集型:对CPU性能要求不高,对内存容量,磁盘大小,网络带宽要求比较大。
4.有一些模块工作频繁,压力大,有一些模块工作次数少,压力小。资源分配不均匀, 浪费。
分布式:
概念:
分布式,其实就是将单机服务器的各模块分布在不同服务器上面,不同服务器上面是否需要集群,看性能要求,也就是说,所有节点服务器组合起来才是一个完整的系统。然后分布式系统是否需要集群也看性能要求。
优缺点:
优点:
1.并发量提升
2.模块之间独立,模块的修改,编译不会影响其他模块的工作状态。
3.可以合理使用资源,将模块合理分布在不同服务器上面,比如cpu密集型,IO密集型的服务器配置不一样。
4.控制模块的数量,减轻模块压力,提高模块的性能,提高资源利用率。因为模块化,所以系统模块重用度更高
5.因为软件服务模块被拆分,开发和发布速度可以并行而变得更快
6.系统扩展性更高
缺点:
1、架构设计变得复杂(尤其是其中的分布式事务)
2、部署单个服务会比较快,但是如果一次部署需要多个服务,部署会变得复杂
3、系统的吞吐量会变大,但是响应时间会变长
4、运维复杂度会因为服务变多而变得很复杂
5、架构复杂导致学习曲线变大
6、测试和查错的复杂度增大
7、技术可以很多样,这会带来维护和运维的复杂度
8、管理分布式系统中的服务和调度变得困难和复杂
微服务:
概念:
微服务就是将一个软件的功能进行拆分,比如某个功能经常使用或经常不使用,可以将该功能单独的设计为一个微服务。通过RPC(远程接口调用,一般通过网络进行调用不是部署在同一台机器的)对该功能进行调用(该句的内容包含了分布式的内容)。微服务之间可以使用不同的语言进行书写。只要按照约定的规范发送请求和接收数据。
大白话就是:微服务是分布式里面垂直分割的最小单位。简单来说,微服务”就是非常微小的服务,微服务可以理解为一种非常细粒度的垂直拆分。
优缺点:
优点:相比分布式来说,微服务粒度更加小了,一定程度上完成了解耦。
缺点:和分布式一样
微服务和分布式的区别:
具体可以看下面这个连接