消息注意事项

BizTalk Server提供了一组用于发送、接收、转换和处理消息的大量功能。 其中部分功能包括:

  • 能够使用多个行业标准传输(例如 HTTP、SMTP、FTP/FTPS 和 WCF)发送和接收消息。 使用 BizTalk Server 适配器实现对发送和接收消息的传输级别支持。 BizTalk Server消息处理与各种“业务线” (LOB) 应用程序集成是使用众多可用BizTalk Server加速器或适配器之一(例如 BizTalk Accelerator for HIPAA、BizTalk Accelerator for SWIFT 或 BizTalk SAP 适配器)实现的。 这些加速器和适配器符合行业标准,这些行业标准反过来又能将BizTalk Server与符合特定行业标准的系统直接集成。

  • 能够处理多种消息格式,例如纯文本、XML、二进制等。 此功能对于提供BizTalk Server与各种贸易合作伙伴的集成至关重要。

  • 支持消息转换或文档映射。 映射适应不同架构之间的数据转换。 例如,映射可用于将收到的客户采购订单的内容转换为收据,其中包含要发送回客户的发货通知。

  • BizTalk Server业务流程提供了用于创建跨时间、组织、应用程序和人员的业务流程的功能。 BizTalk Server提供了业务流程Designer图形界面,用于开发业务流程,其中包括对事务的支持 (传统的“原子”MSDTC 类型和长时间运行的) 、异常处理、调试、跟踪和调用外部代码的扩展性。

    注意

    有关在 BizTalk Server 中使用业务流程时要遵循的最佳做法的指导,请参阅优化业务流程性能。 有关使用业务流程Designerhttps://go.microsoft.com/fwlink/?LinkId=158997 的详细信息,请参阅BizTalk Server文档中的主题使用业务流程Designer () 创建业务流程。

    本主题的其余部分介绍与在BizTalk Server环境中处理的消息的大小、复杂性和分布配置文件相关的性能注意事项。

消息大小注意事项

虽然BizTalk Server对消息大小没有限制,但实际限制和依赖项可能需要将消息的大小降至最低,因为大型消息需要更多的处理资源。 随着消息大小的增加,每秒处理的消息数 (总吞吐量) 降低。 在设计方案和规划容量时,请考虑平均消息大小、消息类型和消息数BizTalk Server进程。 不要使用不必要的长属性和标记名称;如果可能,请将长度保持在 50 个字符以内。 例如,不要对只有 1 字节的消息大小使用 200 个字符的标记名称。

如果收到的消息的内存中大小超过在 BizTalk Server 管理控制台) 中 BizTalk 组的“组属性”页上配置的“大型消息片段大小 (指定的字节数,则消息将拆分为指定大小的片段。 此外,这些片段将写入 Microsoft 分布式事务处理协调器 (MSDTC) 事务上下文下的 Messagebox,如下所示:

  1. 如果在现有 MSDTC 事务的上下文中发布传入消息,则在将消息片段写入 BizTalk MessageBox 数据库时使用此事务。 例如,如果传入消息由配置为需要事务的事务适配器发布,则将消息片段写入 MessageBox 数据库时使用现有事务。

  2. 如果未在现有 MSDTC 事务的上下文中发布传入消息,则会创建一个新的 MSDTC 事务,以将消息片段写入 MessageBox 数据库。 在此方案中,需要注意以下事项:

    • 增大 “大型消息片段大小 ”的值,以减少大型消息分段的频率,并减少创建关联 MSDTC 事务的发生。 因此应该增大此值,因为过多使用 MSDTC 事务将极大地影响系统性能。 请注意,增大此值还可能增加要使用的可用内存量。

    • 如果将消息写入 MessageBox 所花费的时间超过允许的最大 MSDTC 事务超时时间 60 分钟,则事务超时,将发生错误,并且写入消息的尝试将失败并回滚。 处理非常大的消息时,应将 “大型消息片段大小” 值增大到足以避免此问题。 根据可用内存的大小,可将此值提高到 1000000 字节的最大值。

    • 消息中的每个消息片段都可针对 MessageBox 数据库创建一个或多个 SQL Server 数据库锁定。 当锁数超过几十万时,SQL Server可能会生成“锁定外”错误。 如果出现此问题,请增大“大型邮件片段大小”的值以减少片段数 (这会减少针对 MessageBox 数据库) SQL Server数据库锁的数目,或者考虑将 MessageBox 数据库放在 64 位版本的 SQL Server 上。 64 位版本的 SQL Server 的可用锁数明显高于 32 位版本的 SQL Server。 当 MessageBox 数据库位于 32 位版本的 SQL Server 上时,以下公式可用于估算每个交换的最大消息数:

      200,000 / (Number of CPUs * BatchSize * MessagingThreadPoolSize)
      

    有关BizTalk Server处理大型消息的详细信息,包括处理大型消息的准则,请参阅如何BizTalk Server处理大型消息 (https://go.microsoft.com/fwlink/?LinkID=154680) 。

消息类型注意事项

消息以以下两种主要格式之一接收到BizTalk Server:XML 文件或平面文件。 由于 XML 和平面文件消息的资源要求不同,消息类型应始终纳入消息分发配置文件。

  • XML 文件为了使BizTalk Server对传递路由以外的消息执行任何处理,该消息必须采用 XML 文件格式。

  • 平面文件平面文件必须分析为 XML 格式,BizTalk Server才能执行传递路由以外的任何处理。 将平面文件解析为 XML 文件将极大地增加文件大小。 因为平面文件不包含带有关于其数据的描述性信息的 XML 标记。 另一方面,XML 文件还在描述性 XML 标记中包装了其所有数据。 在某些情况下,分析可以将平面文件的大小增加 10 倍或更多,具体取决于文件 XML 标记中包含的描述性数据量。

  • 包装在 XML 文档中的单个 CDATA 节节点中的平面文件文档这种类型的文档是 XML 和平面文件的组合,通常占用大量内存,因为BizTalk Server必须在处理之前将整个已包装的平面文件文档加载到内存中。

重载注意事项

大多数BizTalk Server应用程序不会以特定的恒定速率接收消息。 通常,消息处理受到峰值和谷值限制。 例如,网上银行应用程序可能首先在早上处理更多的消息,然后在一天中处理,在一天结束时处理。 应测试BizTalk Server解决方案,以确保它们能够处理这些重载方案。 若要确定BizTalk Server解决方案处理重载情况的方式,应确定BizTalk Server解决方案的最大可持续吞吐量 (MST) 。 MST 是系统在生产环境中可以无限期处理的最大消息流量负载。 有关 MST 的详细信息,请参阅规划持续性能 (https://go.microsoft.com/fwlink/?LinkID=158065) 和什么是可持续性能? (https://go.microsoft.com/fwlink/?LinkID=132304 BizTalk Server文档中的) 。

架构复杂性

消息分析 (特别是平面文件分析) 的吞吐量受架构复杂性的影响。 随着架构复杂性的增加,整体性能会降低。 设计架构时,请减少节点名称的长度,并将升级的属性移动到架构的顶部。 这减少了检索时间,从而提高了性能。

映射复杂性

根据映射的复杂性,地图转换可能会占用大量资源。 随着映射复杂性的增加,整体性能会降低。 若要提高整体性能,请最大程度地减少映射中使用的链接和 functoid 的数量,尤其是调用外部资源的 functoid,如数据库查找 functoid。

平面文件分析注意事项

对平面文件分析性能影响最大的两个因素是文件大小和架构复杂性。 不明确的架构是包含许多可选字段的架构。 使用大文件大小时,具有许多可选字段的架构可能会降低性能,因为较大的文件可能与架构的不同分支匹配。 与对较大文件相比,架构复杂性对较小文件的影响较小。

另请参阅

优化 BizTalk Server 应用程序