참고:https://blog.voidmainvoid.net/179?category=698302
링크드인에서 최초로 만들고 오픈소스화 한 확장성이 뛰어난 분산 메시지 큐(FIFO: First In First Out)

FIFO
- 분산 아키텍쳐 구성,Fault-tolerance한 architecture(with zookeeper),데이터 유실 방지를 위한 구성이 잘 되어 있다.
- AMQP,JMS API를 사용하지 않은 TCP기반 프로토콜 사용한다.
- Pub/Sub 메시징 모델을 채용
- 읽기/쓰기 성능을 중시
- Producer가 Batch 형태로 broker로 메시지 전송이 가능하여 속도 개선이 가능하다.
- 파일 시스템에 메시지를 저장하므로,데이터의 영속성 보장
- Consume된 메시지를 곧바로 삭제하지 않고 offset을 통한 consumer-group별 개별 consume 가능하다.
용어

- Broker:Kafa를 구성하는 각 서버 1대 = 1 broker
- Topic:Data가 저장되는 곳
- Producer:Broker에서 data를 read하는 역할
- Consumer-Group:메시지 소비자 묶음 단위(N consumers)->하나의 프로세스 즉 인스턴스를 대표하는 것을 그룹이라 칭한다.
- Zookeeper:Kafka를 운용하기 위한 Coordination service->클러스터의 서버들이 공유하는 데이터를 관리
- Partition:topic이 복사(replicated)되어 나뉘어지는 단위