- 浏览: 289582 次
-
最新评论
-
labreeze:
szq80140 写道@PostConstruct 也可以试了 ...
NPE联想到的spring bean的生命周期 -
szq80140:
@PostConstruct 也可以
NPE联想到的spring bean的生命周期 -
chenaini119:
>>> inter interceptor ...
Java之Interceptor和Filter -
labreeze:
renzhengzhi 写道实际是因为Exception是Th ...
Log4j 打印堆栈信息 -
renzhengzhi:
实际是因为Exception是Throwable的子类,而lo ...
Log4j 打印堆栈信息
文章列表
场景:
最近遇到一个account dubbo服务的并发注册问题,日志中抛出了大量的主键冲突问题。注册用户过程中有多个SQL操作,且这些SQL可以实现单机本地事务。
为何单机锁不能解决问题?正如下图请求是发送到不同的节点上的,单机的锁只能控制单节点的并发请求。
解决思路:
如果加锁操作,会极大的减少主键冲突的日志。开始写了一版最直接的思路,后来发现dubbo服务中很多地方都可能出现并发问题,肖老板指导说可以做的更抽象点,如果jar包的形式提供出来,那么别的工程也可以复用这套逻辑了。所以后来又做 ...
《巴菲特的投资智慧》读后感
- 博客分类:
- 读书笔记
最近读了这本书结合这几个月的业余买股,觉得略有感悟心得,写出来分享下。
1. 新手切勿拿出全部家当,建议最多不超过自己五分之一的资产,而且这些资产即使全部亏掉也不会对你有啥影响。如果资产太多,会 ...
回首2016的目标
2016的目标
1. 做好工作,提升技术能力
今年学习了dubbo rabbitmq 定时任务框架 分布式锁 分布式事务 重构 单测设计模式和优雅代码的设计。
2. 减肥20斤
今年从170基本减肥到150+ 不到20斤,不过差不多,算合格拉。
3. 葫芦丝会吹一首流行歌曲,吉他一次就好
葫芦丝会吹神话,真的好想你,女儿情,等你等了那么久,月亮代表我的心。吉他学习也行动起来了,上了7节课,会谈同桌的你和送别。一次就好还没有学到,这个算合格吧。
...
dubbo缓存低命中率之fake优化
- 博客分类:
- dubbo框架
背景介绍:
今年第二个重要的优化是会员优化,具体流程见下图:
为啥要做优化呢?因为在我们的场景中会员其实是少数,大多数用户其实都不是会员,但是每个用户比如说购买某些商品的时候,都要去查询一遍是否是会员,因为针对会员的话我们要展示一些会员价嘛。其实我们的会员接口是有缓存的,按理说正常不会很慢。但是细想比如你1000w用户,1w会员用户,那么1000w次查询,只有1w次能命中缓存,那么999w次都要走到db。 无奈我们的db略坑,每w次调用,总有那么一两次很慢,经过sql reivew发现也没啥问题,也都走了正常的索引了。这样 ...
dubbo优化之本地存根缓存前置
- 博客分类:
- dubbo框架
今年做了一个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 ...
有意思的远程debug代码
- 博客分类:
- 软件管理工具
背景:
以前没玩过这东西,最近在做服务化拆分,大家讨论原本使用的tomcat启动的无web界面的应用,是否可以切到springBoot。中间有个小伙伴提出了使用了SpringBoot是否可以继续使用远程debug的功能。
远程debug demo
1.首先你得指定远程debug的应用的端口,由于我们是使用omad平台,里面有个设置debug端口,设置好后会自动重启应用,很方便。
2. 本地建立通信隧道,可以用命令行,secureCrt或者xshell都可以。 我直接用的是命令行, 12301是上面设置的远 ...
dubbo的泛化调用
- 博客分类:
- dubbo框架
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 ...
其实很早之前就看完了这本书,每次看完觉得受益良多。但是发现过段时间就忘记了这本书写啥,所以重读本书并记录读书笔记。所以学以致用,如果光学不练那这东西肯定不是你的,所以记录下来时刻提醒自己,可以 ...