传统架构演进到分布式架构以及数据请求流向讲解

605 阅读2分钟

单体应用

10多年前:用户访问一个电商系统(所有功能包含在一个project里)>访问数据库

问题:商品或者订单存在瓶颈是不能扩展。(以前上网用户量不高,负载不高,数据量十几万,一个mysql即可)

WechatIMG259.png

分布式架构

五六年前(当前也有公司再用):本质也是单体应用,只是采用集群式的分布式应用

用户>负载均衡(Nginx)>多个电商系统节点;部署多个(如果用户量增多就多部署)>数据库分主从>也会引入缓存集群

将这种架构就可以支持几百万数据量

缺点:开发速度慢、启动时间长、依赖庞大等

WechatIMG261.png

微服务方式

🌰电商系统的搜索、支付、展示等模块,将每个模块抽取出来作为一个project来进行集群部署。可以针对某一个模块进行扩展

负载均衡使用LVS+keepalive分布实现高可用

WechatIMG262.png 网关:进行拦截,比如去旅游需要检查、签证,之后进行分发检票口。根据用户URL分发不同的服务;还比如用户访问订单服务,校验是否登录了,没有登录就返回

多数据库:按照维度单独放在一个库里,减少压力。也可分主从数据库。还可以将部分数据放在NoSQL中

优点:易开发、理解和维护。独立的部署和启动

缺点:分布式系统>分布式事务问题;服务治理>需要管理多个服务

🌰原有单体服务下单失败直接回滚,但微服务中不是在一起的,如果某个服务挂掉那么整个功能就挂掉了。

数据请求流向

WechatIMG260.png

WechatIMG244.jpeg

感觉不错的大佬点个赞呗~ 手敲截图演示不易