对系统架构的一点理解

架构的演变

--------------------------------------------------------------------------------------------------------------

一个单机:

一开始时单机架构,用户直接访问服务。

 

缺点:

1、不安全,当服务器宕机时,整个系统就无法使用;

2、高并发,单机架构处理业务的能力有限,当出现高并发的情况,系统处理不过来;

 

多个单机:

比如:某个地区的用户永远都是访问同一个服务器。但是这样服务器的资源没有得到充分的使用,当其中一台服务器宕机时,这个地区的所有用户就无法访问。

相比一个单机架构,多个单机架构也能起到一定的分流作用。业务处理能力应该一个单机的几倍。

缺点:

每个单机系统都是使用自己的数据库。对资源造成浪费。一个单机架构有的缺点,在多个单机架构里也一样存在,问题没有真正解决,相当于只是将问题缓解一下。当用户访问量提高时,需要不断添加一个单机架构,成本非常高。

--------------------------------------------------------------------------------------------------------------

集群:

后来,随着业务的发展,用户访问量大大提升,单机架构已经无法提供支持。就变成集群的架构。

集群方式与多个单机架构有点异同。都是需要部署多台服务器,但是为了提高资源的利用率,使用nginx实现负载均衡,处理业务的能力得到大幅度的提醒。

 

这种集群方式每个服务器都是在使用自己的数据库。通过nginx负载均衡后,可以将用户的请求分流,集群越多,业务的处理能力越高。

问题1:用户在服务器A登录后,后面发出的请求进入到服务器B,服务器B如何识别该用户?用户发送的是http请求,无状态协议。如何才能共享用户的登录信息?通过session共享实现。不管用户在那个服务器登录,都需要将登录信息保存起来。用户的每次请求过来时,都需要判断一下用户是否登录过。需要注意考虑那种session共享方式。

问题2:数据库信息共享问题,如果用户在服务器A中插入一条数据,然后在服务器B中查询该数据查询不到,怎么办?可以通过适用同一个数据库解决。

缺点:

1、集群架构也是有瓶颈的,当用户到达一定数量时,即使经过nginx负载均衡后,对于单个节点来说,过来的请求依然很多,可能会处理不过来。然后只能通过增加节点的方式来提高系统的处理能力,要不就使用MQ,将部分请求放到队列里面,处理不过来的就直接执行失败操作。

2、集群的节点越多,公司运营的成本就越高。

3、运维人员部署更新难度提升,因为你需要给所有的节点进行更新操作。

4、日志文件维护应该怎么做?每个节点都是一个单体,拥有各自的日志,如何将所有节点的日志整合起来,共同维护?当程序出现bug时,需要找日志,应该怎么处理?网上有很多集群日志解决方案。

--------------------------------------------------------------------------------------------------------------

分布式:

分布式系统就是将一个系统划分不同功能模块的子系统,每个子系统独立部署。

相比集群,分布式架构对资源的利用效率更高。在集群中,当系统的处理能力不足时,直接通过增加节点来提升,每一个节点都是一整个应用,对资源造成极大的浪费。而在分布式架构中就不一样了,如果某一个子系统处理能力不足,我们只需要针对这个子系统进行处理,可以大大减少资源的浪费。

分布式系统也有多种分布方案,一是整个分布式系统使用同一个数据库,二是每个子系统拥有自己独立的数据库。采用不同的方案都有必须的问题需要解决。

 

问题1:也需要做session共享。

问题2:当一个接口出现异常时,应该如何定位问题所在?

问题3:数据传输安全问题,由于数据不断在不同的子系统之间进行交互,要防止数据在传输过程中被拦截篡改问题。

 

缺点:

1、增加测试难度。当某个子系统需要更新时,需要整个系统连贯起来测试。

2、事务处理复杂。要注意事务传递问题,当某个请求出现异常时一定要回滚所有对数据库的更新操作。

3、响应时间长。子系统多,请求链路长,导致响应时间变长。

 

 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页