前言
本文介绍下 互联网架构演进的4个阶段 1、单体架构 2、水平分层和面向服务架构(SOA) 3、微服务架构 4、服务网格架构(Service Mesh) 在此之前先简单介绍一个小知识点
redis做分布式锁弊端
redis实现分布式锁 哨兵模式下 会导致 一个锁同时被多个线程持有
分布式锁是CP模型 Redis是AP模型 用AP实现CP完全错误的
用ZK实现分布式锁 有性能问题
推荐使用etcd来实现分布式锁
互联网发展
- pc互联网
静态 广播式
- 移动互联网
动态 互动 比如微博关注
- 物联网
万物连接 比如微信群组 将一对一变成一对多 形成了网络
架构演进
单体
优点
开发、测试、部署、扩展 都很方便
扩展
应用场景
- 功能不复杂 研发人员少
- 创业初期
- 性能要求极其苛刻
性能: 吞吐量、平均响应延迟 这里主要指平均响应延迟 比如股票、高频交易 需要及时捕捉到股票市场一些波动
缺点
- 系统耦合性高
- 技术选型单一
比如开发语言单一
- 开发效率越来越低
水平分层
要解决这些问题 咱们先看看数据库是如何破局的 然后再类比到架构上
数据库如何解决单体瓶颈
拆分
- 按业务垂直分库
比如 用户库 商户库 但还是单表
- 水平拆分(分表)
比如 模1024 分1024表
db做了拆分 所以要考虑分布式事务
架构同理
水平分层架构设计
- 垂直方向拆分
按业务维度
- 水平方向拆分
物理分成多个独立进程
按功能纬度:网关层、业务逻辑层、数据访问层、数据存储层
每层逻辑解耦
数据访问层必须拆分出来 可以屏蔽掉分库分表逻辑和兼容不同的数据库(比如关系型、非关系型、NewSql)
展示服务和网关服务分离举例
网关返回的发布时间是时间戳格式 展示层(APP)将时间戳转换成具体的日期格式 而非网关返回具体的日期格式
网关层功能