以用户故事形式 直白的描述 Compass 的工作
-- Zoom.Quiet [2004-09-15 00:29:58]
定场诗
指南针!最简单! 你提要求,我指引, 剩下的…… 丫们自个儿解决去吧!
目标为PyUSS系统提供7*24小时可持续运行的基础支持。
- 咦咦咦?那未, OUSS 还没有的时候,我们仅仅是进行 Compass 的空运行???
- 嗯嗯!看来OUSS的模拟器也是 testUnit 的内容了!
故事
仅以熟悉的 Web 站点服务用户角度来讲述最基础的Compass 运行故事...
- 对话实际都是网络二进制报文,少部分是程序间的调用....
服务查询故事
最频繁发生的服务查询流程
正常事务流程图中右边灰色流程
角色
- 小W : 某台 Web应用站点的程序集合
- 小C : 小W上驻留的 Compass Agent(Client) 进程
- 大C : 中央 Compass Dispatcher(Server) 服务
- 路人甲 : 网络中某台DB服务器上的 Compass Agent(Client) 驻留进程
- 路人乙 : 网络中某台DB服务器上的 Compass Agent(Client) 驻留进程
- 路人丙 : 网络中某台DB服务器上的 Compass Agent(Client) 驻留进程
场景
- 小W发现有来访者要进行过去的数据查询!不得不进行数据库访问
Action!
- 小W: 小C!我要一个数据源!含有 foo 数据库,用户,口令都是sa 的!
- 小C: 得令!
- 小C: 大C!我要一个数据源!含有 foo 数据库,用户,口令都是sa 的!
- 大C: 晓得了!小C等着!
- 大C: 查了一下子,小W是第一次审请数据服务哪!没有丫的关系信息!
- 大C: (向所有Compass网络节点吆喝) 妈的!谁哪有 foo 数据库,用户,口令都是sa 的!小W要用!赶紧!
- 然后回去睡觉
- 路人甲 : Kao !我今儿说了多少回了!没有!(不予理睬,继续QQ泡MM....)
- 路人乙 : 嗯嗯!我查一查......
- 路人丙 : 我查!嗬嗬嗬,有一个!小C!我这有!
- 路人乙 : 嗯嗯!查到了,有一个!小C!我这有!
- 小C : 嗬嗬嗬!怎么有两个的?!?浪费!不过 路人丙 的先收到!也许快....
- 小C : 小W!喏! 路人丙 的可以连接!
- 小W : OK!....(开始查询!干活)
- 小C : 大C! 我这 foo 数据库,用户,口令都是sa 的! 用 路人丙 的了!路人乙的也有,我要当备份!
- 大C : 收到.........(生死薄中为小W记了笔)
断想
- 所有交互报文都会非常短小
- 但是小W等待小C反馈的时间绝对不能长!
- 小W与小C交流的接口要非常Easy 与原来,小W在脚本中写死的方式,相差不能太悬殊!
- 是Roo 的应用API 的开发了!??!
服务报警故事
最不想发生,但是一定会发布,而且是 Compass诞生原因的服务中断处理
正常事务流程图中中间 深红色以及亮绿色流程
角色
- 小W : 某台 Web应用站点的程序集合
- 小C : 小W上驻留的 Compass Agent(Client) 进程
- 大C : 中央 Compass Dispatcher(Server) 服务
- 路人乙 : 网络中某台DB服务器上的 Compass Agent(Client) 驻留进程
- 路人丙 : 网络中某台DB服务器上的 Compass Agent(Client) 驻留进程
- 路人丁 : 网络中某台DB服务器上的 Compass Agent(Client) 驻留进程
礼貌退场
- 路人乙 : 不行了!工作这么无聊!我不干了!小C!大C!我马上要自杀了!你们不要拦我!
- 小C: 小W! 路人乙 罢工了!你等会儿!
- 大C: 收到.........(生死薄中从小C那划去 路人乙 的相关记录)...哎...谁都不容易!
- 小C: 大C!我要一个数据源!含有 foo 数据库,用户,口令都是sa 的!
- 大C: 晓得了!查了一下子,路人丙 有,你先用着!
- 大C: (向所有Compass网络节点吆喝) 妈的!除了 路人丙 谁哪有 foo 数据库,用户,口令都是sa 的?
- 然后回去睡觉
- 小C : 路人丙!在否?! foo 数据库,用户,口令都是sa 的有?
- 路人丙: 烦着呢!别理我!正在整理硬盘!
- 路人丁 : 我查!嗬嗬嗬,有一个!小C!我这有!
- 小C : 路人丁!你有哪!我爱你! 小W 路人丁的! 大C! 路人丁 的可以, 路人丙 的暂时不能使用!
- 大C: 收到.........(生死薄中从小C那修改相关记录)...哎...谁都不容易!
意外死亡
- 小W: 小C!我要一个数据源!含有 foo 数据库,用户,口令都是sa 的!
- 小C: 得令!
- 小C: 我查! 路人丁 有,嗬嗬嗬! easy!
- 小C: 路人丁?在否?! foo 数据库,用户,口令都是sa 的有?
- 小C: 路人丁?在么?!!
- 小C: 路人丁?!!
- 小C: MMD!死了?!?! 大C! 路人丁 翘了!我现在需要 foo 数据库,用户,口令都是sa 的数据源!!
- 大C: 收到.........(生死薄中从小C那修改相关记录)...哎...谁都不容易!
- 大C: (向所有Compass网络节点吆喝) 妈的!除了 路人丁 谁哪有 foo 数据库,用户,口令都是sa 的?
- 然后回去睡觉
- 路人丙: 噢!好了!我有!我可以...小C!
- 小C : 小W!现在用 路人丙 的先! 大C!路人丙的在用了!
- 大C: 收到.........(生死薄中从小C那修改相关记录)...哎...谁都不容易!
断想
- 单点故障??? 在Compass 中处理是自然快捷的....吧?!
- 但是影响的效率,以及可靠?
- Twisted 在此仅仅作为网络通讯的标准工具包,但是通过报文的自动发送,广播,等等,正确快速的修正服务间的依赖关系,并保证实际应用的连续性?!
需要精巧的设计!