一个线程罢工的诡异事件 背景事情(事故)是这样的,突然收到报警,线上某个应用里业务逻辑没有执行,导致的结果是数据库里的某些数据没有更新。 虽然是前人写的代码,但作为 Bug maker&killer 只能咬着牙上了。 2019-03-12 问题排查 > Java 进阶 #Java #Thread #concurrent #disruptor
一致性 Hash 算法的实际应用 前言记得一年前分享过一篇《一致性 Hash 算法分析》,当时只是分析了这个算法的实现原理、解决了什么问题等。 但没有实际实现一个这样的算法,毕竟要加深印象还得自己撸一遍,于是本次就当前的一个路由需求来着手实现一次。 背景看过《为自己搭建一个分布式 IM(即时通讯) 系统》的朋友应该对其中的登录逻辑有所印象。 2019-03-01 算法
VLOG-004:国产程序员的一天 VLOG 近些年非常流行,最近这段时间我也拍了一些来记录生活。 之前一直想记录自己上班生活的一天;至于为什么标题要加上一个国产两字,是因为之前看到一位国外女程序媛的一天(视频链接见底部),这次是想让大家看看在天朝国情下的反差。 a day in the life of a software engineer:https://www.youtube.com/watch?v=rqX8PFcOpxA 2019-02-20 VLOG
长连接的心跳及重连设计 前言说道“心跳”这个词大家都不陌生,当然不是指男女之间的心跳,而是和长连接相关的。 顾名思义就是证明是否还活着的依据。 什么场景下需要心跳呢? 目前我们接触到的大多是一些基于长连接的应用需要心跳来“保活”。 由于在长连接的场景下,客户端和服务端并不是一直处于通信状态,如果双方长期没有沟通则双方都不清楚对方目前的状态;所以需要发送一段很小的报文告诉对方“我还活着”。 2019-01-23 Netty > cim #Heartbeat #IM
为自己搭建一个分布式 IM 系统二【从查找算法聊起】 前言 最近这段时间确实有点忙,这篇的目录还是在飞机上敲出来了的。 言归正传,上周更新了 cim 第一版:为自己搭建一个分布式 IM(即时通讯) 系统;没想到反响热烈,最高时上了 GitHub Trending Java 版块的首位,一天收到了 300+ 的 star。 2019-01-14 Netty > cim #IM #TrieTree
为自己搭建一个分布式 IM(即时通讯) 系统 前言大家新年快乐! 新的一年第一篇技术文章希望开个好头,所以元旦三天我也没怎么闲着,希望给大家带来一篇比较感兴趣的干货内容。 老读者应该还记得我在去年国庆节前分享过一篇《设计一个百万级的消息推送系统》;虽然我在文中有贴一些伪代码,依然有些朋友希望能直接分享一些可以运行的源码;这么久了是时候把坑填上了。 本文较长,高能预警;带好瓜子板凳。 2019-01-02 Netty > cim #Redis #Zookeeper #IM #推送 #IOT
一次生产 CPU 100% 排查优化实践 前言到了年底果然都不太平,最近又收到了运维报警:表示有些服务器负载非常高,让我们定位问题。 还真是想什么来什么,前些天还故意把某些服务器的负载提高(没错,老板让我写个 BUG!),不过还好是不同的环境互相没有影响。 2018-12-17 问题排查 > Java 进阶 #Java #Thread #concurrent #JVM #disruptor
没错,老板让我写个 BUG! 前言标题没有看错,真的是让我写个 bug! 刚接到这个需求时我内心没有丝毫波澜,甚至还有点激动。这可是我特长啊;终于可以光明正大的写 bug 了🙄。 先来看看具体是要干啥吧,其实主要就是要让一些负载很低的服务器额外消耗一些内存、CPU 等资源(至于背景就不多说了),让它的负载可以提高一些。 2018-12-12 Java 进阶 #Java #JVM