2017年5月1日

基于补偿的数据库分布式事务实践

摘要: 分布式 数据库事务 补偿 阅读全文

posted @ 2017-05-01 11:50 flystar32 阅读(2884) 评论(0) 推荐(1) 编辑

2017年4月23日

Log4J,在踩坑中升级版本

摘要: 基本概念 Commons logging apache最早提供的日志的门面接口。避免和具体的日志方案(log4j、logback等)直接耦合。类似于JDBC的api接口,具体的的JDBC driver实现由各数据库提供商实现。JCL的思想也是想通过统一接口解耦,将日志方案的实现与日志接口分离。 但是 阅读全文

posted @ 2017-04-23 11:02 flystar32 阅读(23012) 评论(1) 推荐(0) 编辑

关于服务注册与发现

摘要: 服务注册 服务发现 zk 阅读全文

posted @ 2017-04-23 10:44 flystar32 阅读(1856) 评论(0) 推荐(0) 编辑

2017年4月9日

JVM内存模型-重排序&内存屏障

摘要: 之前写过的JAVA内存模型只涉及了单一数据的可见性,其实这仅仅是java内存模型的一小部分。其java内存模型中更重要的,应该是内存屏障,memory barrier。更粗犷一点的就内存栅栏memory fence。fence比较粗犷,代价也比较大,这里先从memory fence开始说起。 reo 阅读全文

posted @ 2017-04-09 14:02 flystar32 阅读(6616) 评论(2) 推荐(1) 编辑

2017年3月11日

GC初识

摘要: 准备知识 首先GC回收的都是堆内存。 Xms初始堆大小 , Xmx 堆的最大值, Xmn 新生代大小 判断对象是否需要被回收使用的是可达性分析法,Reachability Analysis。通过GC Roots开始所搜,可以被引用或者间接引用到的则是可达的。GC Roots有这些 虚拟机栈中的本地变 阅读全文

posted @ 2017-03-11 15:33 flystar32 阅读(640) 评论(0) 推荐(0) 编辑

2017年2月23日

SimpleChannelPool HealthCheck

摘要: 引子 "如何判断Socket已经关闭" 曾提到,经历了服务被拖死的教训后,我们在服务端开启了读超时500ms自动关闭连接的动作。注:服务端使用的是Thrift协议,线程模型使用的是TThreadpool。上线后,使用了连接池的上游调用方向我们报异常,说请求总是返回错误,表现的情形为Socket的In 阅读全文

posted @ 2017-02-23 22:21 flystar32 阅读(563) 评论(0) 推荐(0) 编辑

2017年1月18日

TCP三次握手与四次挥手

摘要: 一 连接与关闭 三次握手和四次挥手的状态图大家都比较清楚,本文主要分析读书中的一些疑问,和一些异常情况。 这是一个真实的三次握手和四次挥手的抓包信息 注意到,每条消息其实都是包含sequenceId和ackId的 二 为什么要三次握手? 1、《wireshark网络分析就这么简单》的说法 为什么要用 阅读全文

posted @ 2017-01-18 19:19 flystar32 阅读(730) 评论(0) 推荐(0) 编辑

2017年1月14日

如何判断Socket已经关闭

摘要: 引子 前段时间我们的服务由于一台交换机网络出现故障,导致数据库连接不上,但是在数据库的连接超时参数设置不合理,connect timeout设置的过长,导致接口耗时增加。DB连接超时后线程未正常结束,上游请求又持续进来,最终耗光了Java线程,JVM进入持续GC状态,无法恢复,直到手工重启才恢复服务 阅读全文

posted @ 2017-01-14 17:18 flystar32 阅读(13882) 评论(0) 推荐(0) 编辑

2017年1月3日

Java内存可见性

摘要: java 内存 可见性 阅读全文

posted @ 2017-01-03 22:40 flystar32 阅读(569) 评论(0) 推荐(0) 编辑

2016年12月16日

如何获取本机IP

摘要: 本机IP localhost 阅读全文

posted @ 2016-12-16 16:43 flystar32 阅读(2212) 评论(2) 推荐(2) 编辑

导航