2016-08-11 12 views
1

실버 라이트 웹 앱이 있습니다. 이 웹 응용 프로그램은 4 개의 서버에서 실행되며 앞에 NLB가 있습니다. 내 웹 앱에서 SignalR을 사용해야합니다.SignalR - NLB 서버 변경 및 스케일 아웃 방법 제안

이 시나리오에 대해 생각해보십시오. 클라이언트 # 1이 서버 # 1에 연결되어 있으며 모든 것이 정상입니다. 그들은 허브를 통해 서로 통신하고 있습니다. 그런 다음 NLB는 갑자기 클라이언트 # 1을 서버 # 2에 할당했습니다.

이제 Connection and Hub는 어떻게됩니까? 그들이 어떻게 의사 소통을합니까? 클라이언트 # 1과 서버 # 1 간의 연결은 어떻게 설정됩니까?

추신 : 나는 NLB에 대해 많이 모른다. 어쩌면 어리석은 질문 일지 모르지만 나는 좋은 설명을 찾을 수 없었다.

저의 두 번째 질문은 .NET (Silverlight, SQL, Redis)이 가장 많이 사용되는 클라이언트가 10K 미만인 클라이언트입니다.

아니요 : MS SQL, SQL Server를 내 응용 프로그램에서 많이 사용합니다.

+1

백플레인을 사용해야합니다. SignalR은 Redis, SQL Server 및 서비스 버스에 후크를 제공합니다. –

답변

1

매우 유익한이 video을 본 후에 내 질문에 대한 답변을 찾았습니다.

기본적으로 새 연결은 클라이언트가 다른 서버 노드에 할당 될 때 자동으로 설정됩니다. 이전 연결은 손실되지만 어떤 경우에도 Back-plane을 사용하는 경우 모든 클라이언트에게 알릴 수 있습니다. 따라서 이것은 문제가되지 않습니다.

허브 객체는 일시적인 객체이기 때문에 문제가되지 않습니다. 즉, 모든 단일 단일 작업에서 새 허브 객체가 만들어집니다. 따라서 이것은 또한 문제가되지 않습니다. 서버와 클라이언트 간에는 지속적인 허브 객체가 없습니다. 하나의 서버와 하나의 클라이언트가 있더라도 모든 작업에서 허브가 파괴되어 생성됩니다.

유일한 문제는 그룹을 사용하는 경우 그룹 정보가 다른 서버에 연결될 때 클라이언트에서 손실된다는 것입니다. 서버는 그룹 또는 그룹 구성원 목록을 유지 관리하지 않습니다. 따라서이 경우 데이터베이스를 사용해야하고 db에서 수동으로 업데이트 할 수 있습니다. 새로운 연결이 클라이언트와 새 서버 사이에 설정되면 db에서이 클라이언트를 검색 할 수 있으며 해당 클라이언트의 그룹 정보를 찾으면 수동으로 해당 그룹에 다시 등록 할 수 있습니다.

백플레인을 선택하는 데있어 가장 빠르고 가장 좋은 방법은 없습니다. Azure Service Bus, Redis, SQL 중에서이 방법이 더 빠르고 빠르다고 말할 수는 없습니다. 정말 응용 프로그램에 따라 다릅니다. 이미 MS Azure 서비스를 사용하고 있다면 웹 응용 프로그램의 Azure 구현을 선택하십시오. 앱에서 Redis를 사용하는 경우 Redis로 이동합니다. 그렇지 않으면 SQL을 선택할 수 있습니다. 내가 말했듯이, 그들 모두는 어느 정도 동일합니다. 웹 앱에 가장 적합한 것을 선택하십시오.

이들은 모두 비디오 및 SignalR의 공식 사이트에서 얻은 것입니다. page. 이 사이트는 최고의 SignalR 튜토리얼 및 API 가이드 사이트 중 하나입니다. 모든 섹션을 살펴 보는 것이 좋습니다.