单体应用
10多年前:用户访问一个电商系统(所有功能包含在一个project里)>访问数据库
问题:商品或者订单存在瓶颈是不能扩展。(以前上网用户量不高,负载不高,数据量十几万,一个mysql即可)
分布式架构
五六年前(当前也有公司再用):本质也是单体应用,只是采用集群式的分布式应用
用户>负载均衡(Nginx)>多个电商系统节点;部署多个(如果用户量增多就多部署)>数据库分主从>也会引入缓存集群
将这种架构就可以支持几百万数据量
缺点:开发速度慢、启动时间长、依赖庞大等
微服务方式
🌰电商系统的搜索、支付、展示等模块,将每个模块抽取出来作为一个project来进行集群部署。可以针对某一个模块进行扩展
负载均衡使用LVS+keepalive分布实现高可用
网关:进行拦截,比如去旅游需要检查、签证,之后进行分发检票口。根据用户URL分发不同的服务;还比如用户访问订单服务,校验是否登录了,没有登录就返回
多数据库:按照维度单独放在一个库里,减少压力。也可分主从数据库。还可以将部分数据放在NoSQL中
优点:易开发、理解和维护。独立的部署和启动
缺点:分布式系统>分布式事务问题;服务治理>需要管理多个服务
🌰原有单体服务下单失败直接回滚,但微服务中不是在一起的,如果某个服务挂掉那么整个功能就挂掉了。
数据请求流向
感觉不错的大佬点个赞呗~ 手敲截图演示不易