AlibabaCloud和SpringCloud的区别+

这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战


AlibabaCloud和SpringCloud的区别?


1、地址

spring.io/projects/sp…

2、先说下两个的区别和对应的技术栈

背景:

1、2018年之前的开发的项目的Cloud微服务技术栈

【SpringCloud全家桶】

  • 服务注册发现 Eureka (不维护)
  • 远程调用 Open-Feign-SpringCloud
  • 业务网关 Zuul (不维护)
  • 限流降级 Hystrix (不维护)
  • 分布式配置中心 Config 
  • 链路追踪 Sleuth+Zipkin

刚开始SpringCloud还不成熟,所以拿了业界很多第三方组件来使用(大杂烩),但是受限于他人,就出现了多个技术框架闭源或者不维护了。

2、2019年到现在开发的项目的Cloud微服务技术栈

【AlibabaCloud全家桶(也称为SpringCloud Alibaba)】

  • 服务注册发现 Naocs
  • 远程调用 Open-Feign-SpringCloud
  • 业务网关 SpringCloudGateway
  • 限流降级 Sentinel
  • 分布式配置中心 Nacos
  • 链路追踪 Sleuth+zipkin

随着微服务社区不断强大,SpringCloud推出了自己的全家桶,比如SpringCloudGateway等,多个业界顶级公司也推出了微服务,并加入了Spring官方 比如Spring Cloud Azure(微软)、Alibaba Cloud(阿里),因此SpringCloud生态就很强大了。

国内互联网公司当下是怎样的技术栈?


主流的都是SpringCloud+AlibabaCloud组合起来使用,即部分采用SpringCloud自研,部分采用AlibabaCloud自研,也就是课程使用的这套技术栈,现在都合并了,所以也称为 AlibabaCloud 或者 SpringCloud Alibaba。

架构师会关注公司技术栈升级吗?

目前多数公司都是进行了架构升级,从以前的多个老技术栈改用新的技术栈,把旧SpringCloud 升级为SpringCloud Alibaba。但是也存在少数公司没进行架构升级(ROI不划算,非致命问题,有其他更紧急的项目)。


多机房部署-数据库复制延迟-解决方案


目的:

  • 实时灾备,用于故障切换
  • 读写分离,提供查询服务
  • 访问量暴涨引入读写分离,主机负责读写操作,从机只负责读操作

问题点:

复制存在延迟-跨机房-跨城市-跨国业务,主库写入了新数据但是从库来不急更新,导致业务读取从库出问题。

图片

问题场景:

用户注册登录,用户注册信息写入了主库,登录的时候从库查询不到,提示未注册。

解决方案一:

最简洁办法一,只能降低延迟,不能避免(花钱解决):

  • 分库架构,mysql服务水平扩展
  • 不同业务的mysql物理上放在不同物理机
  • 采用更好的硬件,比如固态比硬盘好
  • 扩国多机房部署-数据一致性一般是拉专线

解决方案二:

区分实时业务和非实时业务,由使用方进行控制,决定调用要查询主库还是从库

注册登录是核心,因此都是访问主库,查询用户信息走从库。

  • 优点:避免复制延迟导致数据不一致的问题
  • 缺点:代码增加了耦合性,需要增加参数访问主库还是从库

解决方案三:

引入缓存,写DB之后,再同步到分布式缓存里面,再返回给用户响应。

结论:

没用通用的方案,要根据业务结合,数据同步成本高,许多企业都是拉专线,成本高,因此不是全部业务都是要做到数据实时一致,基本都是最终一致。