从源码分析如何优雅的使用 Kafka 生产者 前言在上文 设计一个百万级的消息推送系统 中提到消息流转采用的是 Kafka 作为中间件。 其中有朋友咨询在大量消息的情况下 Kakfa 是如何保证消息的高效及一致性呢? 正好以这个问题结合 Kakfa 的源码讨论下如何正确、高效的发送消息。 内容较多,对源码感兴趣的朋友请系好安全带😏(源码基于 v0.10.0.0 版本分析)。同时最好是有一定的 Kafka 使用经验,知晓基本的用法。 2018-10-11 Kafka > Java 进阶 #Kafka
「造个轮子」——cicada 设计全局上下文 前言本次 Cicada 已经更新到了 v1.0.3。 主要是解决了两个 issue,#9 #8。 所以本次的主要更新为: Cicada 采用合理的线程分配来处理接入请求线程以及 IO 线程。 支持多种响应方式(以前只有 json,现在支持 text)。 为了满足上者引入了 context。 优雅停机。 其中我觉得最核心也最有用的就是这个 Context,并为此重构了大部分代码。 2018-10-09 cicada > 轮子 #Java #HTTP #Netty #ThreadLocal
设计一个百万级的消息推送系统 前言首先迟到的祝大家中秋快乐。 最近一周多没有更新了。其实我一直想憋一个大招,分享一些大家感兴趣的干货。 鉴于最近我个人的工作内容,于是利用这三天小长假憋了一个出来(其实是玩了两天🤣)。 先简单说下本次的主题,由于我最近做的是物联网相关的开发工作,其中就不免会遇到和设备的交互。 最主要的工作就是要有一个系统来支持设备的接入、向设备推送消息;同时还得满足大量设备接入的需求。 所以本次分享的内容 2018-09-25 Netty #Kafka #Redis #Zookeeper #推送 #路由策略 #注册发现
「造个轮子」——cicada 设计一个配置模块 前言在前两次的 cicada 版本中其实还不支持读取配置文件,比如对端口、路由的配置。 因此我按照自己的想法创建了一个 issue ,也收集到了一些很不错的建议。 最终其实还是按照我之前的想法来做了这个配置管理。 同时将 cicada 升级到了 v1.0.2。 2018-09-14 cicada > 轮子 #Java #HTTP #Netty
【译】如何高效的使用 Git 原文链接 代码昨天还是运行好好的今天就不行了。 代码被删了。 突然出现了一个奇怪的 bug,但是没人知道怎么回事。 如果你出现过上面的任何一种情况,那本篇文章就是为你准备的。 除了知道 git add, git commit , git push 之外,Git 中还需要其他重要的技术需要掌握。长远来看对我们是有帮助的。这里我将向你展示 Git 的最佳实践。 2018-09-07 翻译 #Git
「造个轮子」——cicada 源码分析 前言两天前写了文章《「造个轮子」——cicada(轻量级 WEB 框架)》 向大家介绍了 cicada 之后收到很多反馈,也有许多不错的建议。 同时在 GitHub 也收获了 100 多颗 小♥♥(绝对不是刷的。。) 也有朋友希望能出一个源码介绍,本文就目前的 v1.0.1 版本来一起分析分析。 没有看错,刚发布就修复了一个 bug,想要试用的请升级到 1.0.1 吧。 2018-09-05 cicada > 轮子 #Java #HTTP #Netty
「造个轮子」——cicada(轻量级 WEB 框架) 前言俗话说 「不要重复造轮子」,关于是否有必要不再本次讨论范围。 创建这个项目的主要目的还是提升自己,看看和知名类开源项目的差距以及学习优秀的开源方式。 好了,现在着重来谈谈 cicada 这个项目的核心功能。 我把他定义为一个快速、轻量级 WEB 框架;没有过多的依赖,核心 jar 包仅 30KB。 也仅需要一行代码即可启动一个 HTTP 服务。 2018-09-03 cicada > 轮子 #Java #HTTP #Netty
强如 Disruptor 也发生内存溢出? 前言OutOfMemoryError 问题相信很多朋友都遇到过,相对于常见的业务异常(数组越界、空指针等)来说这类问题是很难定位和解决的。 本文以最近碰到的一次线上内存溢出的定位、解决问题的方式展开;希望能对碰到类似问题的同学带来思路和帮助。 主要从表现-->排查-->定位-->解决 四个步骤来分析和解决问题。 2018-08-29 Java 进阶 #Java #Thread #concurrent #JVM #OOM
分布式(一) 搞定服务注册与发现 背景最近在做分布式相关的工作,由于人手不够只能我一个人来怼;看着这段时间的加班表想想就是够惨的。 不过其中也有遇到的不少有意思的事情今后再拿来分享,今天重点来讨论服务的注册与发现。 分布式带来的问题我的业务比较简单,只是需要知道现在有哪些服务实例可供使用就可以了(并不是做远程调用,只需要拿到信息即可)。 要实现这一功能最简单的方式可以在应用中配置所有的服务节点,这样每次在使用时只需要通过某种算法 2018-08-27 Distributed #SpringBoot #Zookeeper
什么样的简历不会被丢进回收站 前言从去年校招开始到现在负责部门的面试,从我手上流走的简历多多少少也有上百封了。 同时最近秋招又要开始了,就想着把我这一年来筛选简历的经验分享给大家,多少还是能提高一些命中率。 突出优势「简历」自然是突出简单的好,相信大部分面试官都不是全职做面试工作;多数都是工作之余筛选简历。 就我的情况来说,每天都需要在工作中挤出一部分时间从 10 几份简历中挑选出比较靠谱的。 总共大概花费 5 分钟的时间, 2018-08-21 小技巧 #简历