zero-copy 대신에 io_uring
·
DATA Engineering/Kafka
Kakfa는 zero-copy 때문에 빠른거 아니였어? 맞다. 근데 이게 속도차이가 엄청 막 별게 아닌것같더라. 그래서 이게 장점인데 막 엄청 장점은 아니라고한다. io_uring 비동기 IO 처리를 위한 리눅스 커널 시스템 콜 인터페이스 라고 보면된다 (read(), write(), send()같은거…) 근데 이걸 잘 써먹고있는게 Netty다 Netty = 프레임 워크 https://netty.io/ 공식적인 설명은 “Netty는 유지 관리 가능한 고성능 프로토콜 서버 및 클라이언트의 신속한 개발을 위한 비동기 이벤트 기반 네트워크 애플리케이션 프레임워크 입니다.” 라고 나와있다 적은 레이턴시, 적은 메모리 소모, 최소화된 불필요한 메모리 복사를 장점으로 뽑고있다 비동기 처리 Netty는 비동기 처리를..
Zero-Copy는 왜 빠를까? (Kafka)
·
DATA Engineering/Kafka
선요약 Kafka는 일반적인 copy 가 아니라 zero-copy를 사용해서 속도가 빠르다 zero-copy는 데이터를 네트워크로 전송할때 생기는 Kernel-Application단에서 생기는 버퍼과정과 복사본 수를 줄이는 기법을 사용했다 NIC버퍼가 Socket버퍼를 거치지않고, Read버퍼에 DMA(직접메모리접근)엔진으로부터 Read버퍼의 내용을 가지는 Descriptor를 가짐으로써 데이터를 읽게된다 zero-copy 과정에서 생기는 버퍼복사는 단 2회 Read(), Send() 등의 시스템 콜에 의해 바뀌는 context-switching(유저모드,커널모드) 에 대한 오버헤드를 줄이고, DMA엔진의 용량보다 데이터양이 더 클때 생기는 미리읽기 성능저하를 방지할수 있음 (기존 copy, 향상된 co..
섹션 2. 카프카 기본 개념 설명
·
DATA Engineering/Kafka
브로커, 주키퍼 브로커 카프카 클라이언트와 데이터를 주고받기 위해 사용하는 주체 데이터를 분산저장하여 장애가 발생하더라도, 안전하게 사용할수 있도록 해줌 1개의 서버에, 1개의 카프카 브로커 프로세스가 실행된다 데이터를 안전하게 처리하기위해, 3대이상의 브로커 서버를 1개의 클러스터로 묶어서 사용 주키퍼 카프카 클러스터를 실행하기 위해서 주키퍼를 사용 카프카 클러스터 갯수에 맞춰서, 주키퍼도 갯수를 맞춤 주키퍼의 root znode에, 카프카클러스터별 znode를 만들고 카프카 클러스터 실행시 주키퍼의root가 아닌, 클러스터별znode로 설정해서 실행 브로커 역할 컨트롤러 카프카 클러스터의 다수브로커 중 한대가 컨트롤러 역할을한다. 컨트롤러는 다른브로커들의 상태를 체크하고, 브로커가 클러스터에서 빠지면..
섹션 1. 아파치 카프카의 역사와 미래
·
DATA Engineering/Kafka
정리용 간단용어설명 [K] : Kafka, 카프카 (D) : DATA, 데이터 [P] : Producer, 프로듀서 [C] : Consumer, 컨슈머 Kafka는 링크드인의 장애를 막으려고 만들었다 Source APP : Target APP 1 : 1 로 대응되는 시스템관계에서 시스템이 확장되면 → N : M 까지 사이즈가 커짐 이때 장애가 발생한다면? 하나의 시스템에 연동된 모든 APP에 장애가 발생하는 상황이 되는거임 초기 Linkedin에서는 N개의 Source APP ⇒ M개의 Target APP 의 관계를 가지고 있었는데 중앙 시스템이 없다보니, 프로그램 관리가 너무 힘들엇음 Kafka는 내부 데이터 흐름 개선을 위해서 만들었다 메세지 큐 구조 카프카는 다음과 같은 구조를 가지고있다 [Prod..
jjongguet
'kafka' 태그의 글 목록 (2 Page)