Microsoft Dynamics 365(联机)中的灾难恢复

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

灾难恢复是从计划或非计划的服务中断中恢复的一项 Microsoft Dynamics 365 (online) 功能。 计划的服务中断的一个示例是常规和定期数据中心系统维护。 非计划服务中断的一个示例是数据中心中的重要计算机系统或网络组件出现故障。 对于任一种情形,您都会暂时失去对组织的数据和 Microsoft Dynamics 365 (online) 服务的访问权。

计划的服务中断之前会在 Web 应用程序或 Dynamics 365 for Outlook 中发布一个公告,标识服务维护的日期和时间,以便企业可以对访问其组织数据的中断做出计划。 非计划的服务中断则导致通知组织当前正在进行非计划维护。

当出现故障或灾难时,由 Microsoft Dynamics 365 (online) 的数据中心管理员应用正确定义的流程,以从服务中断中恢复。 用于从这些服务中断中恢复的进程和软件称为灾难恢复故障转移。Microsoft Dynamics 365 (online) 数据中心在其他服务器上维护您的组织数据的重复和同步(替代)副本。 一旦数据中心发生您不再有权访问数据的灾难,监视数据中心的管理员可以将访问权从您的主要组织切换到此替代组织,从而减少服务中断。 解决故障后,可以还原主要组织的服务访问权。

此恢复发生在数据中心,对于您和您的 .NET 托管应用程序而言,它采用透明的处理。 不过,应用程序开发人员还必须处理一个问题:数据丢失。 当服务 Microsoft Dynamics 365 (online) 遇到故障时,应用程序使用 Web 服务调用执行的数据更改可能无法成功完成。 这可能导致数据丢失。 本主题的以下部分说明如何编写应用程序以处理数据丢失问题。

本主题内容

开发用于故障转移恢复的 .NET 托管代码应用程序

开发用于故障转移恢复的非 .NET 应用程序

最佳实践

开发用于故障转移恢复的 .NET 托管代码应用程序

开发人员可以编写应用程序,通过实现代码以检查和完善处理故障转移事件,来解决数据中心故障和恢复。 应用程序可以订阅 EndpointSwitchedEndpointSwitchRequired 通知事件。 也可以在诸如 OrganizationServiceProxy 的派生类中获得这些事件。 有关这些事件的详细信息,请参阅 ServiceProxy<TService> 类文档。

您的应用程序可检查 EndpointAutoSwitchEnabled 属性以确定是否为组织启用了自动故障转移行为。 对于故障转移备选端点可用的组织,此属性设置为 true。 当 EndpointAutoSwitchEnabledtrue 时,除了可以选择订阅通知事件外,应用程序中不需要其他特殊代码。

灾难事件和故障转移的典型应用程序逻辑流

  1. 在 Microsoft Dynamics 365 (online) 数据中心中,发生了灾难事件。

  2. 您的应用程序通过服务代理类对象发出一个服务调用: OrganizationServiceProxyDiscoveryServiceProxy

  3. 在尝试服务调用后,服务代理类对象收到异常。

  4. 如果没有为故障转移启用调用的目标组织,请转到步骤 9。

  5. 引发 EndpointSwitchRequired 事件。

  6. 引发 EndpointSwitched 事件。

  7. 服务代理类对象自动重试调用。

  8. 如果第二次调用成功,则应用程序继续正常工作。

  9. 如果调用不成功,则向应用程序返回异常:EndpointNotFoundException, TimeoutExceptionFaultException<OrganizationServiceFault>(其中 fault.Detail.ErrorCode == -2147176347)。

您可能需要实现代码,以在收到端点切换事件后检查潜在数据丢失并进行相应处理。

数据中心中纠正影响主要组织端点的灾难后,作为计划组织维护的一部分,会从备选端点 URL 转移回组织的主要端点 URL。

开发用于故障转移恢复的非 .NET 应用程序

未链接到 Microsoft Dynamics 365 SDK 程序集的应用程序(例如使用 SOAP 或 ODATA 访问 Web 服务的 Java 应用程序)可以尝试访问目标组织的故障转移 URL。 故障转移备选组织的 URL 与主要组织的 URL 基本相同,只不过组织名称中添加了“--s”。 例如,名为 Contoso 的组织具有下表所示的主要和备选 URL。

主要组织 URL

备选组织 URL

https://contoso.api.crm.dynamics.com

https://contoso--s.api.crm.dynamics.com

对于未连接 .NET 的应用程序,没有应用程序可订阅的用来接收服务中断和故障转移通知的通知事件。 在服务中断期间,应用程序将开始收到如上所述的各种异常。 这时,应用程序会尝试连接到目标组织的故障转移备选 URL。 更正灾难后,作为计划组织维护的一部分,会转移回组织的主要 URL。

最佳实践

下表描述可在应用程序中实现的一些最佳实践,以使它们在处理服务中断和故障恢复时功能更强大。

  • 编写应用程序代码以检查 EndpointAutoSwitchEnabled 属性值,以便确定它是否设置为 true。 如果为 true,请考虑订阅 EndpointSwitchedEndpointSwitchRequired 通知事件。

  • 如果应用程序处理的是数据丢失会造成很大灾难的关键数据,请编写事件处理程序代码或捕获指示的异常,以根据您的业务需要处理灾难事件和故障转移。

另请参阅

使用部署 Web 服务管理部署

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权