2010-03-18 65 views
0

我必须创建一个.net Web应用程序,它可以在负载均衡的多个前端服务器上运行。现在我必须使用一些不是线程安全的第三方api,因此一次只能调用一次API,所以我必须使用一些同步机制,例如锁或互斥锁,这些同步机制在进程内和机器上的进程中提供syncronisation。现在会正确锁定或互斥负载均衡多服务器环境中的工作吗?如果没有,那么是否有任何机制使用我可以在所有机器中同步我的应用程序的所有线程?如何在负载均衡的多服务器环境中实现同步

回答

1

第三方API以何种方式“不是线程安全的”? 通常这意味着您只能从一个线程调用每个进程 - 但您可以同时从多个不同的进程调用它,除非它们都将访问单个共享资源。

如果你能告诉我们更多关于API,这将有助于...

编辑:好的,因为它使用一个共享的资源,你可能要考虑创建所有其他连接到服务器并且这是唯一的机器使用这个第三方API。这可能涉及一个消息队列的请求,或者可能只是一个普通的Web服务。很明显,这将是单一故障点和系统瓶颈 - 如果你能找到任何避免单一共享资源的方法,那将是更可取的。

通过让多台机器“尝试”成为这台主机,您可以避免它成为单点故障。通过保持数据库锁定。当然,这回到了你原来的共享锁的问题 - 但这意味着你不是试图获得每个第三方API操作的锁 - 只是为了成为“活动主”的特权。

+0

实际上API在内部使用单个共享资源,因此一次只有一个线程应该调用它。 – Anoop 2010-03-18 17:19:58