水平架构设计
同步机构插入MQ会变为异步架构。
MQ插入越早越好,但网关会通用参数检查,请求鉴权,过滤垃圾数据。网关不会成为业务瓶颈。所以放在网关及业务逻辑层之间
异步架构
异步目的:提升吞吐量
异步手段:MQ
请求类型:
读请求:不需要MQ,瞬时返回结果
写请求:数据一致性强的,不可以用MQ;数据一致性弱的可以;
问题1:用户发朋友圈后,到MQ返回给用户成功,然后立马查看不通过MQ,由网关到业务逻辑层
用户本身,缓存用户本地数据,用户可以查看到
问题2:MQ返回成功,但MQ写入DB失败;微信处理方式,朋友圈最顶端返回消息,发送失败,让用户重试
APP与服务端长连接,http与服务端只能长轮询
分层过多
-
请求路径变长
-
平均响应延迟变高
-
定位问题变的复杂化
-
运维成本增加
过少
单体架构
适中
同步架构(四层)
-
网关层
-
业务逻辑层
-
数据访问层
-
数据存储层
异步架构(五层 )
-
网关层
-
异步消息
-
业务逻辑层
-
数据访问层
-
数据存储层
缺点
每层粒度过粗
同步水平分层架构全貌
object storage: 小公司可以使用fastDFS,数据量大的可以使用ceph
ceph运维压力比较大