架构演变及分布式解决方案

架构

单体架构

在这里插入图片描述
所有的功能都集中在一个项目中,并部署在同一台服务器,往往一个功能的阻塞会导致整个应用的阻塞,最终导致整个服务器不
可用,随着业务模块的不断拓展,代码的可读性、维护性越来越差,测试成本也越来越高

单体架构下的集群部署:(Session共享问题:通过SpringSession + Redis实现分布式Session共享)
通过负载均衡器 + 多WEB容器实例实现水平负载,提升系统的并发性和高可用性,但还是不能解决一个模块的阻塞导致整个服务阻塞的问题

垂直架构

在这里插入图片描述
为了避免单体架构上出现的代码维护以及阻塞问题,按照业务分组把单体应用拆成多个子系统应用
优点:
1、子系统间相互独⽴,互不影响
2、子系统拆分实现了流量分担,解决了并发问题
缺点:
每个子系统之间会冗余和其它子系统有关的业务代码

SOA架构(面向服务架构)

在这里插入图片描述
将重复公用的功能抽取成为服务,以服务方式为子系统提供服务,各个系统与服务之间通过(RPC、Http)相互通信
优点:
1、解决了垂直架构的痛点(每个系统之间会冗余和其它系统有关的业务代码),提高了代码的复用性
缺点:
1、子系统和各服务之间的调用信息发生改变,需要在子系统中修改相关调用配置信息
2、子系统中调用多个服务时,某个服务的阻塞也会导致当前子系统中的业务不可用

微服务架构

相比于SOA架构,微服务架构中提供了很多特性:
1、服务的注册中心、服务的配置中心
2、网关、服务的负载均衡、服务的远程调用
3、服务的熔断、服务的限流、服务的降级

在这里插入图片描述

微服务8大组件

注册中心(Consul、ZK、Eureka、Nacos)
配置中心(Nacos、Config、Apollo)

网关(Zuul、Gateway)
负载均衡(Ribbon、LoadBalance)
声明式远程调用(OpenFeign

断路器(Hystrixs、Sentinel)
链路追踪(Skywalking、Zipkin、Sleuth)
日志监控(ELK)

微服务框架

SpringCloud

Eureka(注册中心) 
Apollo(配置中心)
OpenFeign(远程调用) 
Gateway(网关) 
Netflix.Ribbon(负载均衡) 
Netflix.Hystrixs(限流、熔断)

SpringCloudAlibaba

Nacos(注册中心) (配置中心)
OpenFeign(远程调用) 
Gateway(网关) 
LoadBalance(负载均衡)
Sentinel(限流、熔断)

分布式解决方案

分布式调度中心

分布式消息中间件

分布缓存

具体参考这篇文章

分布式锁

具体参考这篇文章

分布式事务

1、一个本地事务 + 一个分布式事务,这种情况最简单,根据分布式事务的执行情况对本地事务进行回滚/提交
2、一个本地事务 + 多个分布式事务,这种情况需要根据业务去做选择:
业务上必须要保证强一致性的,可以使用Seata
业务上可以容忍短暂不一致,但最终要一致,可以使用RocketMQ

Seata参考这篇文章
RocketMQ参考这篇文章

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大能嘚吧嘚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值