分布式架构理解总结

系统架构随着技术手段越来越成熟近些年得到了很大的提升,从以前的单系统架构,到应用和数据层分离,集群,分布式集群等等,下面就来一一总结。

一、单应用

单应用顾名思义,就是应用服务和数据库服务都在同一台服务器上运行。一般项目初期会考虑这种架构方式,因为效率决定生死,先要让项目面市,后期考虑优化方案。


二、应用服务和数据库服务分离

从项目上线面市到运营一段时间后,就会发现服务器的负载逐步攀升,当代码层面无法进行优化的时候,就需要考虑增加机器来缓解一台服务器的压力了。

从图中可以看到就是将数据库服务分离到了一台新的服务器去,这样两个服务直接不会互占资源,影响彼此。后面只需要关注应用服务的优化即可。


二、应用服务集群

单台应用服务承载的并发毕竟是有上限的,此时需要部署更多的应用服务缓解一台应用的并发压力。

但这个时候,就会出现如下问题

  1. 用户访问进来到底分配到哪个服务器去
  2. 用户的session如何共享。

问题一:用户访问进来到底分配到哪个服务器去

可以使用nginx的负载均衡策略

nginx共有多种负载请求调度策略

  1. 轮询(默认)
  2. 权重策略
  3. IP哈希策略
  4. 访问地址哈希策略
  5. 最少链接数策略

问题二:用户的session如何共享。

session共享可以使用数据库或缓存(redis等)


三、数据服务集群

现在应用服务的压力减小了不少,但数据库服务的压力咔咔往上增加。

下面是常见的从数据库中获取数据的流程。

普遍的优化方式有以下两种:

  1. 增加缓存
  2. 数据库读写分离

1、增加缓存

2、数据库读写分离

当然还有其他可供选择的缓解数据库压力的服务,比如:ElasticSearch、阿里云的opensearch、xunsearch这些全文索引搜索引擎服务。

 

 

未完待续。。。