대용량의 웹 클라이언트 (예 : 브라우저)간에 대량의 메시지를 전송하기위한 서비스 지향 응용 프로그램에 DDD를 사용하고 있습니다.도메인 기반 디자인의 높은 확장 성
필요한 기능의 측면에서 보면 전송의 필요성이 스토리지의 필요성을 능가하므로 RAM을 주로 사용하고 데이터베이스 사용을 최소화하는 아이디어를 좋아합니다.
그러나 확장 성 관점에서 이것을 어떻게 설계해야하는지에 대해서는 분명하지 않습니다. 웹 팜은 서비스 끝점 및 도메인 논리 처리의 고 가용성을 만듭니다. 그러나 내가 가진 서버의 수와 관계없이 데이터가 일관되도록 공통 저장소를 모두 공유해야합니다.
이 저장소를 가능한 확장 가능하도록 구축하려면 어떻게해야합니까? 모든 기계가 일관되고 다른 기계가 고장 나더라도 덜 신경 쓸 수없는 방식으로 물리적 인 기계 배열을 가로 질러 어떻게 튀어 나올 수 있습니까?
또한 데이터베이스를 건드릴 때가끔 필요합니다 (예 : 클라이언트가 누락되어 반환 될 때까지 메시지를 저장해야하는 경우). 메모리 기반 코드 및 데이터 액세스 계층은 어떻게 구성해야합니까? 둘 다 "저장소"로 간주됩니까?
감사합니다. 데이터베이스를 통해 RAM을 선호한다면 그 방향으로 어떤 권장 사항이 있습니까? 데이터베이스 클러스터를 모방 한 무 상태 공유 비공유 저장소를 만들어야하는 것 같습니다. 공통 인 쓰기 조작은 모든 저장소 기계에 동 기적으로 또는 비동기 적으로 변경 사항을 확약합니다. 그런 다음 때로는 프로세스가 데이터가 RAM에 오래 머물렀는지 여부를 검사하고, 그렇다면 모든 저장소 컴퓨터에서 데이터베이스로 데이터를 플러시합니다. –
데이터베이스를 통한 RAM은 읽기 전용 저장소에 적합한 선택이라고 생각합니다. 당신이 쓰려고한다면, RAM은 데이터를 잃을 수있는 경우에만 좋다. 그렇지 않으면 트랜잭션 (ACID) 저장소를 사용할 것입니다. "저장소 시스템"(여러 개)을 언급하는 이유가 궁금합니다. 클러스터를 의미합니까, 아니면 다양한 독립적 인 기계/서비스를 의미합니까? –
당신이 지적한대로 하드웨어 손실의 위험을 줄이는 RAM을 선호하는 컴퓨터 클러스터를 의미하는 것은 데이터 손실을 초래합니다. 필자가 계획 한 시스템에서 데이터는 클라이언트에서 서버로 이동 한 다음 다른 클라이언트의 요청에 따라 서버에서 신속하게 제거됩니다. 따라서 내 데이터는 일시적이며 한 번에 두 초 이상 서버에 남아있을 것으로 예상되지 않습니다. 예외적 인 경우에만 데이터가 남아있을 것이며,이 시점에서 RAM에서 데이터베이스로 마이그레이션됩니다. –