VMware vSphere Web Services SDK编程指南(七)- 7.6 客户端数据同步

7.6 客户端数据同步(WaitForUpdatesEx)


本章包括以下主题:

7.1 PropertyCollector 介绍
7.2 用于属性收集的 vSphere 数据对象
7.3 用于属性收集的 vSphere 方法
7.4 PropertyCollector 示例 (RetrievePropertiesEx)
7.5 清单遍历
7.6 客户端数据同步(WaitForUpdatesEx)
7.7 服务器数据传输
7.8 PropertyCollector 性能
7.9 SearchIndex

本小节续前面章节继续翻译第6节客户端数据同步(WaitForUpdatesEx)


要维护服务器对象状态的客户端表示(通过监控清单属性),使用 CreateFilter 和 WaitForUpdatesEx 方法,WaitForUpdatesEx 方法支持一个增量的检索模型。


重要:用于增量检索的过滤器持续于整个会话期间,直到你销毁它们。


7.6.1 属性过滤器

一个 PropertyCollector 可能含有一个或多个关联的 PropertyFilter 对象;
一个 PropertyFilter 包含一个或多个关联的 PropertyFilterSpec 对象;
一个和 RetrievePropertiesEx 方法一起使用的 PropertyFilterSpec 有个有限的生命周期,服务器返回结果到你的客户端后就销毁过滤器。
对于一系列的递增的属性收集操作,WaitForUpdatesEx 方法依赖于 PropertyFilterSpec 对象,其可以对该方法进行多次调用。

要创建持久的属性筛选规范,使用 CreateFilter 方法。
当调用 CreateFilter 方法时,传递一个 PropertyFilterSpec 对象给该方法,该方法将新过滤器添加到与方法调用关联的 PropertyCollector ,并返回对新过滤器的引用。
当创建完过滤器后,你可以添加额外的 PropertyFilterSpec 对象。
在另一个会话中,不能与 PropertyCollector 共用一个过滤器。

7.6.2 WaitForUpdatesEx

WaitForUpdatesEx 方法支持一个基于指定等待时间的属性集合轮询机制。

当调用 WaitForUpdatesEx 方法时需指定如下参数:

1 到 PropertyCollector 实例的托管对象引用;

2 版本值确定一个序列值。
首次调用 WaitForUpdatesEx 方法时,指定一个空字符串(“”)来提取指定属性的一组完整的结果;
后续调用应该使用前次调用返回的版本值,如果没有包含版本值,服务器返回所有信息。
想了解更多有关数据版本信息,请查阅下一节服务器数据传输

3 指定在单个响应中传输的数据量的 options属性( WaitOptions.maxObjectUpdates 属性)及 PropertyCollector 应该等待更新的秒数( WaitOptions.maxWaitSeconds 属性);

WaitOptions.maxWaitSeconds 属性值决定了 PropertyCollector 是使用即时检索还是轮询模式收集属性值。
当你调用 WaitForUpdatesEx,等待时间为 0,它会检查更新并立即返回;
当你调用 WaitForUpdatesEx,等待时间大于 0,该方法会等待指定的时间或直到有一个更改。
WaitForUpdatesEx 方法会阻塞进程,直到更新发生或直到它超时,超时是受 maxWaitSeconds 值的影响、收集更新属性值所花费的时间及 PropertyCollector 策略。

如果属性收集操作超时,并且请求的属性没有更新,那么对于 WaitForUpdatesEx 的响应 PropertyCollector 返回 null。

■ maxWaitSeconds 是一个可选属性,如果你没有指定值,PropertyCollector 等待更新的时间会尽可能地长。因此,如果没有设置 maxWaitSeconds 属性值,当获取到所有数据后 waitForUpdatesEx 方法将阻塞线程,等待与 vSphere 服务器的 TCP 连接超时。你的代码可以通过以下方式来处理这个问题:
从一个单独的线程调用 waitForUpdatesEx 方法;
查找特定的更新,然后停止调用该方法;
或者更改 TCP 连接超时 [BindingProviderProperties.CONNECT_TIMEOUT]。

■ maxWaitSeconds 设置为0值,会指定一个立即的调用和响应。PropertyCollector 检查由所有过滤器联合指定的全部属性更新,这些过滤器与 PropertyCollector 的实例相关联。如果没有更新,PropertyCollector 返回任何结果或null。

■ maxWaitSeconds 值大于0时,指定一个等待之后的轮询。如果在设定的 maxWaitSeconds 时间内没有更新,PropertyCollector 返回 null。

下表列出了这两种方式的一些优势和不足。

WaitForUpdatesEx 不同方式比较

方 式优 势不 足

MaxWaitSeconds=0
只返回自版本指定后更改的属性。
只返回改变的数据,提供比 RetrieveProperties更好的网络利用率
即使服务器上没有任何更改,也返回一个空集。
依赖于你的客户机应用程序,这可能是低效的

MaxWaitSeconds>0
阻塞线程直到发生更新,有效的利用网络资源。
这是你唯一可以取消的操作
阻塞线程直到发生更新,但这个调用可以被取消,
这样你就可以监视操作进行的时间,并在必要时取消


WaitForUpdatesEx 方法返回一个 UpdateSet 数据对象,其复合数据结构显示如下图所示。

UpdateSet 数据对象

这里写图片描述





原文:
VMware vSphere 6.5 Documentation Center:Client Data Synchronization (WaitForUpdatesEx)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值