浅谈分布式系统


目录


一、单机架构

单机架构,只有一台服务器,这个服务器负责所有工作。

绝大多数公司的产品,都是这种单机架构。现在计算机硬件发展迅速,哪怕只有一台服务器,但是这台服务器性能很好,可以支持非常高的并发,非常大的数据存储。单机架构足以支撑。

二、分布式架构

一台主机的硬件资源是有上限的,包括不限于:CPU、内存、硬盘、网络...等等。服务器每次收到一个请求,都是需要消耗上述的一些资源的。如果同一时刻,处理的请求多了就可能会导致某个硬件资源不够用了。无论是那个方面不够用了,都可能会导致服务器处理请求的时间变得很长,甚至于处理出错。而一台主机上面能增加的硬件资源是有限的,取决于主板的拓展能力。如果一台主机拓展到了极限还是不够,就只能引入多台主机了。一旦引入了多台主机,系统就可以称作为"分布式系统"。引入分布式,一定是万不得已。

1、应用服务与数据库分离

针对不同的服务配备不同的服务器,例如应用服务器里面可能会包含很多的业务逻辑,会占用大量的CPU资源。而数据库服务器,则需要更大的硬盘空间,更快的数据访问速度,可以配备更大的硬盘服务器。

2、负载均衡

假设在上述情况下,应用服务器还是没有抗住,就需要再引入更多的应用服务器来解决上述问题。

用户的请求,会先到达负载均衡器/网关服务器。假设现在有1w个用户请求,有2个应用服务器,此时按照负载均衡的方式,就可以让每个应用服务器承担5k的访问量。负载均衡器对于请求量的承担能力,是远远超过应用服务器的。负载均衡器是分配工作,不需要执行任务。

3、数据库读写分离

增加应用服务器,确实能够处理更高的请求量。但是随之存储服务器要承担的请求量也更多了。

实际应用场景种,读的频率是远高于写的频率。主服务器一般是一个,从服务器要有很多个(一主多从)。从节点的数据,要从主节点这同步过来,以主节点为主。

4、引入缓存

数据库天然就有个问题,那就是响应速度慢。我们可以把数据区分为"冷热"数据,热点数据放到缓存中,缓存的访问速度往往比数据库快很多。

缓存服务器中会存放一些小部分的热点数据,热点数据是会被频繁访问到的数据。这里的缓存服务器,就可以用Redis,从数据库存储的仍然是全量数据。这时候,缓存服务器就帮数据库服务器缓解了压力。

5、数据库分库分表

引入分布式系统,不光要能够去应对更高的请求量(并发量),同时也要能应对更大的数据量。一台主句存不下,就需要多台主机来存储。针对数据库进行进一步的拆分,分库分表。引入多个数据库服务器,每个数据库服务器存储一个或者一部分的数据库。

具体如何分库分表,要结合实际的业务场景来展开。业务至关重要,技术知识给业务提高支持。业务决定了技术。

6、引入微服务

前面的应用服务器通常都是一个服务器程序,其中包含了很多的业务逻辑,这可能导致单个服务器的代码变得越来越复杂。为了便于代码的维护,可以将这样一个复杂的服务器拆分为更多、功能更单一但更小的服务器,这就是所谓的微服务。

引入微服务的代价:

  1. 系统的性能会下降:拆除更多的服务,多个功能之间要更依赖网络通信,网络通信的速度可能会比硬盘慢。
  2. 系统复杂程度更高,可用性收到影响:服务器更多了,出问题的概率更大了。

引入微服务的优势:

  1. 解决了人的管理问题。
  2. 使用微服务,可以更方便于功能的复用。
  3. 给不同的服务进行不同的部署。
相关推荐
坤昱5 小时前
cfs调度类深入解刨——最新内核细节分析5
linux·分布式·cfs调度·eevdf调度·linux调度·linux技术·kernel最新版本内容
AI人工智能+电脑小能手5 小时前
【大白话说Java面试题 第91题】【Mysql篇】第21题:分布式锁的使用场景和原理?
java·数据库·分布式·mysql·面试
JAVA社区5 小时前
Java高级全套教程(十三)—— 分布式锁超详细实战详解(原理+三种方案企业级落地)
java·开发语言·分布式·spring cloud·面试·java-zookeeper
Leo1876 小时前
分布式事务
java·分布式·分布式事务
潮起鲸落入海9 小时前
ceph分布式存储认证和授权,块存储管理
分布式·ceph
ZPC821010 小时前
前馈补偿原理 + 分类 + 公式 + 工程实现(配合 PID 使用,从根源减轻闭环收敛压力)
人工智能·分布式·机器人
闪电悠米10 小时前
黑马点评-分布式锁-02_simple_redis_lock_setnx
java·数据库·spring boot·redis·分布式·缓存·wpf
大迪deblog11 小时前
从分布式到中央计算:深度拆解下一代 Zonal 车载 EEA 架构变革
分布式·架构
智塑未来11 小时前
2026轻量化图形引擎生态白皮书:PG官网发布渠道与分布式PG数据库架构全面解析
数据库·分布式·数据库架构
weixin1997010801611 小时前
[特殊字符] 电商库存扣减防超卖:分布式锁的三种实现(附Python源码)
开发语言·分布式·python