micro-services-subject
  • Introduction
  • 架构设计篇
    • 互联网架构演进分析
      • 单体架构
      • 水平分层架构
      • 异步水平分层架构
      • 微服务化架构
    • DDD领域驱动设计
    • 常见的系统分布式架构
    • 微服务架构的思路
  • docker实战篇
    • docker基础
      • 入门教程
      • 镜像、容器、仓库
    • docker安装与使用
    • 搭建docker私有仓库
    • docker swarm集群搭建
    • docker compose部署脚本
    • docker service 服务编排
    • docker stack分布式集群部署
    • docker portainer容器可视化管理工具
    • 通过maven插件打包docker镜像
    • docker应用:ELK搭建
    • docker应用:搭建rabbitmq、mysql等软件
  • SpringCloud实战篇
    • config分布式配置中心
    • Eureka注册与发现服务
    • Ribbon客户端负载均衡
    • Hystrix服务熔断组件
    • Feign声明式服务调用
    • Zuul网关服务
Powered by GitBook
On this page
  • 1. 分层描述
  • 1.1 网关层
  • 1.2 业务逻辑层
  • 1.3 数据访问层

Was this helpful?

  1. 架构设计篇
  2. 互联网架构演进分析

水平分层架构

Previous单体架构Next异步水平分层架构

Last updated 5 years ago

Was this helpful?

对单体架构在水平方向进行拆分,就会演变成水平分层架构,水平分层架构解决了单体架构存在的高耦合、低扩展性的问题,

如图2:

图2水平分层架构

水平分层架构分为网关层、业务逻辑层、数据访问层以及DB/Cache。每一层都是独立的进程,每个进程职责分明。

1. 分层描述

1.1 网关层

网关层接收客户端请求,对请求合法性校验以及鉴权、对请求根据URI路由转发到相应的业务逻辑层

1.2 业务逻辑层

业务逻辑层负责请求具体的业务逻辑处理,在微信端发送消息给好友,业务逻辑层会对发送消息进行黄反等策略检查、会校验发送者的权限(你遇到过“消息已发送,被对方拒收”的情况吗?)、判断接收方是否在线等等。

1.3 数据访问层

业务逻辑层不会直接和数据库交互,它需要的数据通过数据访问层获取。数据访问层有三部分功能构成:

l 第一是ORM,接收业务逻辑层发送的数据协议(JSON等文本协议或者PB等二进制协议)转换成SQL协议;

l 第二是Sharding,数据库存储数据超过千万级别时,为了进一步提升性能,会按照业务功能垂直拆分库以及水平方向拆分表。因此在此层提供分库分表支持,对业务逻辑层透明,使之无感知。

l 第三是随着业务请求量继续增大,Sharding后依然无法满足性能需求,进一步增加Cache功能,对业务逻辑层透明。存储层往往使用MySQL提供关系存储,使用Redis提供缓存。

大家熟知的MVC架构,本质上是水平分层架构,分为Model层、View层、Control层。水平分层架构分层不易过多,每增加一层,请求响应延迟相应会增加;分层越多,定位线上问题难度越大。根据业务使用场景的不同,常常对水平分层架构分为三层(MVC)、四层(图2)、五层(图3)。