Top Banner
DCPP( 管管 ) Java 管管管 I/O 管管管管管管 管管管 2010.5.12
29

Java nio开发

Jun 02, 2015

Download

Technology

cheney s
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Java nio开发

DCPP( 管道 )Java 高性能 I/O 网络应用开发

孙晓晨 2010.5.12

Page 2: Java nio开发

可伸缩的网络服务

事件驱动

Reactor 模式

Java NIO

DCPP 应用

Page 3: Java nio开发

网络服务

Web 服务、对象分发基本结构:

读取请求解码业务处理重新编码响应

Page 4: Java nio开发

网络服务

Page 5: Java nio开发

网络服务

Page 6: Java nio开发

可伸缩的目标

• 负载增长的情况下优雅的降级• 持续改进增长的资源 (CPU/ 内存 / 带宽 )• 可用和性能目标:

• 更短的延时• 峰值压力• 可调节的 QoS• C10K 问题

• 可伸缩的银弹 - 分而治之

Page 7: Java nio开发

分而治之

• 处理流程拆分成小的任务• 每个任务的执行是非阻塞的

• 满足条件时执行任务

• java.nio 提供的支持• Non-blocking 读 / 写• IO Event

• 基于事件的设计

Page 8: Java nio开发

事件驱动

• 更加高效• 更少的资源• 更低的负载• 分发变慢

• 编程复杂度提高• 非阻塞• 服务状态控制• 多线程

Page 9: Java nio开发

Reactor Pattern

• Reactor 调度 IO 事件给处理器• Handler 非阻塞的处理• 事件绑定到处理器上• Proactor Pattern

Pattern-Oriented Software Architecture, Volume 2 (POSA2)http://www.cs.wustl.edu/~schmidt/POSA/

Page 10: Java nio开发

Reactor Pattern

单线程

Page 11: Java nio开发

java.nio

• Channel• Buffer• Selector• SelectionKey

Page 12: Java nio开发

java.nio - Channel

Page 13: Java nio开发

java.nio - Channel

Page 14: Java nio开发

java.nio - Buffer

Page 15: Java nio开发

java.nio - Selector

Page 16: Java nio开发

java.nio - SelectionKey

Page 17: Java nio开发

java.nio - SelectionKey

Page 18: Java nio开发

Reactor Pattern - reactor

Page 19: Java nio开发

Reactor Pattern - decode

Page 20: Java nio开发

Reactor Pattern - decode

Page 21: Java nio开发

Reactor Pattern - handler

Page 22: Java nio开发

DCPPDate Center Peer to Peer Protocol

长度

版本

预留1

预留2

预留3

预留4

保留字

消息号

字段 1 字段 2 … 字段 n

类型

参数个数

类型

扩展号

字段1类型

字段1值

… … 字段n类型

字段n值

消息 头 消息 体

Page 23: Java nio开发

DCPP – 使用

Page 24: Java nio开发

DCPP – 使用java –DhttpPort=8000 -classpath "$CLASSPATH“

com.woniu.connect.dcpp.DCPPServer

Page 25: Java nio开发

DCPP – 效率

Page 26: Java nio开发

DCPP

• Mina1.1.7• ActiveMQ5.3.1• Freemarker2.3• Winstone0.9• H2database• Jquery

Page 27: Java nio开发

DCPP – 下一步

• 更加精简的包依赖• 单元测试• 支持更多的使用场景• 迁移 - Mina2 pk Netty3• Scala 编程

Page 28: Java nio开发

感谢国家,感谢党感谢大家

Page 29: Java nio开发

Q&A & 眼保健操 2.0.1-Snapshot第一节:

(→_→)(↑_↑)(←_←)(↓_↓)(→_→)(↑_↑)(←_←)(↓_↓)(→_→)(↑_↑)(←_←)(↓_↓)(→_→)(↑_↑)(←_←)(↓_↓)

第二节:(→_←)(↑_↓)(←_→)(↓_↑)(→_←)(↑_↓)(←_→)(↓_↑)(→_←)(↑_↓)(←_→)(↓_↑)(→_←)(↑_↓)(←_→)(↓_↑)

第三节:(→_↑)(←_↑)(↓_←)(↓_→)(→_↑)(←_↑)(↓_←)(↓_→)(→_↑)(←_↑)(↓_←)(↓_→)(→_↑)(←_↑)(↓_←)(↓_→)

第四节:(↖_↗)(↘_↙)(↖_↘)(↙_↗)(↖_↗)(↘_↙)(↖_↘)(↙_↗)(↖_↗)(↘_↙)(↖_↘)(↙_↗)(↖_↗)(↘_↙)(↖_↘)(↙_↗)