发布时间:2022-09-29 10:06:22
?整个系统是一个C/S系统,客户端没有做复杂的图形化界面而是用Java终端开发的(黑窗口),服务端IM实例是Netty写的socket服务。ZK作为服务注册中心,Redis用来做分布式会话的缓存,并保存用户信息和轻量级的消息队列。服务端的工作原理在上述架构中:NettyServer启动,每启动一台Server节点,都会把.........【阅读全文】
发布时间:2022-09-28 10:24:54
业务场景: 本次实战就是模拟微信的IM聊天,每个客户端和服务端建立连接,并且可以实现点对点通信(单聊),点对多点通信(群聊)。设计思路: 我们要实现的是点(客户端)对点(客户端)的通讯,但是我们大部分情况下接触的业务都是客户端和服务端之间的通讯(所谓的C/S模式?),客户端只需要知道服务端的 IP 地址.........【阅读全文】
发布时间:2022-09-26 13:49:59
Channel概念与java.nio.channel概念一致,用以连接IO设备(socket、文件等)的纽带。Netty 4.x之后的Channel变化较大,官方的唬人的说法是无法通过简单的关键字替换进行迁移。用得较多应该是:ChannelHandler接口重新设计,换了个较为清晰的名字;write不会主动flush。由于笔者3.x、4.x都没用过,所以也无法深入理解版本.........【阅读全文】
发布时间:2022-09-26 10:26:42
将具体代码实现前,先来谈谈Netty的线程模型。正如许多博客所提到的,Netty采用了Reactor模式,但是许多博客也只是提到了而已,同时大家也不会忘记附上几张Doug Lee大神的图,但是并不会深入的解释。为了更好的学习和理解Netty的线程模型,我在这里稍微详细的说一下我对它的理解。Reactor模式有多个变种,Netty基于Mu.........【阅读全文】
发布时间:2022-09-23 09:59:25
见名知义,IoFilter应该是一个过滤器,没错,它确实是一个过滤器。它和Servlet中的过滤器类似,主要用于拦截和过滤I/O操作中的各种信息。在Mina的官方文档中已经提到了IoFilter的作用: (1)记录事件的日志(这个在本文中关于LoggingFilter的讲述中会提到)(2)测量系统性能 .........【阅读全文】