기본적으로 파일 인 포함 된 데이터베이스의 요청을 처리하는 웹 서비스를 구축하고 있습니다. 파일은 주기적으로 다른 프로세스로 대체됩니다.파일 다시로드 배경 스레드 대 요청 기반
서비스가이 변경 사항을 감지하고 파일 참조를 업데이트해야합니다. 요청을 유도하도록하는 것이 더 좋습니다. 즉, 최신 버전을 사용할 수 있는지 각 요청을 확인하거나 그렇게 할 백그라운드 스레드가 있습니까?
기본적으로 파일 인 포함 된 데이터베이스의 요청을 처리하는 웹 서비스를 구축하고 있습니다. 파일은 주기적으로 다른 프로세스로 대체됩니다.파일 다시로드 배경 스레드 대 요청 기반
서비스가이 변경 사항을 감지하고 파일 참조를 업데이트해야합니다. 요청을 유도하도록하는 것이 더 좋습니다. 즉, 최신 버전을 사용할 수 있는지 각 요청을 확인하거나 그렇게 할 백그라운드 스레드가 있습니까?
모든 요청에 관련된 IO는 수행하지 않습니다. 사실 나는 서비스 자체가 데이터의 신선도를 점검 할 책임이 있어서는 안된다고 주장한다. 관심을 가져야 할 것은 소스에서 데이터를 검색하고 (CPU 집중적이지 않은 비즈니스 로직을 수행하는) 실시간 웹 애플리케이션을위한 SLA의 안전 범위 내에 있기 위해 그것을 방출하는 것입니다. (당신이 언급 한대로) 확인하고 파일을 업데이트를 유지 폴러가있는
"모든 요청에 관련된 IO는 수행하지 않겠습니다." 정교하게 주시겠습니까? – user1956069
나는이 이벤트를 등록자에게 알리는 백그라운드 프로세스와 같아야한다고 생각합니다.이 목적을 위해 파일 수신기를 사용할 수 있습니다. 예를 들어 폴링 기반 모델입니다.
WatchService watcher = FileSystems.getDefault().newWatchService();
Path dir = Paths.get("Path/To/Watched/Directory");
dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
요청한 볼륨이 무엇입니까? 어떻게 파일에 액세스하고 있습니까? 플랫 파일? 젠슨, XML? – efekctive
5k/s; 텍스트 파일의 파이프로 구분 된 키 값 쌍 – user1956069
모든 요청에 대해 일종의 수정을 수행하고 적절한 경우 데이터를 캐시해야하는 경우 일종의 f를 수행해야합니다. 서블릿/컨트롤러 내부의 다른 스레드가 변경 사항을 감지합니다. 업데이트가 너무 자주 발생하지 않으면 스레드없이 얻을 수 있습니다. 그러나 초당 5k는 강력한 것을 필요로합니다. 비동기 응답은 멋질 것입니다. – efekctive