如何让一群计算机,像一个超级大脑一样工作?
从集中式到分布式的演进历程
在探讨分布式系统之前,我们需要先了解集中式架构。在集中式系统中,整个项目被构建为一个单一的应用单元,所有的功能模块、业务逻辑和数据存储都集成在这个独立的应用内部。

以网站系统为例,整个网站就是一个完整的应用。虽然可以通过增加服务器数量或使用容器技术来实现负载均衡,避免单点故障,数据库也可以独立部署,但核心应用仍然是集中式的。
集中式架构的显著优势在于开发、测试和运维的简便性,无需处理复杂的分布式环境问题。
然而,集中式架构的局限性也十分明显:扩展性差,每次更新都需要重新部署整个应用;系统耦合度高,一个模块的问题可能影响整个系统。随着业务规模的增长,集中式架构往往成为系统发展的瓶颈。
分布式系统的本质解析
分布式系统是由多个独立计算机组成的集合,但对用户而言,这些计算机表现为一个统一的系统。
这个定义来源于经典著作《分布式系统原理与范型》。
换句话说,分布式系统背后由多台计算机协同工作,但用户完全感知不到这种复杂性,就像在使用单个计算机系统一样。
为了更直观地理解,我们可以参考下面的分布式系统示意图:

分布式架构的优势与挑战
在分布式架构中:
应用可以按照业务领域进行拆分,形成多个独立的服务单元;也可以按照架构层次划分为接口层、服务层;或者按照客户端类型分为移动端服务、PC端服务等。
数据库可以根据业务特点进行垂直拆分,形成多个数据库实例;对于数据量大的表,还可以进行水平分库分表。
可以引入分布式缓存、搜索引擎、文件系统、消息队列、NoSQL数据库等中间件来增强系统能力。
显然,分布式架构有效解决了集中式系统难以扩展的问题。我们可以在系统的任何环节进行灵活扩展,单个服务的故障也不会波及其他服务。
随着微服务架构和容器化技术的普及,以及Dubbo等分布式框架的持续演进,分布式技术正在快速发展。
但分布式系统也带来了新的复杂性挑战:分布式事务处理、分布式锁机制、会话状态管理、数据一致性保障等都是当前分布式系统需要解决的关键难题。虽然已有多种成熟方案,但都各有利弊。同时,分布式系统也增加了开发、测试和运维的复杂度,如果管理不当,反而可能成为系统的负担。
如果您对分布式技术有独到见解,或者对本文内容有不同看法,欢迎在评论区留言交流。
