提示
服务治理本质是解决"服务多了之后怎么管"的问题,按实际落地分成四层来看:拆 → 联 → 稳 → 观。
一、拆:服务的拆分
服务大致分成三种类型:基础服务、业务服务、聚合服务,对它们的理解如下。
服务间解耦问题
- 分清上下游服务,比如订单可以调 用户、会员,但是反过来不行。
- 实在有耦合问题,通过聚合服务或MQ解决。
提示
服务治理本质是解决"服务多了之后怎么管"的问题,按实际落地分成四层来看:拆 → 联 → 稳 → 观。
服务大致分成三种类型:基础服务、业务服务、聚合服务,对它们的理解如下。
服务间解耦问题
在Java分布式锁最佳实践 已经知道了分布式锁的使用方式,这篇文章就来更进一步的了解在 Redisson中,到底如何去实现分布式锁。
在开始之前大家肯定也已经知道了,Redis是单线程模型,虽然是多路IO复用(可以同时接受多个请求),但每个命令本质上还是单线程去执行的,而在分布式锁的使用过程中肯定会涉及到多个命令一致性的问题,大家也肯定知道了使用的是Lua脚本。
在 十亿数据的订单分表 里面,已经搭建了一个分库分表的项目,它可以很好的运行,看起来也很简单(只需要在application里面加入一些配置即可)
但事情肯定不会如此简单,这次再来看看分库分表带来的一些问题,以及如何去解决
当数据量超过千万,达到亿级的时候,基本的MySQL已无法满足需求。想解决这个问题,从硬件层面可以升级更好的服务服务器比如云服务器或换更好的数据库比如postgresql,从软件层面就需要分库分表了。
这篇文章以十亿的数据量,订单表的形式来进行分库分表的学习,需要解决以下问题
MySQL的分库分表,首选的技术组件是 Apache ShardingSphere,其它的就是常规组件了
https://www.bilibili.com/video/BV1azy3BhEcZ
开始
UAT环境下,调用链路是 DubboA > DubboB > DubboC,现在在本地启动了一个服务DubboB1,如何在不修改UAT环境,让 UAT的DubboA 调用到本地的DubboB1: DubboA > DubboB1 > DubboC (PS: 网络畅通)
这其实就是一个Dubbo灰度的实践策略
https://www.bilibili.com/video/BV1Z9CJBFEX2/
Dubbo和Nacos都已经学过一些了,这期来学习一下它俩的集成。
注:Dubbo有接口级和应用级的注册方式,下面是以应用级为讲解。 Dubbo接口级和应用级注册的区别
https://www.bilibili.com/video/BV1PTWRzzE93
在 Nacos配置文件如何初始化的 里面,讲到了 NacosConfigApplicationContextInitializer,其实这里不但会做配置文件加载的初始化,还会做监听器的初始化
https://www.bilibili.com/video/BV1Zd4UzpE1X
Nacos 自定义了一个初始化的类 NacosConfigApplicationContextInitializer,继承关系如下
https://www.bilibili.com/video/BV13maZzJErs
Java开发者肯定都用过Redis做分布式锁,简单来说就是利用Redis的高性能,Redis加锁(插入一条数据),如果数据存在就说明已经被其它线程锁了,业务执行完毕后就释放锁(删除数据)。
但实际使用过程中,如果并发稍大,还是会存在一些问题,那么基于这些问题来学习分布式锁。有一个很好的开源工具 Redisson 用它来实现分布式锁可以有效的解决我们自定义锁的问题。
https://www.bilibili.com/video/BV19EapznEtX