第三章中的示例用于功能测试一般没有问题,但当压力上来或者发送大报文时,就会存在粘包/拆包问题。
这时就需要使用LineBasedFrameDecoder+StringDecoder
client端请求改为连续的100次
package com.xiaobing.netty.fourth;
import java.net.SocketAddress;
imp...
分类:
Web程序 时间:
2014-09-21 12:13:10
阅读次数:
344
本例以client端发送请求,server端返回当前时间...
分类:
Web程序 时间:
2014-09-21 10:52:00
阅读次数:
253
最近使用netty-4.0.23.Final版本编写服务端代码,有个获取客户端代码的小需求,以前使用servlet开发时很机械的就:StringipAddr="0.0.0.0";
if(reqest.getHeader("X-Forwarded-For")==null){
ipAddr=reqest.getRemoteAddr();
}else{
ipAddr=req.getHeader("X-Forwarded-For");
}..
分类:
Web程序 时间:
2014-09-21 04:29:50
阅读次数:
629
消息传递有很多种方式,请求/响应(Request/Reply)是最常用的。在前面的博文的例子中,很多都是采用请求/响应的方式,当服务器接收到消息后,会立即write回写一条消息到客户端。HTTP协议也是基于请求/响应的方式。但是请求/响应并不能满足所有的消息传递的需求,有些需求可能需要服务端主动推送消息到客户端,而不是被动的等待请求后再给出响应。发布/订阅(Publish/Subscribe)是一...
分类:
Web程序 时间:
2014-09-19 13:50:45
阅读次数:
203
Netty和Mina是Java世界非常知名的通讯框架。它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户netty.io。关于Mina已有@FrankHui的Mina系列文章,我正好最近也要做一些网络方面的开发,就研究一下Netty的源...
分类:
Web程序 时间:
2014-09-19 13:23:25
阅读次数:
305
1. 背景1.1. 宕机的代价1.1.1. 电信行业毕马威国际(KPMG International)在对46个国家的74家运营商进行调查后发现,全球通信行业每年的收益流失约为400亿美元,占总收入的1%-3%。导致收益流失的因素有多种,主要原因就是计费BUG。1.1.2. 互联网行业美国太平洋时间...
分类:
Web程序 时间:
2014-09-17 11:35:12
阅读次数:
329
1. 背景1.1. Java线程模型的演进1.1.1. 单线程时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能。1...
分类:
编程语言 时间:
2014-09-17 00:54:21
阅读次数:
413
Netty是一个传输层的框架,主要的功能就是两个:封装了NIO的操作,封装了CodeC接口,从而使得NIO的开发者只需要关注与业务功能本身的ChannelHandler。
不只是Netty,传输层主要解决的问题就是这两个,处理IO,处理CodeC
CodeC主要处理的问题就是字节流的分帧(Frame),一般有以下几种
按结束符,比如http定长使用消息头消息体的方式,在消...
分类:
Web程序 时间:
2014-09-16 17:32:30
阅读次数:
219
之前看了《Netty权威指南》一书,第14章用整个章节介绍了如何设计和实现一个简单的私有协议,内容很好,但是作者提供的代码片段有很多错误,根本不可能正确编译。
比如MarshallingEncoder这个类是Netty提供了JBoss Marshalling的一个适配类,它的encode方法是protected,不是public,并且其中用到的ChannelBufferByteOutput类是...
分类:
Web程序 时间:
2014-09-16 16:01:41
阅读次数:
294
最近在着手设计一个服务发布,治理的框架,参考了几个主流框架的代码,比如阿里的Dubbo,传输层的Netty,容器层的Tomcat等等,有一些体会。
经典的《面向对象分析与设计》一书中阐述了为什么设计是按层次划分的,种种好处自己去翻书,总结这么多框架,有一些架构设计的基本模式可以抓住。
通用的设计,尤其是大型的框架可以分为4层:接口层,抽象层,流程实现与适配层,具体实现层。
接...
分类:
其他好文 时间:
2014-09-16 14:22:00
阅读次数:
196