(1) 浅谈分布式架构

2020-11-01  本文已影响0人  吉他手_c156

1. 什么是分布式架构

单体架构

image.png

一个归档包(例如war格式或者Jar格式)包含了所有功能的应用程序,我们通常称之为单体应用。架构单体应用的方法论,我们称之为单体应用架构,这是一种比较传统的架构风格

单体架构拆分
单体架构的优点
单体架构的缺点

集群架构

image.png

当单体架构无法承受日益增加的访问量,服务器性能出现瓶颈,通过集群架构进行横向扩容是最好的方式,我们可以把单体应用部署在不用的服务器上组成一个“集群”,集群中的每一台服务器就是这个集群的一个“节点”,每一个节点都提供相同的服务,理论上每增加一个节点,系统的处理能力相比较原来的单体应用会增加一倍

负载均衡服务器(Load Balancing Server)

当集群节点组件好之后,那么到底有哪一个节点来处理请求呢?最好每次能够让压力最小的服务器来处理请求,这样使得每个节点的压力都比较平均。要实现这个功能,就需要在所有节点之前增加一个“调度者”的角色,用户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。这个“调度者”就是负载均衡服务器。

垂直架构(也就是功能的拆分)

image.png

垂直架构主要是用来解耦系统业务的复杂度,提高代码的维护性和可扩展性,当单一的应用无法满足需求,此时为了应对更高的并发和业务需求,我们可以根据业务的功能对系统进行拆分,而拆分的每一个业务又可以做集群,系统性能也会大大提高。

优点
缺点

分布式架构

image.png

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

优点
缺点

SOA (Service Oriented Architecture) 面向服务架构

image.png

SOA 和分布式架构一样,但是在服务调用间多了一层注册中心,就是说不管是服务提供方还是服务消费方都需要去注册到注册中心,服务提供方告诉注册中心我能提供什么服务,服务消费方告诉注册中心我需要消费什么服务,那么注册中心就会自动去匹配,这就好比房屋中介所,房东提供房源在中介所登记,租户需要租房也在中介所登记,由中介所来为房东和租户匹配到最合适的那一个

优点
缺点

微服务架构

image.png

微服务和 SOA 都是服务,都是对系统进行拆分,两者似乎一样,但其实不然,还是有一些差别的:
微服务的特点:

2. 如何理解微服务隔离

image.png

3. 如何实现微服务的无状态化

一般说来,微服务架构的目的之一,是通过多进程承载高并发,根据并发的压力用多个副本共同承担流量。阻碍单体架构变为分布式架构的关键点就在于状态的处理,如果状态全部保存在本地,无论在内存还是硬盘,都会给架构的横向扩展带来瓶颈,因为这样新启动的进程根本无法处理那些保存在原来进程的用户数据。

所以要将整个架构分成两个部分,无状态部分和有状态部分,而业务逻辑的部分往往作为无状态的部分,而将状态保存在有状态的中间件中,如缓存、数据库、对象存储、大数据平台、消息队列等。

这样无状态的部分可以很容易的横向扩展,在用户分发的时候,可以很容易分发到新的进程进行处理,而后端的中间件是有状态的,这些中间件设计之初,就考虑了扩容的时候,状态的迁移,复制,同步等机制,不用业务层关心

4. 什么是服务的幂等性

一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。

举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等等

什么情况下需要保证幂等性
那么如何设计接口才能做到幂等呢?
上一篇下一篇

猜你喜欢

热点阅读