2017-09-12 26 views
0

우리는 데이터가 유지되는 지역/국가에 대한 제한 사항이있는 멀티 테넌트 애플리케이션을 구축 중입니다.Hazelcast 데이터 격리 ("메모리 영역")

응용 프로그램은 microsoft. micro microservice 아키텍처를 기반으로하지만 우리는 매우 낮은 수준의 개별 DB를 가지고 있기 때문에 도메인을 공유했습니다. 각 도시별로 별도의 DB가 있습니다. 한 국가의 데이터를 다른 국가의 데이터 센터에 보관할 수는 없습니다. Hazelcast는 분산 캐시로 사용됩니다. 예를 들어 데이터 격리를 구성하는 직접적인 방법을 찾지 못했습니다. 아파치 점화의 "메모리 영역"과 유사합니다. 헤즐리 캐스트에는 "메모리 영역"이 있습니까?

캐시에서 해당 데이터베이스로 데이터를 써야합니다. 데이터베이스 인스턴스와 관련된 캐시의 일부/파티션을 분리 할 수 ​​있습니까?

도움을 주시면 감사하겠습니다. 미리 감사드립니다.

답변

1

질문에 직접 답장하는 것이 아닙니다. IMHO, 다른 클러스터/노드에 저장된 데이터가있을 때 데이터가 동일한 클러스터/노드 내에 저장되도록 몇 가지 주요 형식이 있더라도 네트워크 호출이 계속됩니다.

내 경험에 비추어 볼 때 System.Runtime.Caching의 일부로 제공되는 MemoryCache를 설정하여 모든 노드에 데이터를 저장 한 다음 Redis Pub-Sub 또는 Azure Service 버스를 백본으로 사용할 수 있습니다. pub-sub. 이 경우

,

  • 통상적 인 키 ServiceBus/레디 스 메시지를 통해 애플리케이션의 모든 다른 인스턴스에 통지 캐시 갱신되는 데이터.

  • 키를 받으면 각 응용 프로그램은 내부 캐시를 지우고 다음 DB 액세스시 다시 캐시 된 데이터를 가져옵니다.

이 방법은 일반적으로 멀티 테넌트 애플리케이션에 널리 사용되며 페일 세이프 및 경량입니다. 페이로드/네트워크 전송은 더 적으며 각 AppDomain은 내부 메모리가 MemoryCache의 다른 인스턴스를 통해 다른 지역을 지원하는 캐시로 사용됩니다. 직접 응답이 또한 HazelCast

에 대해 사용할 수없는 경우

희망이 당신이 지침에 대한 Hazelcast

+0

감사에 관한 몇 가지 세부 사항이 link 참조 할 수 있습니다, 도움이, 그것은 나에게 방향을 제시했다. 그러나 프로젝트의 경우 어떠한 이유로 든 Hazlecast를 사용하기위한 건축 토론이 이미 이루어졌습니다. DataAffinity는 분명 도움이 될만한 것입니다. 깊이 파고 그것이 모든 요구 사항에 적용되는지 여부를 확인해야합니다. –

+0

감사합니다. 귀하의 요구 사항을 기반으로 무언가에 비틀 거린 경우에 대비하여 공유합니다. – Saravanan