以用户故事形式 直白的描述 Compass 的工作

-- Zoom.Quiet [2004-09-15 00:29:58]

1. 定场诗

指南针!最简单! 你提要求,我指引, 剩下的…… 丫们自个儿解决去吧!

  • 目标为PyUSS系统提供7*24小时可持续运行的基础支持。

  • 咦咦咦?那未, OUSS 还没有的时候,我们仅仅是进行 Compass 的空运行???
  • 嗯嗯!看来OUSS的模拟器也是 testUnit 的内容了!

2. 故事

  • 仅以熟悉的 Web 站点服务用户角度来讲述最基础的Compass 运行故事...

  • 对话实际都是网络二进制报文,少部分是程序间的调用....

2.1. 服务查询故事

最频繁发生的服务查询流程

2.1.1. 角色

  • 小W : 某台 Web应用站点的程序集合
  • 小C : 小W上驻留的 Compass Agent(Client) 进程
  • 大C : 中央 Compass Dispatcher(Server) 服务
  • 路人甲 : 网络中某台DB服务器上的 Compass Agent(Client) 驻留进程
  • 路人乙 : 网络中某台DB服务器上的 Compass Agent(Client) 驻留进程
  • 路人丙 : 网络中某台DB服务器上的 Compass Agent(Client) 驻留进程

2.1.2. 场景

  • 小W发现有来访者要进行过去的数据查询!不得不进行数据库访问

2.1.3. 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记了笔)

2.1.4. 断想

  • 所有交互报文都会非常短小
  • 但是小W等待小C反馈的时间绝对不能长!
  • 小W与小C交流的接口要非常Easy 与原来,小W在脚本中写死的方式,相差不能太悬殊!
    • 是Roo 的应用API 的开发了!??!

2.2. 服务报警故事

最不想发生,但是一定会发布,而且是 Compass诞生原因的服务中断处理

2.2.1. 角色

  • 小W : 某台 Web应用站点的程序集合
  • 小C : 小W上驻留的 Compass Agent(Client) 进程
  • 大C : 中央 Compass Dispatcher(Server) 服务
  • 路人乙 : 网络中某台DB服务器上的 Compass Agent(Client) 驻留进程
  • 路人丙 : 网络中某台DB服务器上的 Compass Agent(Client) 驻留进程
  • 路人丁 : 网络中某台DB服务器上的 Compass Agent(Client) 驻留进程

2.2.1.1. 礼貌退场

  • 路人乙 : 不行了!工作这么无聊!我不干了!小C!大C!我马上要自杀了!你们不要拦我!
  • 小C: 小W! 路人乙 罢工了!你等会儿!
  • 大C: 收到.........(生死薄中从小C那划去 路人乙 的相关记录)...哎...谁都不容易!
  • 小C: 大C!我要一个数据源!含有 foo 数据库,用户,口令都是sa 的!
  • 大C: 晓得了!查了一下子,路人丙 有,你先用着!
  • 大C: (向所有Compass网络节点吆喝) 妈的!除了 路人丙 谁哪有 foo 数据库,用户,口令都是sa 的?
    • 然后回去睡觉
  • 小C : 路人丙!在否?! foo 数据库,用户,口令都是sa 的有?
  • 路人丙: 烦着呢!别理我!正在整理硬盘!
  • 路人丁 : 我查!嗬嗬嗬,有一个!小C!我这有!
  • 小C : 路人丁!你有哪!我爱你! 小W 路人丁的! 大C! 路人丁 的可以, 路人丙 的暂时不能使用!
  • 大C: 收到.........(生死薄中从小C那修改相关记录)...哎...谁都不容易!

2.2.1.2. 意外死亡

  • 小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那修改相关记录)...哎...谁都不容易!

2.2.2. 断想

  • 单点故障??? 在Compass 中处理是自然快捷的....吧?!
  • 但是影响的效率,以及可靠?
  • Twisted 在此仅仅作为网络通讯的标准工具包,但是通过报文的自动发送,广播,等等,正确快速的修正服务间的依赖关系,并保证实际应用的连续性?!
  • 需要精巧的设计!