1. Rocketmq消费模型(实时性) 常见的数据同步方式有这几种: push:producer发送消息后,broker马上把消息投递给consumer。这种方式好在实时性比较高,但是会增加broker的负载;而且消费端能力不同,如果push推送过快,消费端会出现很多问题。 pull:produc ...
分类:
其他好文 时间:
2019-05-19 19:23:56
阅读次数:
218
前言 何为编解码,通俗的来说,我们需要将一串文本信息从A发送到B并且将这段文本进行加工处理,如:A将信息文本信息 编码 为2进制信息进行传输。B接受到的消息是一串2进制信息,需要将其 解码 为文本信息才能正常进行处理。 上章我们介绍的Netty如何解决拆包和粘包问题,就是运用了解码的这一功能。 ja ...
分类:
Web程序 时间:
2019-05-19 00:04:10
阅读次数:
151
上文我们阐述了Netty的Reactor模型。在Reactor模型的第二阶段,Netty会处理各种io事件。对于客户端的各种请求就是在这个阶段去处理的。本文便来分析一个新的连接是如何被处理的。 代码的入口就从read方法开始。这里的unsafe的类型是NioMessageUnsafe,在服务端启动时 ...
分类:
Web程序 时间:
2019-05-13 16:26:11
阅读次数:
130
不论是NioServerSocketChannel,还是NioSocketChannel,最终都会调用父类AbstractChannel的构造函数,pipeline也在channel被创建的时候被创建。 而这里是创建了一个DefaultChannelPipeline。构造函数会保存传入的channe ...
分类:
Web程序 时间:
2019-05-02 23:44:10
阅读次数:
256
Spark 通信架构 1、spark 一开始使用 akka 作为网络通信框架,spark 2.X 版本以后完全抛弃 akka,而使用 netty 作为新的网络通信框架。最主要原因:spark 对 akka 没有维护,需要 akka 更新,spark 的发展受到了 akka 的牵制,akka 版本之间 ...
分类:
其他好文 时间:
2019-05-02 21:48:37
阅读次数:
152
Netty服务端处理新连接的流程: 1.检测新连接 2.基于NioServerSocketChannel创建客户端的NioSocketChannel 3.分配客户端channel的线程,注册线程所对应的selector 4.向selector注册读事件 新连接检测 服务端在创建完服务端的NioSer ...
分类:
Web程序 时间:
2019-05-02 20:10:12
阅读次数:
149
NioEventLoop启动触发条件: 1.服务端绑定本地端口 2.新连接接入通过chooser绑定一个NioEventLoop 服务端绑定本地端口 绑定本地端口,使用下面方法; 最终会调用doBind0()方法: 这个时候就会调用channel对应NioEventLoop的execute方法,会判 ...
分类:
Web程序 时间:
2019-05-02 09:54:02
阅读次数:
159
最近刚给公司测试环境上了K8s,大部分容器采用得是以alpine为基础的镜像,基础服务如MySQL、Redis等以域名的方式连接,但是出现一个很奇怪的现象,部分Pod内应用报DNS超时,大概报错日志是这样的(JAVA):io.netty.resolver.dns.DnsNameResolverTimeoutException:[/10.96.0.10:53]querytimedoutafter50
分类:
Web程序 时间:
2019-05-01 01:25:15
阅读次数:
365
前言 上一节中我们提到了同步异步与阻塞非阻塞的区别,知道了同步并不等于阻塞。而本节的主角NIO是一种 同步非阻塞的I/O模型 ,并且是 I/O多路复用模型 。NIO在java中被称为 New I/O。它并不能提高I/O处理的效率,注意我这里说的是效率,而从根本上解决的是I/O处理的并发问题。 那么N ...
分类:
Web程序 时间:
2019-04-30 12:14:02
阅读次数:
179
client 关闭后会执行 finally 代码块,可以在这里可以进行重连操作 参考: "微言netty:不在浮沙筑高台" ...
分类:
Web程序 时间:
2019-04-29 12:54:50
阅读次数:
329