背景介绍:
今年第二个重要的优化是会员优化,具体流程见下图:
为啥要做优化呢?因为在我们的场景中会员其实是少数,大多数用户其实都不是会员,但是每个用户比如说购买某些商品的时候,都要去查询一遍是否是会员,因为针对会员的话我们要展示一些会员价嘛。其实我们的会员接口是有缓存的,按理说正常不会很慢。但是细想比如你1000w用户,1w会员用户,那么1000w次查询,只有1w次能命中缓存,那么999w次都要走到db。 无奈我们的db略坑,每w次调用,总有那么一两次很慢,经过sql reivew发现也没啥问题,也都走了正常的索引了。这样就导致了经常会有dubbo超时的报警了,无奈只好优化代码了,提高缓存命中率,尽量少的走db,以空间换时间了。
技术优化:
1.本地存根 2. fake缓存
具体优化流程见下图:
说明:
1. 当库里面读不到会员信息的时候,写个fake对象到cache里面关键属性为空。
2. 处理fake的地方有两个一个是在api里面,防止哪个消费者使用了本地存根,直接读取account缓存,关键属性为空会导致那些应用空指针的问题。如果消费者不走本地缓存则直接走dubbo接口,所以dubbo实现里面对获取的缓存对象做是否fake的处理再返回给消费方。
3. 所有涉及会员更新或者插入的操作都要删除缓存,之前我就是由于插入会员的时候缓存没有删掉,导致了一个bug。一开始会员记录没有,插入会员的时候不用删除缓存没问题的原因是缓存里面压根就没有任何会员的信息,但是fake了会员对象就一下子不同了。
相关推荐
dubbo+zookeeper缓存方案 dubbo+zookeeper缓存方案dubbo+zookeeper缓存方案dubbo+zookeeper缓存方案
提供dubbo消费者直接使用缓存的能力,当缓存不存在时,再访问远程dubbo服务。 相对于dubbo默认的缓存机制,此项目具有如下优点: 原生dubbo cache机制只能缓存结果到消费者jvm中,并且cache key不能选择。 缓存key...
对原有的dubbo远程调用的异步的缺陷性进行了优化方案
Dubbo入门_实战 使用dubbo优化单点登录系统、 Dubbo的架构 监控中心
dubbo资源 dubbo-admin dubbo demo
dubbo示例代码dubbo-sample
incubator-dubbo-dubbo-2.6.1
用例模式:通过缓存数据,方便下一次操作,依赖普通模式。 增加依赖:通过调用maven命令,下载jar包和热加载到系统,主要用来分析接口方法参数,主要作用在普通模式。 依赖列表:通过分析pom文件,展示已经加载的jar...
dubbo资源包
本套视频从分布式系统的基本概念出发,由浅入深,讲解了RPC原理,Dubbo基本使用,Dubbo高可用场景以及Dubbo原理,涉及了分布式系统中服务注册、服务发现、负载均衡、灰度发布、集群容错、服务降级等核心概念的讲解及...
Dubbo是阿里巴巴开源的分布式服务化治理框架(微服务框架),久经阿里巴巴电商平台的大规模复杂业务的高并发考验,到目前为止Dubbo仍然是开源界中体系最完善的服务化治理框架,因此Dubbo被国内大量的的互联网公司和...
SpringBoot整合Dubbo 增强版,优化了maven update 后 resource源文件夹不显示的问题
首先,从知识层面对Dubbo有一个了解和认识,请看《Dubbo培训与实战.pptx》,然后把Dubbo用到实际项目中来,请看实例代码《Dubbo实例代码(Sping+Dubbo+Maven).zip》,里面包括dubboDemoProvide和dubboDemoConsumer...
dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.
Dubbo监控系统配置Dubbo监控系统配置Dubbo监控系统配置
dubbo-admin dubbo管理台
【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题...
spring_dubbo spring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_...
解决dubbo接口自定义异常的捕捉问题,dubbo消费者可以捕捉到提供者所抛出的自定义异常。