티스토리 뷰

728x90

 

🎯 UUID란?

**UUID (Universally Unique Identifier)**는
"전 세계적으로 고유한 식별자"를 의미하는 128비트 값입니다.

예시:

e5f63194-9e7c-11ee-a1b8-0242ac120002

🧩 UUID 사용 목적

 

사용처  설명
Kafka 메시지 key 메시지 분산과 추적을 위한 고유 ID
DB row ID MongoDB, PostgreSQL 등에서 주키(primary key)로 사용
Request ID API 요청 추적(trace)용
이벤트 트래킹 "OrderCreated", "UserUpdated" 같은 이벤트 고유 식별

☕ Java에서 UUID 생성 (Spring 기준)

import java.util.UUID;

String id = UUID.randomUUID().toString();
System.out.println("Generated UUID: " + id);

출력 예:

Generated UUID: 8d1a31c2-cf7f-4d4c-98b5-8f7a0fc1f48e

✅ Kafka 메시지에 UUID 사용하는 예

OrderEvent event = new OrderEvent();
event.setOrderId(UUID.randomUUID().toString());

kafkaTemplate.send("order-topic", event.getOrderId(), objectMapper.writeValueAsString(event));

📋 UUID 버전 종류 (간단히)

 

버전  설명  사용 예
v1 시간 + MAC 기반 오래된 방식, 순서 보장
v4 랜덤 기반 (가장 일반적) ✅ Kafka 메시지, API 요청
v5 SHA-1 기반 네임스페이스 정 determinism 필요할 때

Spring/Java에서 UUID.randomUUID()는 **v4(UUID Version 4)**를 생성합니다.


✨ API Gateway에 UUID 자동 부여하기 (예)

@PostMapping("/orders")
public ResponseEntity<?> createOrder(@RequestBody OrderRequest dto) {
    String requestId = UUID.randomUUID().toString();
    log.info("Received order request: {}", requestId);
    
    // 요청 정보 + requestId로 Kafka 전송
    OrderEvent event = new OrderEvent(requestId, dto);
    kafkaTemplate.send("order-topic", requestId, objectMapper.writeValueAsString(event));

    return ResponseEntity.ok(Map.of("requestId", requestId));
}

클라이언트도 이 UUID로 추적 가능


✅ 정리

개념  설명
UUID 전 세계적으로 유일한 식별자 (128비트)
Java 생성법 UUID.randomUUID().toString()
Kafka에서 쓰는 이유 메시지 구분, 추적, 중복 방지
API에서 쓰는 이유 요청 트래킹, 로그 연동

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함