首页 > 数据库 > 数据库开发技术 > 架构师总体架构设计与实践






破局
垂直方向拆分(业务维度)
水平方向拆分(功能维度)
数据库存储量大/请求量大破局
垂直拆分(分库)
水平拆分(分表)
单体拆成多个服务
如何拆分
架构拆分同理
架构设计哲学:术(领域)不同,道相通








功能一:CRUD
业务增删改查接口(批量)
功能二:ORM
MyBatis 3
功能三:Sharding(分库分表)
Sharding-JDBC
功能四:屏蔽底层存储差异性
MySQL/MongoDB
Redis

服务类型
RPC服务
例如:Dubbo
RPC服务
例如:Dubbo
Web服务
例如:Spring Boot
网关层
业务逻辑层
数据访问层
服务协议
通信协议
数据传输协议
TCP长连接
二进制协议(例如:Protocol Buffers)
SQL2003
通信协议
数据传输协议
TCP长连接
二进制协议(例如:Protocol Buffers)
通信协议
数据传输协议
HTTPS
JSON
网关层
业务逻辑层
数据访问层
定长Header
plaintext
{
long uid;
long sessionid;
int command;
int bodylen;
}
plaintext
{
int infotype;
long infoid;
String infocontent;
……
}






单体架构中,一个大的 WAR(Web Application Archive) 包含了所有功能模块,运行在 Tomcat 容器中。数据库使用 MySQL,包含用户表、商品表和交易表。
接收用户请求
接收商品请求
接收交易请求
数据库读用户数据
数据库读商品数据
数据库读交易数据
用户业务逻辑处理
商品业务逻辑处理
交易业务逻辑处理
封装用户结果返回
封装商品结果返回
封装交易结果返回
图中展示了将单体架构拆分为微服务架构后的情况。系统被拆分为三个独立的微服务,分别处理用户、商品和交易的相关业务逻辑。每个服务都有自己的网关层、业务逻辑层和数据访问层。
用户服务
网关层:处理用户请求的入口
用户业务逻辑层:处理用户相关的业务逻辑
用户数据访问层:访问用户数据
MySQL Database:用户表
商品服务
网关层:处理商品请求的入口
商品业务逻辑层:处理商品相关的业务逻辑
商品数据访问层:访问商品数据
MySQL Database:商品表
交易服务
网关层:处理交易请求的入口
交易业务逻辑层:处理交易相关的业务逻辑
交易数据访问层:访问交易数据
MySQL Database:交易表
展示了微服务架构的具体实现,每个微服务都有独立的层次结构。
网关层
处理请求的入口,通常负责路由和认证等功能。
业务逻辑层
处理核心业务逻辑,具体到不同服务(用户、商品、交易)各自实现相应的业务功能。
数据访问层
负责与数据库交互,执行数据的读写操作。
MySQL Database
各个服务分别使用自己的数据库表来存储相关数据

















原文作者:二进制跳动;如有侵权,请联系管理员删除。