문제

나는 그것을 사용하는 모든 사람이 컴퓨터에서 계산을 실행하는 클라이언트를 가질 수있는 WebApp을 계획하고 있습니다 (이러한 계산은 서버에서는 너무 많은로드를 수행 할 수 없기 때문에 ...) 섬기는 사람.

내 응용 프로그램에 관심이있는 사람들이 많이있을 것 같아서 건축이 좋은지 궁금해하고 수천 명의 사람들을 다룰 수있을 것입니다.

Glassfish Server를 사용하여 JNDI를 통해 원격 EJB를 노출시킬 계획이므로 1000 명이이 EJB를 동시에 사용하여 (5-50 개의 요청 / 초가있을 수 있음) 로컬 계산에 필요한 데이터를 검색 한 다음 결과 보내기 ...

많은 고객에게 EJB를 노출시키는 것이 비싸나요? 다른 솔루션 인 RMI, RMI를 사용하는 것이 더 나을까요?

내가 할 일에 대한 또 다른 아키텍처를 추천 하시겠습니까?

도움이 되었습니까?

해결책

첫째, 순수한 아키텍처 관점에서 EJB는 분산 응용 프로그램을 구축하는 데 사용되며 웹 서비스는 통합 기술이며 실제로 서로 경쟁하지 않습니다. 귀하의 경우, EJB는 자연스러운 선택 (EJB3에 대해 이야기하고 있습니까?) 및 세션 콩 스케일이 매우 좋습니다.

둘째, 서버 측 코드가 데이터베이스에서 데이터를 검색하고 클라이언트 측 계산 후 결과를 저장하는 데만 사용되는 경우 앱 서버는 병목 현상이 아닐 가능성이 높습니다. 다시 말해, 걱정할 것이 많지 않습니다.

따라서 고객은 모두 100% Java 클라이언트이므로 무국적 세션 Bean을 노출시킵니다.1 SOAP/XML 마샬링/unmarshaling 및 WSDL 작성의 오버 헤드를 피하십시오 (하루가 웹 서비스로 서비스를 노출 해야하는 경우 여전히 가능하고 쉬운 일입니다).

1 데이터 액세스에 JPA 또는 다른 것을 사용하면 재량에 따라 남습니다.

다른 팁

내 2p는 웹 서비스 또는 XML/HTTP 클라이언트를 제공하는 것이 클라이언트 관점에서 더 쉽고 표준이라는 것입니다. 한 가지 이점은 SOAP 웹 서비스 인 경우 Java 클라이언트 일 필요가 없다는 것입니다.

프록시가 유지되고 트래픽을 생성하기 때문에 클라이언트에서 엔티티를 검색하는 것이 나쁜 생각이 될 수 있다는 포럼에서 읽었습니다.

한 사람의 테스트와 40KO의 300 개 객체 목록이 Wireshark에서 3.6mo 네트워크를 생성했지만 EntityManager.clear ()를 사용하여 엔티티를 분리하거나 POJOS DTO를 원격 함수로 반환합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top