当我们使用缓存时,必定会遇到缓存一致性问题,也就是在读写请求过程中数据库和缓存中的数据不一致。 下面将分析为什么会造成不一致, 所有的代码参考末尾。
缓存一致性问题
异步 Servlet 原理
2024年学习计划
13 集成 K8s
dubbo 基于 3.2.6 版本
如果我们将
dubbo应用部署在k8s环境中,我们就可以使用k8s作为注册中心。
服务调用流程
provider使用KubernetesServiceDiscovery#doRegister注册服务实例,元数据信息会存放在pod对象上.consumer使用ServiceNameMapping#getMapping来获取consumerUrl对应的serviceName.consumer使用KubernetesServiceDiscovery#getInstances来获取serviceName对应的服务实例.- 获取的服务实例上面就会有元数据信息,然后就会使用元数据信息来获取服务实例的所有
url列表. - 根据这些 url 列表来创建对应的
invoker,比如DubboInvoker,TripleInvoker.
KubernetesServiceDiscovery#doRegister 注册实例
源码位置: org.apache.dubbo.registry.kubernetes.KubernetesServiceDiscovery#KubernetesServiceDiscovery
12 集成 Spring
dubbo 基于 3.2.6 版本
dubbo 集成 spring 的实现方式:
- 提供
ServiceAnnotationPostProcessor来扫描@DubboService注解,导出服务 - 提供
ReferenceAnnotationBeanPostProcessor来扫描@DubboReference注解,引用服务 - 提供
SpringExtensionInjector来获取spring的bean - 提供
DubboInfraBeanRegisterPostProcessor来注册相关类,加载spring配置
ServiceAnnotationPostProcessor
对一个 HelloService, 会注册两个 beanDefinition,分别为