Submit Search
Upload
Head first in xmemcached yanf4j
•
3 likes
•
1,193 views
W
wavefly
Follow
memcache java client
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 18
Download now
Download to read offline
Recommended
Swift 2.0 的新玩意
Swift 2.0 的新玩意
hugo lu
美妙的多进程管理
美妙的多进程管理
rfyiamcool
Free rtos workshop1@nuu
Free rtos workshop1@nuu
紀榮 陳
实验五 读者 写者问题
实验五 读者 写者问题
jason1114
全端物聯網探索之旅 - 重點整理版
全端物聯網探索之旅 - 重點整理版
Simen Li
Ceph中国社区9.19 Ceph IO 路径 和性能分析-王豪迈05
Ceph中国社区9.19 Ceph IO 路径 和性能分析-王豪迈05
Hang Geng
11, exceptions
11, exceptions
ted-xu
NSCTF
NSCTF
Yi Tseng
Recommended
Swift 2.0 的新玩意
Swift 2.0 的新玩意
hugo lu
美妙的多进程管理
美妙的多进程管理
rfyiamcool
Free rtos workshop1@nuu
Free rtos workshop1@nuu
紀榮 陳
实验五 读者 写者问题
实验五 读者 写者问题
jason1114
全端物聯網探索之旅 - 重點整理版
全端物聯網探索之旅 - 重點整理版
Simen Li
Ceph中国社区9.19 Ceph IO 路径 和性能分析-王豪迈05
Ceph中国社区9.19 Ceph IO 路径 和性能分析-王豪迈05
Hang Geng
11, exceptions
11, exceptions
ted-xu
NSCTF
NSCTF
Yi Tseng
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
javatwo2011
Showinnodbstatus公开
Showinnodbstatus公开
longxibendi
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)
FLASH开发者交流会
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
Shanda innovation institute
基于协程的网络开发框架的设计与实现
基于协程的网络开发框架的设计与实现
mysqlops
tradictional DR solution vs Active-active solution
tradictional DR solution vs Active-active solution
Chen Xin xin
IOS入门分享
IOS入门分享
zenyuhao
Aswan&hump
Aswan&hump
wang hongjiang
从运维系统的开发谈安全架构设计
从运维系统的开发谈安全架构设计
mysqlops
Oracle Security 101
Oracle Security 101
Dahui Feng
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化
Harvey Zhang
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江
thinkinlamp
2011 06-12-lamp-mysql
2011 06-12-lamp-mysql
pwesh
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)
Kris Mok
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
National Cheng Kung University
20 cpu04
20 cpu04
Huaijin Chen
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
twMVC
Ali-tomcat
Ali-tomcat
wang hongjiang
Exodus2 大局观
Exodus2 大局观
wang hongjiang
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
YingSiang Geng
The comet technology on Jetty
The comet technology on Jetty
wavefly
Jetty(version 8)核心架构解析
Jetty(version 8)核心架构解析
wavefly
More Related Content
Similar to Head first in xmemcached yanf4j
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
javatwo2011
Showinnodbstatus公开
Showinnodbstatus公开
longxibendi
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)
FLASH开发者交流会
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
Shanda innovation institute
基于协程的网络开发框架的设计与实现
基于协程的网络开发框架的设计与实现
mysqlops
tradictional DR solution vs Active-active solution
tradictional DR solution vs Active-active solution
Chen Xin xin
IOS入门分享
IOS入门分享
zenyuhao
Aswan&hump
Aswan&hump
wang hongjiang
从运维系统的开发谈安全架构设计
从运维系统的开发谈安全架构设计
mysqlops
Oracle Security 101
Oracle Security 101
Dahui Feng
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化
Harvey Zhang
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江
thinkinlamp
2011 06-12-lamp-mysql
2011 06-12-lamp-mysql
pwesh
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)
Kris Mok
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
National Cheng Kung University
20 cpu04
20 cpu04
Huaijin Chen
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
twMVC
Ali-tomcat
Ali-tomcat
wang hongjiang
Exodus2 大局观
Exodus2 大局观
wang hongjiang
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
YingSiang Geng
Similar to Head first in xmemcached yanf4j
(20)
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
Showinnodbstatus公开
Showinnodbstatus公开
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
基于协程的网络开发框架的设计与实现
基于协程的网络开发框架的设计与实现
tradictional DR solution vs Active-active solution
tradictional DR solution vs Active-active solution
IOS入门分享
IOS入门分享
Aswan&hump
Aswan&hump
从运维系统的开发谈安全架构设计
从运维系统的开发谈安全架构设计
Oracle Security 101
Oracle Security 101
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql
2011 06-12-lamp-mysql
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
20 cpu04
20 cpu04
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
Ali-tomcat
Ali-tomcat
Exodus2 大局观
Exodus2 大局观
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
More from wavefly
The comet technology on Jetty
The comet technology on Jetty
wavefly
Jetty(version 8)核心架构解析
Jetty(version 8)核心架构解析
wavefly
Rpc原理与实现
Rpc原理与实现
wavefly
Google protocol buffers简析
Google protocol buffers简析
wavefly
ClassLoader简析
ClassLoader简析
wavefly
Java并发核心编程
Java并发核心编程
wavefly
More from wavefly
(6)
The comet technology on Jetty
The comet technology on Jetty
Jetty(version 8)核心架构解析
Jetty(version 8)核心架构解析
Rpc原理与实现
Rpc原理与实现
Google protocol buffers简析
Google protocol buffers简析
ClassLoader简析
ClassLoader简析
Java并发核心编程
Java并发核心编程
Head first in xmemcached yanf4j
1.
Head First in
Xmemcached-yanf4j Nathan Liu http://blog.csdn.net/liu251 1
2.
内容大纲 简介 传输层实现 应用层协议 Q&A
2
3.
传输层实现 BIO NIO(Reactor) AIO(Proactor) xmemcache中的使用:事件抽象 xmemcache中的使用:事件抽象 xmemcache的多Selector架构 xmemcache的多
Selector架构 的多Selector NIOSession-SocketChannel 消息传输流程 3
4.
I/O models 《Unix Network
Programming》 Chapter 6.2 I/O Models
5.
I/O models Socket编程,KeyWord: Socket编程,
编程,KeyWord: Read Request Decode Request Process Service Encode Reply Write Reply 5
6.
I/O models BIO BIO经典代码 BIO经典代码 1、每个线程分配独立的堆栈空间,随着工作线程的增多,加大了 JVM调度线程的负担 2、工作线程的时间浪费在I/O阻塞上 3、工作线程数量超过极限,降低服务器的效率
6
7.
I/O models BIO Classic
Service Designs 7
8.
I/O models NIO流程 NIO流程
8
9.
I/O models
NIO流程 NIO流程 注意: 1、获取key要将 remove,避免就绪 的key下次被触发 2、注册 OP_WRITE事件 vs SocketChannel.wri te 线程竞争 9
10.
I/O models NIO Trick
and Trap (示例代码EchoServer、EchoServer2.通过 (示例代码EchoServer EchoServer2.通过 EchoServer、 telnet 127.0.0.1 8000 测试) 8000测试) 1、获取key要将remove,避免就绪的key下 、获取key 要将remove ,避免就绪的key key要将 remove,避免就绪的key下 次被触发 2、注册OP_WRITE事件 vs 、注册OP_WRITE OP_WRITE事件 SocketChannel.write 线程竞争 3、注册事件register vs inerestOps 、注册事件register key.interestOps(key.interestOps()&~SelectionKey.OP_WRITE); key.interestOps(key.interestOps() | SelectionKey.OP_WRITE); 10
11.
NIO-Reactor NIO 编程模式:Reactor
编程模式:Reactor 一般地,I/O多路复用机制依赖于一个事件多路分离器 一般地,I/O ,I/O多路复用机制依赖于一个事件多路分离器 (Event Demultiplexer)。 (Event Demultiplexer)。 开发人员预先注册需要处理的事件及其事件处理器(回 调函数) 分离器对象将来自事件源的 I/O事件分离出来,并分发到 分离器对象将来自事件源的I/O I/O事件分离出来,并分发到 对应的read/write事件处理器(Event Handler) 对应的read/write事件处理器(Event read/write事件处理器 (Event 两个与事件分离器有关的模式是 Reactor和Proactor。 两个与事件分离器有关的模式是Reactor Proactor。 Reactor和 Reactor模式采用同步IO,而Proactor采用异步IO。 Reactor模式采用同步 IO,而 Proactor采用异步 IO。 模式采用同步IO ,而Proactor 采用异步IO Java的NIO为reactor模式提供了实现的基础机制,它的 Java的 NIO为 reactor模式提供了实现的基础机制,它的 Selector当发现某个channel有数据时,会通过 Selector当发现某个 channel有数据时,会通过 当发现某个channel SlectorKey来告知我们,在此我们实现事件和 handler的 SlectorKey来告知我们,在此我们实现事件和 handler的 来告知我们,在此我们实现事件和handler 绑定。 11
12.
NIO-Reactor NIO 编程模式:Reactor
编程模式:Reactor 12
13.
NIO-Reactor 示例代码: reactor Package 示例代码:
13
14.
NIO-Reactor 在示例代码中Reactor所在的线程负责所有的逻辑处理。 在示例代码中Reactor
Reactor所在的线程负责所有的逻辑处理。 Reactor.selector主要注册3个事件:OP_WRITE OP_READ Reactor.selector主要注册 个事件:OP_WRITE 主要注册3 OP_ACCEPT, 可以用不同的线程来处理这些事件 . 可以用不同的线程来处理这些事件. dispatchAcceptEvent dispatchReadEvent dispatchWriteEvent 这3个方法使用线程来完成处理(要注 意同步、线程上下文切换的开销) 在访问量大的情况下,推荐使用专门的线程来分别完成 OP_READ OP_ACCEPT 事件。在xmemcache中,由 OP_ACCEPT事件。在 xmemcache中,由 事件。在xmemcache reactor线程完成OP_ACCEPT事件,单独的线程处理 reactor线程完成 OP_ACCEPT事件,单独的线程处理 线程完成OP_ACCEPT OP_READ事件(逻辑处理比较耗时) OP_READ事件(逻辑处理比较耗时) 一个Reactor线程对应一个Selector实例,采用多 一个Reactor 线程对应一个Selector Reactor线程对应一个 Selector实例,采用多 selector/reactor架构能够增加吞吐率。 xmemcache中, selector/reactor架构能够增加吞吐率。 xmemcache中, 架构能够增加吞吐率。xmemcache Reactor线程数量=CPU数量 Reactor线程数量 =CPU数量 线程数量=CPU 14
15.
NIO-Reactor xmemcache中,用数组来维护Reactor线程组,第一个 xmemcache中,用数组来维护 Reactor线程组,第一个
中,用数组来维护Reactor 数组元素处理OP_ACCEPT | OP_CONNECT 事件。其余 数组元素处理OP_ACCEPT OP_CONNECT事件。其余 Reactor负责处理OP_WRITE OP_READ 事件,以及自定 Reactor负责处理 负责处理OP_WRITE OP_READ事件,以及自定 义的EANBLE_WRITE ENABLE_READ IDLE EXPIRED 义的EANBLE_WRITE REGISTER UNREGISTER 事件。 UNREGISTER事件。 OP_WRITE OP_READ OP_ACCEPT事件是由 OP_ACCEPT事件是由 操作系统触发的,controller处理完后,再由 操作系统触发的,controller controller处理完后,再由 Session处理。在处理这些事件的过程中可能会 Session处理。在处理这些事件的过程中可能会 产生ENABLE_WRITE ENABLE_READ READBLE 产生ENABLE_WRITE WRITABLE事件。 WRITABLE事件。 Session处理xmemcache抽象的事件- Session处理 xmemcache抽象的事件 处理xmemcache 抽象的事件- EventType 15
16.
16 NIO-Reactor NIO-Reactor NIO-Reactor NIO-Reactor NIO-Reactor NIO-Reactor NIO-Reactor NIO-Reactor
17.
NIO-Reactor类图 类图
17
18.
Q&A
18
Download now