28、分布式计算中的事件通知机制详解

分布式计算中的事件通知机制详解

1. 引言

在分布式计算环境中,向感兴趣的各方通知数据变化是一项常见需求。比如,股票行情程序需通知客户端股票价格的变动;计算机监控程序要告知管理员系统状态;病毒检测程序在检测到病毒时需警告用户;医疗监控程序在患者需要紧急关注时要通知医生等。

为描述方便,我们将对信息感兴趣的程序称为订阅者(subscribers),提供信息的程序称为发布者(publishers)。当发布者通知订阅者数据变化时,COM 客户端和 COM 服务器的传统角色会暂时反转,使用“发布者”和“订阅者”这两个术语能避免混淆。

订阅者了解数据变化的一种简单方式是定期轮询发布者,类似于定期刷新网页获取最新股票报价。以下代码展示了这种轮询方式:

while(true) {
  bool bMarketClosed = spStockWatcher->IsMarketClosed(); 
  if (bMarketClosed) {
    break; // time for dinner. 
  } 
  currentQuote = spStockWatcher->GetQuote("MSFT"); 
  ... 
} 

这种轮询方式存在明显问题:
- 资源利用效率低 :若数据变化不频繁,订阅者会浪费大量 CPU 周期请求相同数据,发布者也会浪费大量时间回复相同答案。若发布者位于远程机器,还会浪费网络带宽。
- 事件发生与数据接收存在时间延迟 :轮询在数据变化发生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值