java nio开发

Post on 02-Jun-2015

1.385 Views

Category:

Technology

48 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

孙晓晨 2010.5.12

可伸缩的网络服务

事件驱动

Reactor 模式

Java NIO

DCPP 应用

网络服务

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

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

网络服务

网络服务

可伸缩的目标

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

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

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

分而治之

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

• 满足条件时执行任务

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

• 基于事件的设计

事件驱动

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

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

Reactor Pattern

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

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

Reactor Pattern

单线程

java.nio

• Channel• Buffer• Selector• SelectionKey

java.nio - Channel

java.nio - Channel

java.nio - Buffer

java.nio - Selector

java.nio - SelectionKey

java.nio - SelectionKey

Reactor Pattern - reactor

Reactor Pattern - decode

Reactor Pattern - decode

Reactor Pattern - handler

DCPPDate Center Peer to Peer Protocol

长度

版本

预留1

预留2

预留3

预留4

保留字

消息号

字段 1 字段 2 … 字段 n

类型

参数个数

类型

扩展号

字段1类型

字段1值

… … 字段n类型

字段n值

消息 头 消息 体

DCPP – 使用

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

com.woniu.connect.dcpp.DCPPServer

DCPP – 效率

DCPP

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

DCPP – 下一步

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

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

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

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

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

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

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

top related