-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
하이브리드 아키텍처 구성 방안
-
데이터 동기화 서비스 구현 (이 방법은 사용하지 않습니다. 사용자 수 및 스펙 데이터들이 바로바로 동기화가 되어야 하기 때문입니다.)
-
RDBMS와 MongoDB/Redis 간 데이터 동기화 처리
-
구현 예시:
java @Service @RequiredArgsConstructor public class DataSynchronizationService { private final SpecRepository specRepository; private final MongoTemplate mongoTemplate; private final RedisTemplate redisTemplate; @Scheduled(fixedRate = 3600000)// 1시간마다 실행 @Transactional(readOnly = true) public void synchronizeRankingData() { // RDBMS에서 데이터 조회 List<Spec> specs = specRepository.findAllActive(); // Redis Sorted Set 업데이트 for (Spec spec : specs) { String key = "ranking:" + spec.getJobField(); redisTemplate.opsForZSet().add(key, spec.getId().toString(), spec.getTotalAnalysisScore()); } // MongoDB 통계 데이터 업데이트// ... } }
-
-
이벤트 기반 아키텍처 구현
-
스펙 변경 시 이벤트를 발행하여 캐시 및 MongoDB 데이터 업데이트
-
Spring Events, Kafka 등 활용
-
구현 예시:
java @Service @RequiredArgsConstructor public class SpecEventHandler { private final RedisRankingService redisRankingService; private final MongoTemplate mongoTemplate; @EventListener public void handleSpecUpdateEvent(SpecUpdateEvent event) { // Redis 랭킹 업데이트 redisRankingService.updateRanking( event.getJobField().toString(), event.getSpecId(), event.getNewScore() ); // MongoDB 문서 업데이트 Query query = Query.query(Criteria.where("specId").is(event.getSpecId())); Update update = Update.update("totalScore", event.getNewScore()); mongoTemplate.updateFirst(query, update, "spec_details"); } }
-
Metadata
Metadata
Assignees
Labels
No labels