大数跨境
0
0

软件总体架构设计思维与实践演进

软件总体架构设计思维与实践演进 二进制跳动
2025-12-06
0
导读:软件总体架构设计思维与实践演进
1. 核心架构设计理念
  • 场景驱动:  一切脱离业务场景谈架构都是耍流氓。架构是根据业务复杂度、数据规模、团队能力、时间成本等因素进行折中的结果。

  • 演进原则:  架构不是设计出来的,是演进出来的。遵循“降本增效”的目标。

  • 设计哲学:  “术(领域)不同,道相通”。


2. 互联网架构演进路径

一个形象的汉字演变总结了架构的拆分之道: 口(单体) -> 吅(SOA) -> 日(水平分层) -> 田(微服务) -> 中(中台) -> 晶(服务网格)

A. 单体架构 

  • 定义:  客户端(App)直接请求一个包含所有业务逻辑的单体服务(WAR包),连接单一数据库。

  • 优点:  开发、测试、部署、扩展初期都非常简单。

  • 适用场景:  初创公司、O2O早期、对性能要求极高的金融场景。

  • 破局:  当存储量和请求量过大时,通过 垂直拆分 (分库)和 水平拆分 (分表)来解决。


B. 面向服务架构 (SOA)

  • 形态:  将单体拆分为多个垂直的业务服务(如房产服务、招聘服务)。

  • 通信:  服务间通过ESB(企业服务总线)进行通信。

  • 缺点:  仅仅是垂直维度的拆分,每个服务内部依然是单体,粒度较粗。


C. 水平分层架构

  • 核心:  在垂直拆分的基础上,进行水平维度的分层。

  • 分层结构:

    1. 网关层:  负责负载均衡、路由。技术选型对比了Zuul, Spring Cloud Gateway, Nginx, Kong等(强调Nginx/Kong的高性能,Java系的易扩展)。

    2. 业务逻辑层:  聚合业务逻辑(如User Service, Trade Service)。

    3. 数据访问层:  屏蔽底层存储差异(RDBMS -> NoSQL -> NewSQL),负责CRUD和分库分表(Sharding-JDBC)。

  • 通信模式:

    • 同步:  RPC调用(Dubbo, Spring Boot)。

    • 异步:  消息队列(提升吞吐量)。


D. 微服务架构 (Microservices)

  • 定义:  一组小型服务,独立进程,轻量级通信。

  • 形态:  业务垂直拆分 + 功能水平拆分。

  • 痛点(微服务不是银弹):

    • 业务代码中混杂了大量的“通信组件”代码(服务发现、熔断、限流、链路追踪等)。

    • 基础设施升级困难(需要业务方配合升级SDK)。

    • 多语言(Polyglot)支持成本高,每种语言都要维护一套基础设施SDK。


E. 服务网格架构 (Service Mesh)

  • 核心目标:  将基础设施能力从应用程序中剥离下沉,实现 业务逻辑与基础设施的物理/进程解耦

  • 架构模式:   Sidecar(边车)模式 。每个业务容器旁部署一个代理容器(如Envoy)。

  • 组成:

    • 数据面板(Data Plane):  智能代理(Sidecar),拦截并处理所有网络通信。

    • 控制面板(Control Plane):  管理代理,下发策略(如Istio)。

  • 优势:  业务团队专注业务,基础设施团队独立迭代,天然支持多语言。


F. 中台架构 (Middle Platform)

  • 背景:  解决微服务拆得过细导致的复用性问题,“分久必合”。

  • 理念:  源自Supercell公司的“部落”文化。中台是支持多个前台业务且具备业务属性的 共性能力组织

  • 分类:  业务中台、数据中台、算法中台、技术中台。

  • 数据存储设计:  采用“公共数据表(共性字段) + 业务个性化扩展表(Key-Value形式或扩展字段)”的方式,解决不同业务线的差异化需求。


G. 云原生架构 

  • 侧重:  运维侧。

  • 关键词:  DevOps、CI/CD、容器(Docker)、容器编排(Kubernetes)。


3. 真实案例演进:转转 (二手交易平台)


转转二手交易平台的架构演进:

  1. 架构1.0:  初期的微服务,但粒度粗,业务逻辑耦合在同一个物理进程中。


  2. 架构2.0:  进行垂直拆分和水平分层。遇到的问题是SDK升级困难,业务服务由于包含大量非业务逻辑而变得臃肿。


  3. 架构3.0(大中台 + Service Mesh):

    • 中台化:  抽象出公共逻辑层(发布、列表、详情、Push等服务)。

    • Service Mesh化:  引入Mesh解决基础设施侵入业务代码的问题,实现统一管理和流量控制。



4. 总结归纳


  • 架构设计维度:  单体 -> 水平分层 -> 面向服务 -> 微服务 -> 服务网格 -> 中台。

  • 运维维度:  演进至云原生架构。



也可以加我微信沟通学习!


【声明】内容源于网络
0
0
二进制跳动
15 年 + 技术老兵 架构师|技术总监|科技创业技术合伙人 曾任职苏宁科技、电讯盈科、联想云 专注架构设计与技术落地
内容 739
粉丝 0
二进制跳动 15 年 + 技术老兵 架构师|技术总监|科技创业技术合伙人 曾任职苏宁科技、电讯盈科、联想云 专注架构设计与技术落地
总阅读284
粉丝0
内容739