不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2018-11-13 14:25  分类:Java库/系统 

Netty:option 和 childOption 参数设置说明

作者:php-note.com  发布于:2018-11-04 16:30  分类:Java库/系统 

本节是本RPC网络传输的最后一个小节,讲解了Netty的部分,我之前已经讲过很多Netty的运用的基本知识了,也写过相关的博客讲述过这个模块,这边就不再赘述了

Netty的模块,主要就是一些TCP的参数设置,handlers链的设置,编码器和译码器的编写,关于RPC的编码器和译码器,我们之前就讲述过了,也不多说,请求响应,我们之前也详细描述过

虽然之前说过很多次,我还是没有理解Netty 高水位和地水位的那个问题,希望有大神给出不设置高水位和低水位会出现的问题的代码和讲解

作者:php-note.com  发布于:2018-10-17 00:01  分类:Java库/系统 

因为我们选用的是Netty,写过Netty的或者有一点Netty基础的,我勉强算是Netty刚刚入门的菜鸟吧,都知道我们需要C/S端写一个编码器和译码器。

关于编码器和译码器,有很多种实现方式,没有优劣之分,只有在某种场景下,哪种方式更加适合用的说法,小到StringDecoder/StringEncoder,大到自定义协议的Decoder/Encoder,都会有其最最适合它的场景。我们这节就是要找一个最最适合RPC的编码器和译码器

作者:php-note.com  发布于:2018-10-03 16:34  分类:Java库/系统 

为什么要有引用计数器

Netty里四种主力的ByteBuf,其中UnpooledHeapByteBuf 底下的byte[]能够依赖JVM GC自然回收;而UnpooledDirectByteBuf底下是DirectByteBuffer,如 Java堆外内存扫盲贴 所述,除了等JVM GC,最好也能主动进行回收;而PooledHeapByteBuf 和 PooledDirectByteBuf,则必须要主动将用完的byte[]/ByteBuffer放回池里,否则内存就要爆掉。所以,Netty ByteBuf需要在JVM的GC机制之外,有自己的引用计数器和回收过程。

一下又回到了C的冰冷时代,自己malloc对象要自己free。 但和C时代又不完全一样,内有引用计数器,外有JVM的GC,情况更为复杂。

作者:php-note.com  发布于:2018-10-02 01:31  分类:Java库/系统 

本章节包括:

1)OIO-------阻塞IO传输服务

2)NIO-------异步IO传输服务

3)本地传输服务-----在JVM内异步的通信

4)嵌入式传输服务------测试你的ChannelHandlers

作者:php-note.com  发布于:2018-10-01 23:11  分类:Java库/系统 

在接下来的几个小节中,我们将为你讲解Channel,EventLoop,ChannelFuture这几个组件的细节的讨论,这几个组件可以视为Netty网络模块抽象的几个典范

1)Channel-------关键字:Sockets

2)EventLoop-------关键字:控制流,多线程,并发

3)ChannelFuture-------关键字:异步通知

作者:php-note.com  发布于:2018-10-01 11:36  分类:Java库/系统 

图2.1展示了我们即将要编写的Netty服务器端和客户端的俯瞰图,如果你是一个专注于web开发的开发者我想你还是很熟悉的,你应该会对Netty服务器端和客户端的模型有着更深的完整理解。

作者:php-note.com  发布于:2018-09-23 19:31  分类:Java库/系统 

在这个章节,我们将向你展示如果构建一个基于Netty的客户端和服务端,编写的例子很简单------客户端发送信息到服务器端,服务器端将信息原样返回,这个实战例子很重要,这这么两个原因:

 1)这个例子首先需要搭建你的开发环境,并且验证你的开发环境是否可用,当然,如果你打算我们列举的例子应用到你的项目之中做好准备,这也是很重要的

 2)你将获取亲手实践Netty的经验,感受前一章节我们讲述的:用ChannelHandlers去构建你的逻辑应用,这将为你在第三章的深入学习Netty打好良好的基础

作者:php-note.com  发布于:2018-09-23 17:32  分类:Java库/系统 

 在这个章节中,我们将浅析Netty的几个核心组件

  1)Channels

  2)Callbacks

  3) Futures

  4) Events and handlers

 

这些构建模块代表了不同的结构种类:资源,逻辑,和通知,你的应用可以使用这些连接到网络,并且通过这些这些获取到数据流

对于每一个组件而言,我们将给一个最基本的定义,并且给出一个合适简单的例子说明它的作用

作者:php-note.com  发布于:2018-09-23 17:09  分类:Java库/系统 

在我们准备研究Netty之前,请先查看一下我们下表1.1总结出来的Netty的核心特性,有些是技术方面的,有些是架构层次或者是宏观上的设计,在这本书里我们将要多次讲解分析这些特性,表1.1

类别 Netty特性实现
设计 为多种网络传输类型提供统一的APIs,包括阻塞IO和非阻塞IO
简单但高效的线程模型
真实的无连接的数据包socket的支持
逻辑组件通过链接的链式方式使用,使每个组件可以重复使用
易用性 丰富的JAVA文档和大量的代码示例
仅仅依赖于JDK1.6,部分特性可能需要依赖JDK1.7或者其他的额外jar包
性能 有更大的吞吐量和低延迟性相比于直接使用JAVA 的原生APIs
引用了池的概念和重复利用的理念来减少资源的消耗
最大限度的减少内存拷贝
健壮性 不会因为连接的缓慢,连接的损耗产生OOM
在优质的网络环境中消除Netty应用的不公平的读写比
安全性 完成对SSL\TLS和StartSSL的支持
可以在Applet或者OSGI等这些受限制的环境中运行
社区驱动 社区成立早,且活跃度高,版本更新频繁