`
文章列表
      场景:       最近遇到一个account dubbo服务的并发注册问题,日志中抛出了大量的主键冲突问题。注册用户过程中有多个SQL操作,且这些SQL可以实现单机本地事务。         为何单机锁不能解决问题?正如下图请求是发送到不同的节点上的,单机的锁只能控制单节点的并发请求。                  解决思路:       如果加锁操作,会极大的减少主键冲突的日志。开始写了一版最直接的思路,后来发现dubbo服务中很多地方都可能出现并发问题,肖老板指导说可以做的更抽象点,如果jar包的形式提供出来,那么别的工程也可以复用这套逻辑了。所以后来又做 ...
    最近读了这本书结合这几个月的业余买股,觉得略有感悟心得,写出来分享下。       1. 新手切勿拿出全部家当,建议最多不超过自己五分之一的资产,而且这些资产即使全部亏掉也不会对你有啥影响。如果资产太多,会 ...
      回首2016的目标     2016的目标       1. 做好工作,提升技术能力           今年学习了dubbo rabbitmq 定时任务框架 分布式锁 分布式事务 重构 单测设计模式和优雅代码的设计。       2. 减肥20斤         今年从170基本减肥到150+ 不到20斤,不过差不多,算合格拉。       3. 葫芦丝会吹一首流行歌曲,吉他一次就好          葫芦丝会吹神话,真的好想你,女儿情,等你等了那么久,月亮代表我的心。吉他学习也行动起来了,上了7节课,会谈同桌的你和送别。一次就好还没有学到,这个算合格吧。   ...
      背景介绍:       今年第二个重要的优化是会员优化,具体流程见下图:                    为啥要做优化呢?因为在我们的场景中会员其实是少数,大多数用户其实都不是会员,但是每个用户比如说购买某些商品的时候,都要去查询一遍是否是会员,因为针对会员的话我们要展示一些会员价嘛。其实我们的会员接口是有缓存的,按理说正常不会很慢。但是细想比如你1000w用户,1w会员用户,那么1000w次查询,只有1w次能命中缓存,那么999w次都要走到db。 无奈我们的db略坑,每w次调用,总有那么一两次很慢,经过sql reivew发现也没啥问题,也都走了正常的索引了。这样 ...
      今年做了一个dubbo的本地存根优化,觉得卓有成效所以在这记录分享下。       问题:       1. Account服务如何将日均调用从千万优化到百万?看到这个问题,你是否也在纳闷,如果业务量没有下来,调用量怎么会下 ...
        写个笔记记录下工作中遇到的几种分布式事务实现的几种方式。         1)接口放在同一个工程里面,避免分布式事务。         比如之前我们认为account_credits是属于account工程的,credits_info是积分工程的。有个操作叫签到要求先插入credits_info表,然后更新account_credits表。为了避免分布式事务操作,我们直接都放在了积分工程里面。  弊端:本来就是服务拆分了,这样导致不同服务又耦合在一个工程里了。         2) BASE(base avilable soft state eventually ...
            背景介绍:       最近一个积分兑换优惠券的问题排查了半天,终于找出了问题。至于这个原因我任务分布式事务框架还是可以做一下优化的。         流程介绍:                            问题说明:       在调用扣积分的过程中,dubbo调用超时抛出异常,主事务捕获异常,调用事务回滚逻辑。所以直接调用了积分补偿的接口,但是积分补偿的接口判断没有该业务流水(为了接口的幂等性)直接返回正确结果。分布式事务以为补偿已经成功,整个事务完成。但是扣积分的接口超时的时间是不定的,如果在补偿之后才扣成功,那么就相当于补偿失败了。我们 ...
        最近研究了下我们这边使用分布式事务的场景,顺便学习了下分布式框架的源码。       场景:       积分兑换优惠券,两步操作 第一步调用积分服务扣积分,第二步发放优惠券。       分布式框架支持场景        1. 回补操作,简化的二阶段模型,一阶段做真实的扣除,一阶段成功则二阶段不做处理,一阶段失败则做回补操作。比如:扣积分成功 ,发放优惠券失败,那么则调用回补积分的接口进行补偿。        2. 二阶段,try conform cancel  一阶段进行冻结,二阶段真实的扣除或者取消。       分布式事务框架调用流程      ...

框架学习

       Spring          Spring IOC          Spring Resource          Spring JDBCTemplate使用介绍          AOP常用概念和技术梳理          Spring事务传递性探讨          NPE联想到的spring bean的生命周期          从ThreadLocal引出的联想          如何静态调用Spring容器的bean          为啥Spring和Spring MVC包扫描要分开?       MINA          Mina ...
         背景:       以前没玩过这东西,最近在做服务化拆分,大家讨论原本使用的tomcat启动的无web界面的应用,是否可以切到springBoot。中间有个小伙伴提出了使用了SpringBoot是否可以继续使用远程debug的功能。       远程debug demo        1.首先你得指定远程debug的应用的端口,由于我们是使用omad平台,里面有个设置debug端口,设置好后会自动重启应用,很方便。          2. 本地建立通信隧道,可以用命令行,secureCrt或者xshell都可以。 我直接用的是命令行, 12301是上面设置的远 ...
      dubbo的泛化调用是分布式事务dubbo服务的基础,无论是对dubbo服务的补偿机制,还是二阶段的commit或者cancel都要用到它,所以自己也写了些demo。总的感觉类似Java的反射机制,官网也有详细介绍。      1.dubbo官网       官网泛化调用地址      2. 测试demo        ReferenceConfig<com.alibaba.dubbo.rpc.service.GenericService> reference = new ReferenceConfig<com.aliba ...
          某段时间一直觉得生活很无趣。某个晚上突然觉得是不是生活中得营造一些让自己期待的东西,比如休假来一段旅游。每次休完假后,我总觉得我好像脱胎换骨一般,可以保持奋斗的激情半年+,所以我觉得对我来 ...
      最近看了下定时任务框架的代码,觉得有些知识还是挺受用的,记录下学习心得。          一: 涉及的技术点     1)如何解析 String  bean.methodName(int a, String b) ?          a) 可以通过解析得到每个值returnType : String,  beanName: bean ....          b) Spring启动后可以拿到ApplicationContext 所以可以获取bean的class          c) 根据bean的class和方法的参数类型int 和 String获得meth ...
1.写一个单例类。 // 第一种形式:饿汉式单例 public class Singleton { private Singleton(){} private static Singleton instance = new Singleton(); public static Singleton getInstance(){ return instance; } } // 第二种形式:懒汉式单例 public class Singleton { private static Si ...
      其实很早之前就看完了这本书,每次看完觉得受益良多。但是发现过段时间就忘记了这本书写啥,所以重读本书并记录读书笔记。所以学以致用,如果光学不练那这东西肯定不是你的,所以记录下来时刻提醒自己,可以 ...
Global site tag (gtag.js) - Google Analytics