上一篇文章我们讨论了聊天的基本流程,那么我们现在基于上一篇文章的流程开始定义协议,如果有朋友有更好的建议,可以在下边回复一起学习讨论,我们说登录分为两部分,第一部分为和服务器的连接阶段,第二部分为验证阶段,那么首先我们基于这2个部分来指定协议:连接阶段:{"id":"xxxx","#":"conn"...
分类:
Web程序 时间:
2014-06-17 13:20:25
阅读次数:
345
Thrift做的事情就是跨语言的分布式RPC,通过编写.thrift文件声明接口类和方法,客户端调用定义的方法,Server端实现定义的接口。虽然的确RPC是需要网络请求,但不像Netty这种NIO网络编程库(还要关注很多数据传输中的细节,比如数据如何序列化、如何在字节数组里建立结构、如何在两端解析字节数组、如何处理Handler里的事件状态、如何把多个Handler按顺序串起来),Thrift掩盖了数据传输这件事情,开发者使用的时候就是纯纯的RPC的使用感受。...
分类:
其他好文 时间:
2014-06-15 19:32:46
阅读次数:
2553
今天周六,正好顺便把聊天系统的通讯原理写一下,本来是用XMPP+Openfire做了一个聊天,但是在做群聊那块需要去写插件来主动向表里变去写数据,因为openfire外国人写的,最初设计的群聊是会议室那种形式,和我们现在这种QQ群聊还是有差别的,改造起来比较麻烦,需要去通都源码等等,openfire...
分类:
Web程序 时间:
2014-06-14 15:27:28
阅读次数:
301
读完这一章,我们基本上可以了解到Netty所有重要的组件,对Netty有一个全面的认识,这对下一步深入学习Netty是十分重要的,而学完这一章,我们其实已经可以用Netty解决一些常规的问题了。
一、先纵览一下Netty,看看Netty都有哪些组件?
为了更好的理解和进一步深入Netty,我们先总体认识一下Netty用到的组件及它们在整个Netty架构中是怎么协调工作...
分类:
Web程序 时间:
2014-06-08 18:29:40
阅读次数:
366
对于Netty在这里就不做过多介绍了,详情咨询http://netty.io/wiki/user-guide-for-4.x.html
我们在使用netty的过程中肯定会遇到传输对象的情况,Netty4通过ObjectEncoder和ObjectDecoder来支持。
首先我们定义一个Use...
分类:
Web程序 时间:
2014-06-06 16:44:59
阅读次数:
392
“zero-file-copy”是仅仅提供给NIO传输方式使用的特性。这个特性允许你以很快并且高效的方式从文件系统之来传输内容。这个特性把本地文件中的字节内容可以不通过从内核空间复制到用户空间的情况下通过网络传输出去。...
分类:
Web程序 时间:
2014-06-02 15:06:34
阅读次数:
365
最后找到了,NioEventLoopGroup,构造这个group的时候传递了一个ThreadFactory参数,所以这个group和Nio学习5——对NIO.2(AIO) Reactor模式封装的拆解中的AsynchronousChannelGroup也是大同小异的!...
分类:
Web程序 时间:
2014-06-02 05:01:53
阅读次数:
412
参考Netty API
io.netty.channel.ChannelPipeline
A list of ChannelHandlers which handles or intercepts inbound events and outbount operations of a
Channel. ChannelPipeline implements an advanced fo...
分类:
Web程序 时间:
2014-06-01 15:44:27
阅读次数:
533
我们通过nio学习了Reactor模式,但是在java7中又出现了NIO.2,新的异步框架出来了,在上节中的服务端视线中看不到Reactor的影子了,但是Netty in action中写到:But notice that NIO.2 handles threading and the creation of the so-called event loop for you.所以模式还是没变,只是封装了而已!那让我们来分解下AIO(NIO.2)的封装吧!...
分类:
其他好文 时间:
2014-06-01 01:40:11
阅读次数:
388
1. 背景1.1. 惊人的性能数据最近一个圈内朋友通过私信告诉我,通过使用Netty4 +
Thrift压缩二进制编解码技术,他们实现了10W
TPS(1K的复杂POJO对象)的跨节点远程服务调用。相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。事实上,我对这个数据...
分类:
Web程序 时间:
2014-05-31 19:25:15
阅读次数:
553