본문 바로가기

전체 글

(23)
TCP 3 way handshake & 4 way handshake TCP TCP 는 Connection을 맺고 연속적으로 패킷의 상태를 확인 / 유지하는 Connection Oriented Protocol이다. 이에, 커넥션을 수립/해제하는 과정을 이해하는 것이 중요하다. 커넥션을 수립하는 과정은 3-way handshake, 커넥션을 해제하는 과정은 4-way handshake이다. 자세한 과정은 아래와 같다. 3-way handshake TCP 연결을 수립하는 과정이다. 양쪽 모두 데이터를 송/수신할 준비가 되었다는 것을 보장한다. 1) Client는 Server에게 접속 요청 패킷(SYN)을 전송하고, SYN_SENT상태가 된다. 이 때, 임의의 Sequence Number를 담아 전송한다. 2) Server는 요청을 수락할 때, Client에게서 받은 난수에 1..
Cloudstream Kafka Found no committed offset for partition 로그 분석. Kafka offset reset 트러블슈팅 Spring Cloudstream Kafka를 사용중, 종종 아래와 같은 INFO 로그를 보게 되었다. Found no committed offset for partition [topic name-partition] 처음에는 INFO 로그이기에 대수롭지 않게 넘겼는데, 이후 consumer에서 이해가 가지 않는 상황들이 발생하며 해당 로그를 다시 들여다보게되었다. consumer가 한번씩 이미 consuming한 record를 다시 처음부터 consuming하고있는 상황이었다. 그로 인해 구글링을 해본 결과 아래의 두 article을 발견했고 실마리를 찾았다. Kafka offset은 broker가 관리하게 된다. (0.8.x까지는 Zookeeper가 관리하였으나, 0.9부터 변경되었다), Kafka b..
NOT NULL TIMESTAMP 타입 column이 DEFAULT CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP로 설정되었을 때 해결법 아래와 같은 테이블 생성 스크립트를 돌렸는데, DESC 테이블을 해봤더니 결과가 조금 이상했다. CREATE TABLE `coupon` ( `id`bigint(20) NOT NULL AUTO_INCREMENT, `name`varchar(30) NOT NULL, `description`varchar(30) NOT NULL, `user_id`bigint(20) NOT NULL, `expire_at`timestamp(3) NOT NULL, `created_at`timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at`timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAM..