系统设计(数据库/微服务)
文章目录
- 项目地址
- 一、数据架构
-
- 1.1 Query Separation
-
- 1. 场景
- 2. 实现思路
-
- 触发查询分离
- 引入MQ
- 难点
- 1.2 分表分库(写数据缓慢)
-
- 1. 场景
- 2. 思路
-
- 分片键的选择
- 分片的算法
- 1.3 Redis(读/写数据频繁)
- 二、微服务
-
- 2.1 服务发现
-
- 1. 服务发现的方法
- 2.2 全链路追踪
-
- 1. 需要追踪什么
- 2.3 熔断/限流
-
- 1. 请求第三方接口慢
- 2. redis超时
- 3. 限流
-
- 令牌桶算法
- 在网关层限流
项目地址
- 教程作者:
- 教程地址:
- 代码仓库地址:
- 所用到的框架和插件:
dbt
airflow
一、数据架构
1.1 Query Separation
1. 场景
-
实际场景:
- 工单查询,表中有几千万数据,并且需要关联十几个子表,查询速度30-40s
- 由于有些工单数据是诉讼书,所以需要频繁查询,不能使用冷热分离
- 采用查询分离的解决方案,更新数据放在一个系统里,查询数据库放在另外一个数据库
- 由于数据更新都是单表,所以很快
- 数据查询则通过一个大数据量的查询引擎,将速度减少到了500s
-
什么时候需要使用:
2. 实现思路
触发查询分离
- 直接串行修改代码:在写入数据的时候,写库和查库双写
- 修改代码引入MQ:写入数据,通过mq异步同步到查库
- 数据库的CDC:直接监控数据的变更