2015-01-08 5 views
3

영감을 얻게하는 것과 관련이있는 항목을 찾지 못했기 때문에 여기에서 생각해 보았습니다.석영 작업 스케줄러 - 멀티 테넌트 설정

저는 최근에 일자리 창출을위한 Sencha ExtJS 기반 UI를 제공하는 RESTful Java Servlet 내에서 이미 구현 한 Quartz Job Scheduler으로 많은 일을했습니다. 우리는 Authenticator 클래스를 사용하여 사용자 인증과 Hibernate를 사용하는 다른 모든 데이터베이스 관련 작업을 처리하는 DatabaseManager와 함께 사용합니다.

우리가 개발 한 Java 엔터프라이즈 응용 프로그램 내에서이 응용 프로그램을 사용하고자하므로 모든 고객에 대해이 작업을 실행해야합니다. 또한 MySQL 데이터베이스의 영구 데이터 (특히 클러스터링 용)에 JobStoreTX를 사용해야하므로 휘발성 RAMJobStore 구현이 금기 사항입니다. 나는 공식 문서에 대해 알고 있고 Quartz 자체가 멀티 테넌트 구현 (Quartz Clustering 참고)을 지원하지 않는 것 같음.

는 우리의 설치는 (simplfied)과 같이 좀 같습니다
- 1+ 생산 톰캣 (제공하는 응용 프로그램 논리)
- 1+ 생산 아파치
(ExtJS로 프런트 엔드 및 정적 콘텐츠 제공) - N 데이터베이스 (하나

훨씬 더 까다로운 뭔가를 추가하려면) 각 고객 :
더 최신의 모듈은 고객과 중앙 호스팅하는 동안 우리는 고객 별 (각 고객이 자신의 애플리케이션 호스팅을 가져옵니다 기존 모듈)가 관련 액세스.

제 생각에는 모든 고객 데이터베이스에 Quartz 관련 테이블을 작성하는 것만으로는 충분하지 않을 것입니다. 간단하고 간단한 설정 (각 고객에 대해 동일한 테이블 접두사 등) Quartz를 팜 전체에 배포하는 것을 복잡하게 만들지 않아야합니다.

은 이미 석영 만 MaxScale 프록시 이야기로, 각 고객의 정규식에 기반 데이터베이스 또는 이와 유사한 라우팅 석영에 필터MariaDB MaxScale과 결합하고 사용하는 방법에 대한 생각,하지만 너무 조금 듯 달성하기 위해 노력하는 것에 대한 많은 오버 헤드와 이것이 전혀 작동하는지 확신 할 수 없습니다.

무언가가 있습니까? 석영으로 다중 거주? Quartz가 이것을 처리 할 수있는 접근법을 제안 해 주시겠습니까? 우리는 각 고객을 위해 작업을 실행해야하지만 "실제로"클러스터 된로드 밸런싱을 사용하는 "하나"의 Tomcat을 사용해야합니다. 아니면 멀티 테넌시를 지원하는 또 다른 제품/프레임 워크/라이브러리가 있습니까?

모든 리드, 아이디어 또는 도움을 주시면 감사하겠습니다.

+0

우리는 지금 개발 중이며, 지금은 모든 고객 데이터베이스에 Quartz 관련 테이블을 생성하기로 결정했습니다. 원하는 경우 석영 속성 파일을 통해 석영 테이블 이름을 변경할 수 있습니다 (따라서 각 고객에 대해 동일한 테이블 접두사를 갖게됩니다). – yishaiz

+0

우리 소프트웨어 아키텍처에 쉽게 적용 할 수있는 솔루션을 찾았다 고 생각합니다.모든 고객마다 고유 한 데이터베이스가 있으므로 전체 고객 로직에 대해 사용할 수있는 시스템 매개 변수가 각 고객마다 고유합니다. 이 매개 변수는 생성시 작업 및 그룹 이름에 자동으로 첨부됩니다. 이렇게하면 모든 고객을 위해 단일 데이터베이스에서 Quartz를 실행할 수 있어야합니다. –

+0

지금까지 원활하게 작동합니다. 그냥 질문 : 작업을 생성하기 위해 (Sencha ExtJS를 사용하여) 설계된 인터페이스에서 사용자는 일회성 또는 반복 작업을 만들 수있는 선택권이 주어집니다. 일회성 작업을 만들면 작업 (및 트리거)이 실행 후 데이터베이스에 유지되지 않습니다. 이미 해고 된 곳과 데이터베이스에서 재발하지 않는 곳의 일자리를 유지할 수있는 방법이 있습니까? –

답변

0

마침내 여러 데이터베이스에 쓰게되었습니다.

내가 고객의 각 매개 변수를 기반으로 각 고객을 위해 Quartz 특성 파일을 생성하고 프로그램 논리가이 새로 생성 된 파일을 읽도록 만들었습니다. 마지막으로 각 고객은 자신의 데이터베이스에 Quartz 작업을 저장합니다.

+0

이 솔루션에서는 각 customuer에 대해 하나의 쿼츠 스케줄러가 있습니까? 왜냐하면 저는 여러 개의 데이터 소스를 지원하는 석영에 대해 들어 본 적이 없었기 때문입니다. 귀하의 답변에 감사드립니다. – ascott

+0

네, 맞습니다. 각 임차인에 대한 구성을 동적으로 만드는 방법을 파악하는 데는 다소 시간이 걸렸지 만. 그럼에도 불구하고, 당신 편에서 세입자를 "독창적"으로 만드는 것이 무엇인지 알아야합니다. –

관련 문제