21. 基于SEDA+Reactor+FSM
技术的软件设计
RockServer • SEDA(Staged Event-Driven Architecture)
Jetty Continuation Queue 框架是为了支持高并发的操作。采用
RESTFul 基于事件驱动和线程驱动的混合并发
API ReactorPool
Request Meta Rock Data HTTP Data 模式。核心思想是将服务器的处理划
Dispatcher Reader Reader Reader
Time 分为各个Stage,利用queue链接起来
Jetty Response Meta Rock Data HTTP Data
Out 形成一个pipeline的处理链;在Stage中
Servlet Dispatcher Writer Writer Writer 利用控制器进行资源的调控,资源的
Container
调度依据运行时的状态监视的数据来
Platform Interface System Monitor 进行,从而形成一种反应控制的机制。
HTTP MapReduce Zookeeper
JMX 通过queue和每个stage的线程池来分担
Interface Interface
高并发请求并保持吞吐量和响应时间
DDB Interface DFS Interface ……
的平衡。
• Reactor是一种事件消息驱动的异步通
讯和该并发处理模型。
• FSM (Finite State Machine)即有限状态
机,途中的每个Stage内部以FSM的方
式实现。
22. 实现流程示例:GetObject
Jetty HTTP Message ReqDispatch MetaReader RockDataReader HttpDataWriter RespDispatch
GetObject
GetObject 连续从Rock中读取
数据,并写入HTTP
生成 Response
GetObjectTask
响应用户的
REST消息 生成Task在不同
的状态间切换, 读取元数据
每个状态会有不 找到对应的
同的Reactor进 Rock和Chunk 返回操作成功
行处理
Read OK
Req Dispatch Meta Valid Req Rock Data HTTP Data
Reader Reader More Data Writer
d
Invalid Req
F aile
R ead
ta
re Da
N o Mo ailed
Send Rsp eF
Response /Writ
Dispatch
23. 实现流程示例:GetObject
Jetty HTTP Message ReqDispatch MetaReader RockDataReader HttpDataWriter RespDispatch
GetObject
GetObject 连续从Rock中读取
数据,并写入HTTP
生成 Response
GetObjectTask
响应用户的
REST消息 生成Task在不同
的状态间切换, 读取元数据
每个状态会有不 找到对应的
同的Reactor进 Rock和Chunk 返回操作成功
行处理
Read OK
Req Dispatch Meta Valid Req Rock Data HTTP Data
Reader Reader More Data Writer
Invalid Req led
Fai
ad
Re
ata
ore D
No M Failed
Send Rsp e
Response /Writ
Dispatch
28. 基于CAS的用户管理和登录技术
RockStor采用CAS实现集中登录认证支撑。
CAS旨在为 Web 应用系统提供一种可靠的
单点登录方法。从结构上看,CAS 包含两
个部分: CAS Server 和 CAS Client。CAS
Server 需要独立部署,主要负责对用户的
认证工作;CAS Client 负责处理对客户端受
保护资源的访问请求,需要登录时,重定
向到 CAS Server。
http://www.jasig.org/cas
35. 写操作性能评估
Object Size (对象大小)
8KB 16KB 64KB
Start time 2011-09-22 09:34:00 2011-09-21 15:36:00 2011-09-23 09:40:00
Stop time 2011-09-22 14:30:00 2011-09-21 19:00:00 2011-09-23 13:08:00
Total Data size(GB) 1024.023 1024.023 1024.023
Total operations
134220800 67110400 16777600
count
Total used
4.93 3.4 3.467
time(hour)
Total
7084.320 5429.644 1331.556
throughput/sec
Total MB/sec 58.04 88.96 87.26
Total average
132.230 184.174 751.001
latency(us)
Total miss count 0 0 0
Total err count 0 0 0
38. 读操作性能评估
Object Size (对象大小)
8KB 16KB 64KB
Start time 2011-09-22 14:30:00 2011-09-21 19:02:00 2011-09-23 13:28:00
Stop time 2011-09-23 07:46:00 2011-09-22 00:24:00 2011-09-23 15:56:00
Total Data size(GB) 1024.023 1024.023 1024.023
Total operations
134220800 67110400 16777600
count
Total used
17.267 4.933 2.467
time(hour)
Total
2155.119 3452.181 1864.178
throughput/sec
Total MB/sec 17.65 56.56 122.17
Total average
464.012 289.672 536.429
latency(us)
Total miss count 0 0 0
Total err count 0 0 0