Red5的网络应用框架采用的是Apache的Mina(http://mina.apache.org)。
Mina简化了基于Java的网络应用开发,这里把我研究时候搜集到的资料列出来,希望对初步想研究Mina的朋友有用。
官方网站的Quick Start还是要简单的看一下的,帮助主管了解一下:http://mina.apache.org/quick-start-guide.html
其实研究一个东西,别忘了所谓官方的初衷和宣布的特色,这可以为我们把握Mina用于项目能做那些事情提供部分依据:http://mina.apache.org/features.html ,其中基本的特色介绍有:1)针对各种不同的网络传输协议提供统一的接口(这点可以让我们推测其架构一定有一个协议层的封装);2)像Java EE中的Servlet Filter一样的过滤器架构(可以推测Red5在这个地方做了流量限制等操作);3)可以基于字节码进行数据处理,也可以在框架环境下定义编解码机制 (可以推测Red5在这个地方做了rtmp协议的解析);4)可定制的多种线程策略;5)拆包即用的传输层加密机制;5)负载控制;6)单元测 试;7)JMX管理;8)机遇流的支持;9)和一些框架很好的集成,例如Spring;10)能够很好的移植Netty应用过来。(心里记住上面的特性去 研究Mina也是一个很好的方法)。
这哥们的Blog还是可以参考的:http://weavesky.com/category/java/
IMB DeveloperWorks上的一篇文章http://www.ibm.com/developerworks/cn/java/j-lo-mina2 /也不错。
有个图帮助理解还是不错的,可以Google:Mina architecture。
还有官方网站的一个讲义不能不看。http://mina.apache.org/conferences.data/Mina_in_real_life_ASEU-2009.pdf
说实话就这些资料看完,大家基本就了解Mina了。如果大家要真正的使用Mina,我提供一些建议和思路,希望对大家有帮助:
先试着用Mina写一个最简单的聊天服务器(建议Mina+Flash)。写的过程请体会前面说的架构和Features。
较深层研究的话,请关注线程、线程池、并发与同步等概念与Mina的关系。
更深层的研究的话,请关注大型服务器架构、JVM虚拟机网络优化和内存管理、负载均衡、DoS攻击、带宽控制等内容,相信能让各位进入服务器端编程的世界。