Clarence Java DocClarence Java Doc
开发总结
Java
数据库
缓存
JVM
Spring
微服务
消息队列
高并发
分布式
高可用
设计模式
场景题
Netty
云原生
算法
系统架构
开发协议
IOT
人工智能
开发总结
Java
数据库
缓存
JVM
Spring
微服务
消息队列
高并发
分布式
高可用
设计模式
场景题
Netty
云原生
算法
系统架构
开发协议
IOT
人工智能
  • 分布式架构
  • 分布式理论
  • Api网关
  • 分布式锁
  • 分布式事务
  • 分布式会话

分布式架构

参考链接:https://gitee.com/Doocs/advanced-java

架构演变:https://mp.weixin.qq.com/s/gKrjWU76SlXWgUAix4xtLw

一、单体架构

1. 概念

单体架构(Monolithic Architecture)是将所有功能模块集成在一个应用程序中的架构模式。整个应用程序作为一个整体进行开发、部署和运行。

2. 特点

  • 开发简单:项目初期开发速度快,适合小型团队。
  • 部署方便:只需要打包成一个文件,发布到服务器即可运行。
  • 性能较高:组件之间直接调用,通信延迟低。
  • 维护困难:随着功能增多,代码规模膨胀,耦合度高,维护成本上升。
  • 扩展性差:无法按模块单独扩展,资源利用率低。

3. 适用场景

  • 初创项目、功能简单、用户量较少的系统。
  • 开发周期短,对扩展性要求不高的场景。

二、集群架构

1. 概念

集群架构(Cluster Architecture)是指将多个服务器组成一个集群,对外提供统一服务,实现负载均衡和高可用。

2. 特点

  • 负载均衡:通过负载均衡器将请求分发到多个节点,提升系统吞吐量。
  • 高可用:某个节点故障时,其他节点继续提供服务,保障系统稳定性。
  • 数据一致性:需要考虑数据同步和状态保持问题。

3. 适用场景

  • 高并发、高访问量的互联网应用。
  • 需要保障系统稳定性和可用性的场景。

三、分布式架构

1. 概念

分布式架构(Distributed Architecture)是指将系统拆分成多个独立的服务或模块,部署在不同的服务器上,通过网络通信协作完成业务逻辑。

2. 特点

  • 水平扩展:可以根据需求增加服务器,提高性能。
  • 容错性强:某个服务宕机不会影响其他服务。
  • 复杂度高:需要考虑服务间通信、数据一致性、事务处理、故障恢复等问题。

3. 适用场景

  • 用户规模大、业务复杂的大型系统。
  • 需要高可用、高扩展性的场景。

四、SOA架构

1. 概念

面向服务架构(Service-Oriented Architecture, SOA)是一种以服务为核心的架构模式,将业务功能封装成服务,通过标准接口(如HTTP、RPC等)进行通信。

2. 特点

  • 服务复用:业务功能被封装成独立服务,可被多个系统调用。
  • 松耦合:服务之间独立开发、部署、升级,降低系统耦合度。
  • 性能瓶颈:由于引入了网络通信,性能可能下降。
  • 开发复杂:需要考虑服务治理、安全、事务管理等问题。

3. 适用场景

  • 大型企业系统,多个业务系统需要共享核心功能。
  • 需要灵活扩展、快速调整业务流程的场景。

五、微服务架构

1. 概念

微服务架构(Microservices Architecture)是SOA的进一步演进,将应用划分为粒度更小、更轻量的独立服务,每个服务完成单一业务功能,独立开发、部署、运行。

2. 特点

  • 服务自治:每个服务独立开发、部署,技术栈可以不同。
  • 按需扩展:可以针对性能瓶颈的服务单独扩容。
  • 容错恢复:单个服务故障不会影响其他服务。
  • 治理成本高:需要引入服务注册发现、负载均衡、配置管理、监控、链路追踪等组件。

3. 适用场景

  • 业务复杂、功能多变、需要快速交付的互联网应用。
  • 对系统高可用、扩展性要求高的场景。

六、架构小结

特点单体架构集群架构分布式架构SOA架构微服务架构
开发复杂度低中高高高
部署复杂度低中高高高
性能高高中中中
扩展性差中高高高
可维护性差中高中高
适用场景小型项目高并发大型系统企业系统互联网系统

每种架构都有其适用场景和优劣势,选择合适的架构,关键在于权衡项目规模、开发周期、运维成本和未来扩展性。

我们来捋清楚 集群、分布式、SOA、微服务 这四种架构的区别,核心是从 部署方式、服务拆分粒度、通信方式、开发运维复杂度 这几个角度来对比。


七、集群架构 vs 分布式架构

集群架构

  • 概念:多个相同的服务器节点组成集群,对外表现为一个整体。
  • 核心特点:通常提供负载均衡、高可用,但业务逻辑还是在每个节点上完整运行,不拆分功能模块。
  • 例子:一套完整的电商系统,部署多个节点,Nginx做负载均衡,任意节点都能跑完整的电商功能。

分布式架构

  • 概念:将系统拆分成多个不同功能的服务模块,部署在不同的节点上,通过网络通信协同完成业务。
  • 核心特点:每个节点负责不同的业务功能,服务之间有依赖。
  • 例子:电商系统拆成“用户服务”“订单服务”“支付服务”,每个服务独立部署在不同节点上,共同组成完整功能。

总结:

  • 集群:每个节点是一样的完整系统,解决高并发和高可用问题;
  • 分布式:每个节点只负责一部分业务,解决系统扩展和高性能问题。

八、SOA架构 vs 微服务架构

SOA架构(Service-Oriented Architecture)

  • 概念:面向服务架构,按照业务功能划分服务模块,每个服务独立运行,对外提供服务接口(如HTTP、RPC等)。
  • 核心特点:强调服务复用、松耦合,但服务粒度较大,往往一个服务承担多个功能。
  • 例子:电商系统有“订单服务”,内部包含订单创建、支付、物流状态管理等一堆功能。

微服务架构

  • 概念:微服务是SOA的进一步演进,将功能拆得更细,每个服务只完成一个小功能,独立开发、部署、运行。
  • 核心特点:每个服务更小、更轻、更灵活,技术栈也可以不同,但需要完善的服务治理体系(如注册发现、负载均衡、链路追踪等)。
  • 例子:电商系统拆得更细,“订单创建服务”“支付服务”“物流服务”“优惠券服务”全都分开,独立扩展、升级。

总结:

  • SOA:服务粒度大,强调复用,更适合企业级大系统;
  • 微服务:粒度小,强调灵活扩展,更适合互联网快速迭代场景。

九、架构总结

特点集群架构分布式架构SOA架构微服务架构
系统拆分方式多个完整系统按功能拆分按业务拆分按更细功能拆分
节点功能每个节点一样每个节点不同服务粒度较大服务粒度更小
通信方式内部同步通信网络通信HTTP/RPC等HTTP/RESTful
开发复杂度低较高高很高
运维难度低较高高很高
扩展性依赖负载均衡水平扩展灵活扩展按需扩展每个服务
故障影响单点故障危险某模块故障不影响全局某个服务故障影响较大单个服务故障影响小
Last Updated:
Contributors: Clarence, hanchen, hello0709
Next
分布式理论