单机、集群和分布式相关概念理解

单机、集群和分布式相关概念理解

单机

一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后把这个项目部署在一台服务器上就可以了。整个项目的所有服务都由这台服务器提供。这就是单机结构。但是单机结构的缺点非常明显,当业务量增加到一定程度的时候,单机的硬件资源无法满足业务要求(单机容量问题),此时出现了集群模式。

集群

单机处理达到瓶颈的时候,将单机复制几份,这样就构成了一个集群。集群中每台服务器就叫做这个集群的一个节点,所有节点构成一个集群。每个节点都提供相同的服务,这样系统的处理能力就相当于提升了好几倍。

但这里需要考虑的一个问题是,用户的请求由哪个服务器来处理呐?

—让此时负载较小的节点来处理,这样使得每个节点的压力都比较平均。

因此,我们需要在所有节点之前增加一个负载均衡服务器,用户所有的请求都交给他,然后负载均衡器根据当前所有节点的负载情况,决定将这个请求交给哪个节点进行处理。

但是,当业务发展到一定程度的时候,发现无论怎么增加节点,整个集群的性能提升效果不明显了,这个时候,我们需要使用分布式。

这里,发现从单机结构到集群结构,代码基本不需要做任何修改,仅仅是多部署几台服务器,每台服务器上运行相同的代码就行了。

分布式

分布式,就是将一个完整的系统按照业务功能,拆分成一个个的独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,他们通过RPC方式通信。

比如秒杀系统项目中,我们需要按照功能模块拆分成多个独立的服务:用户服务,商品服务,订单服务,库存服务等。这一个个服务都是一个独立的项目,可以独立运行。如果服务之间有依赖关系,可以通过RPC方式调用。降低了系统之间的耦合度,可以独立开发,独立部署,独立测试。

分布式就是将后台工作分布在多个服务器上,多个服务器协同完成工作

分布式系统出现的问题

数据不一致问题

秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。(读写冲突)

通信异常

分布式系统将原有的单机通信,变成各个节点依赖网络进行通信,由于网络本身的不可靠性,都会导致分布式系统无法顺利完成一次网络通信。即使完成了一次通信,也需要考虑时间上的延迟。

如何实现分布式事务

订单服务插入之后要调用库存服务更新库存,库存数据不是特别敏感,不需要强一致性,可以通过最终一致性方案实现。

订单服务和库存服务,每个服务维护了自己的数据库,在交易系统的业务逻辑中,一个商品在下单前需要先调用库存服务,进行扣除库存,再调用订单服务,创建订单记录。正常情况下,两边数据库各自更新成功,两边数据维持着一致性。但是在非正常情况下,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值