浅谈分布式系统


目录


一、单机架构

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

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

二、分布式架构

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

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

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

2、负载均衡

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

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

3、数据库读写分离

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

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

4、引入缓存

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

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

5、数据库分库分表

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

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

6、引入微服务

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

引入微服务的代价:

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

引入微服务的优势:

  1. 解决了人的管理问题。
  2. 使用微服务,可以更方便于功能的复用。
  3. 给不同的服务进行不同的部署。
相关推荐
灯澜忆梦1 小时前
【RabbitMQ #9】 | 生产者可靠性
分布式·rabbitmq
银河技术2 小时前
TB级文本去重实战:从单机 OOM 到 Spark / Ray 分布式架构的工程演进
分布式·微服务·重构·架构·spark·llm·rag
deepdata_cn3 小时前
从集中式到分布式:Data Mesh颠覆传统数据架构的底层逻辑
分布式·data mesh
500844 小时前
React Native for OpenHarmony 实战:三方库 react-native-device-uptime 的鸿蒙化适配指南
javascript·分布式·react native·react.js·harmonyos
灯澜忆梦11 小时前
【RabbitMQ #10】 | MQ可靠性
分布式·rabbitmq
逐流人15 小时前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados
天天喝旺仔17 小时前
gRPC 底层原理:HTTP/2 多路复用、Protobuf 序列化与四种流模式
分布式·http·微服务·rpc
灯澜忆梦21 小时前
【RabbitMQ #5】 | 三大交换机 Fanout ,Direct ,Topic
分布式·rabbitmq·ruby
.冰块.1 天前
Ceph 分布式存储实战(二):存储池管理与 cephx 认证授权
分布式·ceph·rados·纠删码·复本池·cephx认证与用户权限