CodeSOD: 낮잠 식별 노트

CodeSOD: 낮잠 식별

개발자가 새로운 항목을 저장할 때 때때로 중복 기본 키 오류가 발생하는 특이한 버그를 발견했습니다. 이 문제는 애플리케이션의 사용자 정의 메시지 ID 생성기에서 비롯되었는데, 이 생성기는 현재 타임스탬프를 사용했습니다. 생성기는 빠른 요청을 처리하기 위해 타임스탬프가 충돌하는 경우 1초 동안 대기했습니다. 그러나 이 방식은 비효율적이었고, 본질적으로 복잡한 자동 증가 카운터였습니다. 치명적인 결함은 previousId가 업데이트되지 않아 충돌을 방지하지 못했다는 것입니다. 문제는 애플리케이션이 여러 서버에 분산되어 있다는 사실로 인해 더욱 악화되었습니다. 이러한 분산 환경은 올바르게 업데이트된 previousId조차도 서로 다른 노드 간의 ID 충돌을 방지하지 못한다는 것을 의미했습니다. 잠재적인 해결책으로는 MAC 주소와 같은 머신별 식별자를 통합하거나 큰 난수를 사용하는 것이 있습니다. 또는 개발자는 사용자 정의 코드 대신 데이터베이스의 기본 자동 증가 기능을 사용하는 것을 제안합니다. 현재 처리량은 데이터베이스가 ID 생성을 효과적으로 관리할 수 있을 정도로 낮았습니다.