这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战
AlibabaCloud和SpringCloud的区别?
1、地址
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之后,再同步到分布式缓存里面,再返回给用户响应。
结论:
没用通用的方案,要根据业务结合,数据同步成本高,许多企业都是拉专线,成本高,因此不是全部业务都是要做到数据实时一致,基本都是最终一致。
近期评论