티스토리 뷰
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
'Programming' 카테고리의 다른 글
Apache APISIX Lua 기반 Custom Plugin 작성 (0) | 2025.03.31 |
---|---|
Lua 언어란? (0) | 2025.03.31 |
Kafka REST API 요청 API Gateway or custom 처리 (0) | 2025.03.31 |
Apache Pulsar란? (0) | 2025.03.31 |
HTTP/REST, gRPC, 메시지 브로커 기반 이벤트 소개 (0) | 2025.03.30 |