Concurrency BizTalk组中的多个BizTalk服务器-如何处理并发性?
我目前负责进行多环境BizTalk部署,我们计划在BizTalk组中部署两个或多个BizTalk Server,以提供高可用性和可扩展性 我们现在关心的是如何处理WCF SQL和文件适配器等适配器的并发性,因为对于SQL适配器,两个BizTalk接收主机可能会在同一个DB表上继续轮询 最初我对SQL的想法是使用锁定提示,但我不确定是否还有其他问题,或者是否有其他经验证的解决方案 对于文件适配器,我知道可以将接收适配器设置为在处理过程中更改文件的文件名,以便其他BizTalk主机避免拾取文件,但我不确定此解决方案是否足以处理并发性 如有任何帮助/建议,我将不胜感激 非常感谢一般来说,大多数BizTalk适配器都会在开箱即用的情况下为您避免竞争条件 例如,BizTalk文件适配器已经实现了文件锁定,因此不同主机上的文件适配器的多个实例将不会读取同一文件 下面解释了文件重命名功能的用法(来自) 您还可以配置该文件 接收适配器以在以下情况下重命名文件: 处理它们。你应该重新命名 文件,以确保 适配器不生成重复数据 如果接收位置为,则显示消息 关闭并重新启动 有几个适配器在多个实例上运行时不安全。这些包括(但可能还有其他)轮询场景中的POP3、FTP、MSMQ/MSMQT和数据库适配器 对于这些适配器,您可以使用群集主机的BizTalk功能。有一篇文章解释了集群主机的使用和配置。这是确保SQL轮询不会产生重复的最简单方法。如果需要,也可以在SQL级别实现这一点 除此之外,您还需要真正了解业务流程的细节,并且需要针对每个案例进行设计。例如,如果源系统两次提供同一文件,会发生什么情况 有关此主题的更多信息,请参阅以下两篇SO帖子:Concurrency BizTalk组中的多个BizTalk服务器-如何处理并发性?,concurrency,biztalk,biztalk-2009,biztalk-deployment,Concurrency,Biztalk,Biztalk 2009,Biztalk Deployment,我目前负责进行多环境BizTalk部署,我们计划在BizTalk组中部署两个或多个BizTalk Server,以提供高可用性和可扩展性 我们现在关心的是如何处理WCF SQL和文件适配器等适配器的并发性,因为对于SQL适配器,两个BizTalk接收主机可能会在同一个DB表上继续轮询 最初我对SQL的想法是使用锁定提示,但我不确定是否还有其他问题,或者是否有其他经验证的解决方案 对于文件适配器,我知道可以将接收适配器设置为在处理过程中更改文件的文件名,以便其他BizTalk主机避免拾取文件,但我
MSDN的这一部分也可以帮助您:
感谢您提供的答案和链接。事实上,我已经阅读了其中的一些,我也能够对这些解决方案进行一些测试。 对于SQL适配器,BizTalk主机群集被证明是一个很好的解决方案,但会导致您无法最大限度地利用BizTalk组(主机冗余)的优势来实现可伸缩性。因此,我们决定避免使用集群解决方案,但对于MessageBox,它确实需要集群来实现高可用性。 我们试图实现的是通过BizTalk Server组实现主动/主动或负载平衡,这意味着我们将同时进行多个SQL接收适配器轮询。 最初,我的解决方案是在查询级别通过锁定提示处理它,下面是我的SP示例
MERGE INTO EmployeeComp
USING (SELECT EmployeeID
FROM
[AdventureWorks].[dbo].[EmployeeComp]
WITH (READPAST, UPDLOCK)
WHERE
[AdventureWorks].[dbo].[EmployeeComp].[Status] = 0) e(EmployeeID)
ON EmployeeComp.EmployeeID = e.EmployeeID
WHEN MATCHED THEN
UPDATE SET
STATUS = 2
OUTPUT Inserted.EmployeeID, Inserted.Name, Inserted.Status;
您能否对我创建的SP提供一些反馈?我对BizTalk WCF-SQL适配器读取的大约500000个数据进行了几次测试,同时又写入了数千个数据,结果证明它的工作符合我的预期
虽然这个解决方案看起来不错,但我还不确定对这种解决方案有什么影响,也许你也能给我一些启示
此外,我还在考虑是否可以使用本文中的SQLServerServiceBroker
现在我还在检查它,还不确定如何解决这个问题
非常感谢嗨,瓦格纳谢谢你的链接。这些信息非常有用。您仍然可以使用biztalk组和群集主机的本机负载平衡—您仅将群集主机用于适配器,而将另一个非群集主机用于其他所有内容。关于这个过程,我会看一看,但我建议您也将其作为一个新问题发布,因为有更多的SQL专家参与其中,所以可能不会检查BizTalk问题。