클러스터 환경에서 석영 + 스프링을 사용하여 작동하는 작업이 거의 없습니다. 이러한 작업은 클러스터 환경에서 실행되도록 설정되지 않으므로 각 작업은 보유한 인스턴스 수에 따라 여러 번 실행됩니다. 이러한 작업은 AWS 환경에서 실행됩니다. 그래서 우리는 얼마나 많은 인스턴스가 동적으로 증가하거나 감소 할 수 있는지를 확신하지 못합니다. 그래서 우리는 코드를 리팩토링하는 중입니다.석영 스프링 설계 제안
문제는 특정 활동을 기반으로 사용자에게 이메일을 보내는 작업의 예를들 수 있습니다. 우리가 이메일을 보낼 필요가있는 곳에 매일 1000 명의 사용자가있을 수 있습니다.
현재 클러스터 환경에서 실행되도록 설정되어 있지 않으므로 각 인스턴스는 작업을 실행하고 작업에 대한 전자 메일을 사용자에게 보냅니다. 그래서 만약 내가 3 인스턴스가 실행되면, 작업은 3 번 실행되며 동일한 이메일은 사용자에게 3 번 전송됩니다.
우리는 쿼츠 jdbc를 사용하여 작업이 한 번만 실행되도록 결정했습니다.
나는 아래 부분을 수행하는 방법에 대한 제안을 찾고 있습니다.
내가 300 명의 사용자에게 전자 메일을 보내야한다고 말하면서 1 명의 인스턴스에서 사용자를 선택하고 300 명의 사용자에게 전자 메일을 보내면 모든 인스턴스에서 DB에서 300 명의 사용자를 얻고 나중에 동일한 작업을 수행해야합니다. 다른 인스턴스도 300 명의 사용자를 처리하는 데 참여합니다. 무엇이 최선의 방법일까요? 나는 임시 테이블에 300 명의 사용자를 저장하고 DB에서 사용자를 뽑아 내고 싶지 않습니다. 거기에 300 명의 사용자를 memcached와 같은 전역 메모리에 저장할 수 있고 다른 인스턴스에서 데이터를 가져올 수있는 방법이 있습니다 (사용자를 처리하는 동안 일종의로드 균형 조정). memcache를 사용하고 싶지 않으므로 다른 옵션을 사용하거나 가장 좋은 방법으로 디자인을 진행할 수 있습니다.
DB에 레코드를 삽입하는 응용 프로그램입니까? 또는 귀하의 응용 프로그램은 DB에서 레코드를 선택하고 전자 메일을 보내고 있습니까? –
이 응용 프로그램은 나머지 서비스를 사용하는 사용자의 목록을 가져올 것이고 각 사용자는 다른 휴식 서비스를 호출하여 전자 메일을 보내 게됩니다. – prred