设计一个全局异常处理器

2019-07-15
阅读 4 分钟
2.1k
前言 最近稍微闲了一点于是把这个半年都没更新的开源项目 cicada 重新捡了起来。 一些新关注的朋友应该还不知道这项目是干啥的?先来看看官方介绍吧(其实就我自己写的😀) cicada: 基于 Netty4 实现的快速、轻量级 WEB 框架;没有过多的依赖,核心 jar 包仅 30KB。 针对这个轮子以前也写过相关的介绍,感兴趣的可以再翻...

长连接的心跳及重连设计

2019-01-23
阅读 5 分钟
3.2k
前言 说道“心跳”这个词大家都不陌生,当然不是指男女之间的心跳,而是和长连接相关的。 顾名思义就是证明是否还活着的依据。 什么场景下需要心跳呢? 目前我们接触到的大多是一些基于长连接的应用需要心跳来“保活”。 由于在长连接的场景下,客户端和服务端并不是一直处于通信状态,如果双方长期没有沟通则双方都不清楚对...

为自己搭建一个分布式 IM 系统二【从查找算法聊起】

2019-01-14
阅读 6 分钟
2.8k
言归正传,上周更新了 cim 第一版;没想到反响热烈,最高时上了 GitHub Trending Java 版块的首位,一天收到了 300+ 的 star。

为自己搭建一个分布式 IM(即时通讯) 系统

2019-01-02
阅读 10 分钟
3.1k
老读者应该还记得我在去年国庆节前分享过一篇《设计一个百万级的消息推送系统》;虽然我在文中有贴一些伪代码,依然有些朋友希望能直接分享一些可以运行的源码;这么久了是时候把坑填上了。

设计一个可拔插的 IOC 容器

2018-11-15
阅读 4 分钟
2.6k
前言 磨了许久,借助最近的一次通宵上线 cicada 终于更新了 v2.0.0 版本。 之所以大的版本号变为 2,确实是向下不兼容了;主要表现为: 修复了几个反馈的 bug。 灵活的路由方式。 可拔插的 IOC 容器选择。 其中重点是后面两个。 新的路由方式 先来看第一个:路由方式的更新。 在之前的版本想要写一个接口必须的实现一个 ...

利用责任链模式设计一个拦截器

2018-10-22
阅读 5 分钟
8.9k
前言 近期在做 Cicada 的拦截器功能,正好用到了责任链模式。 这个设计模式在日常使用中频率还是挺高的,借此机会来分析分析。 责任链模式 先来看看什么是责任链模式。 引用一段维基百科对其的解释: 责任链模式在面向对象程式设计里是一种软件设计模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它...

「造个轮子」——设计 HTTP 请求全局上下文

2018-10-09
阅读 4 分钟
5.2k
前言 本次 Cicada 已经更新到了 v1.0.3。 主要是解决了两个 issue,#9(Boss线程数好像设置有误 ) #8(怎么返回纯字符串内容不要JSON格式?)。 所以本次的主要更新为: Cicada 采用合理的线程分配来处理接入请求线程以及 IO 线程。 支持多种响应方式(以前只有 json,现在支持 text)。 为了满足上者引入了 context。 优雅...

设计一个百万级的消息推送系统

2018-09-25
阅读 6 分钟
12.9k
前言 首先迟到的祝大家中秋快乐。 最近一周多没有更新了。其实我一直想憋一个大招,分享一些大家感兴趣的干货。 鉴于最近我个人的工作内容,于是利用这三天小长假憋了一个出来(其实是玩了两天?)。 先简单说下本次的主题,由于我最近做的是物联网相关的开发工作,其中就不免会遇到和设备的交互。 最主要的工作就是要有...

「造个轮子」——cicada 设计一个配置模块

2018-09-14
阅读 4 分钟
1.5k
前言 在前两次的 cicada 版本中其实还不支持读取配置文件,比如对端口、路由的配置。 因此我按照自己的想法创建了一个 issue ,也收集到了一些很不错的建议。 最终其实还是按照我之前的想法来做了这个配置管理。 同时将 cicada 升级到了 v1.0.2。 目标 在做之前是要把需求想好,到底怎样的一个配置管理是对开发人员来说...

「造个轮子」——cicada 源码分析

2018-09-05
阅读 5 分钟
1.5k
两天前写了文章[《「造个轮子」——cicada(轻量级 WEB 框架)》]([链接] 向大家介绍了 cicada 之后收到很多反馈,也有许多不错的建议。

Netty(三) 什么是 TCP 拆、粘包?如何解决?

2018-08-06
阅读 9 分钟
9k
前言 记得前段时间我们生产上的一个网关出现了故障。 这个网关逻辑非常简单,就是接收客户端的请求然后解析报文最后发送短信。 但这个请求并不是常见的 HTTP ,而是利用 Netty 自定义的协议。 有个前提是:网关是需要读取一段完整的报文才能进行后面的逻辑。 问题是有天突然发现网关解析报文出错,查看了客户端的发送日...

Netty(二) 从线程模型的角度看 Netty 为什么是高性能的?

2018-07-05
阅读 4 分钟
13.4k
前言 在之前的 SpringBoot 整合长连接心跳机制 一文中认识了 Netty。 但其实只是能用,为什么要用 Netty?它有哪些优势?这些其实都不清楚。 本文就来从历史源头说道说道。 传统 IO 在 Netty 以及 NIO 出现之前,我们写 IO 应用其实用的都是用 java.io.* 下所提供的包。 比如下面的伪代码: {代码...} <!--more-->...

Netty(一) SpringBoot 整合长连接心跳机制

2018-05-29
阅读 15 分钟
9.8k
前言 Netty 是一个高性能的 NIO 网络框架,本文基于 SpringBoot 以常见的心跳机制来认识 Netty。 最终能达到的效果: 客户端每隔 N 秒检测是否需要发送心跳。 服务端也每隔 N 秒检测是否需要发送心跳。 服务端可以主动 push 消息到客户端。 基于 SpringBoot 监控,可以查看实时连接以及各种应用信息。 效果如下: IdleSt...