- Reactive Programming (Reactive stream)starryeye지난 포스팅(Reactive manifesto) 에 이어 작성한다. Reactive Programming (반응형 프로그래밍) 이란.. 비동기 이벤트 처리 및 데이터 스트림 개념을 기반으로 하는 선언적 프로그래밍 패러다임이다. 위의 정의를 대충 느끼지말고 정확하게 의미를 짚어서 이해를 해보자.. 그럼, 알아야할 개념을 한단계씩 알아가보겠다. 고차 함수 (High Order Function) 란.. 함수를 매개변수로 받거나 함수를 리턴하는 함수를 뜻한다. 일급 객체 (First Class Object) 란.. - 변수에 할당할 수 있어야한다. - 객체의 인자로 넘길수 있어야한다. - 객체의 리턴 값으로 리턴할 수 있어야한다. 참고 자바 8 이전에서는 함수가 일급 객체에 해당되지 않았지만.. 자바 8 이후 ..
- 2023-11-08 00:58:16(1년 전)
- Reactive Manifesto (Reactive System Guide)starryeye이번 포스팅의 주제는 Reactive Manifesto - Published on September 16 2014. (v2.0) 이다. https://www.reactivemanifesto.org/ The Reactive Manifesto Responsive: The system responds in a timely manner if at all possible. Responsiveness is the cornerstone of usability and utility, but more than that, responsiveness means that problems may be detected quickly and dealt with effectively. Responsive systems www.rea..
- 2023-11-06 23:38:04(1년 전)
- Marble diagramsstarryeyeMarble Diagram 이란.. projectreactor 의 Reactor 를 사용하면 자주 보이는 다이어그램이다. Marble Diagram 은 Mono 와 Flux 의 연산자 동작을 시각적으로 보여주기 위함이며, javadoc 전체에서 쉽게 볼 수 있을 것이다. Marble Diagram 읽는 법 위의 화살표는 시간의 흐름을 나타낸다. 왼쪽에서 오른쪽 방향으로 시간 순서이다. 위 다이어그램에서 도형은 파이프라인을 지나는 하나의 element 라 보면된다. 세로 선은 onComplete 이벤트를 뜻한다. C 다이어그램에서는 타임라인에 "X" 표시가 있는데 이는 onError 이벤트가 발생되었음을 나타낸다. D 다이어그램에서는 타임라인에 element 만 존재하고, 이벤트는 발생하지 않아서 종료 되..
- 2023-11-05 18:32:46(1년 전)
- Kafka 6starryeye공부한 개념을 한 문장씩 쭉 세워본다. 멱등성 프로듀서.. 멱등성 프로듀서는 동일한 데이터를 여러번 전송하더라도 카프카 클러스터에 한번만 저장됨을 보장하는 프로듀서이다. 기본 프로듀서는 적어도 한번 전달됨을 보장한다. (At least once) 그래서 카프카 클러스터에 중복 적재될 수 있다는 말이다. 예를 들면, 프로듀서가 send 를 통해 데이터를 브로커로 전달하고, 브로커는 정상 적재를 하였으나.. 모종의 이유로 브로커가 프로듀서로, 적재 완료 응답메시지가 정상 전달되지 않아서 프로듀서는 데이터를 재전송하게되는 상황이 있다. 하지만, 이러한 상황은 극히 드문 상황이므로 두려워하지 않아도 된다. 멱등성 프로듀서 동작 방식.. 멱등성 프로듀서는 데이터를 브로커로 전달할 때 프로듀서의 고유 ID(PID)..
- 2023-09-25 20:41:28(1년 전)
- Kafka 5starryeye공부한 개념을 한 문장씩 쭉 세워본다. 컨슈머는 카프카에 적재된 데이터를 가져가서 필요한 처리를 한다. 컨슈머는 토픽 기준으로 데이터를 소비한다. 카프카 공식 오픈 라이브러리 (Java) 기준으로.. Fetcher 객체는 리더 파티션으로부터 레코드들을 가져오는 책임을 가진다. (배치로 묶어서 가져온다.) KafkaConsumer 의 poll 메서드는 Fetcher 에 있는 레코드들을 리턴해준다. ConsumerRecords 객체는 poll 메서드의 리턴 타입으로 처리가 필요한 레코드들(ConsumerRecord)이 담겨 있다. ConsumerRecord 객체에는 오프셋이 포함되어있다. 컨슈머 그룹은 컨슈머를 각 컨슈머 그룹으로 부터 격리된 환경에서 안전하게 운영할 수 있도록 도와준다. 컨슈머 그룹으로 묶..
- 2023-08-27 22:21:56(1년 전)
- Kafka 4starryeye공부한 개념을 한 문장씩 쭉 세워본다. 카프카에서 데이터의 시작점은 프로듀서이다. 프로듀서는 데이터를 전송할 때 리더 파티션을 가지고 있는 카프카 브로커와 직접 통신한다. 카프카 공식 오픈 라이브러리 (Java) 기준으로.. ProducerRecord 를 KafkaProducer 의 send 메서드로 보낼 수 있다. KafkaProducer 의 send 메서드를 호출 하면, 프로듀서 내부적으로 Partitioner, Accumulator, Sender 가 동작하고 실질적으로 데이터가 리더 파티션을 가진 카프카 브로커로 전송된다. ProducerRecord 객체는 프로듀서에서 생성하는 레코드이다. (오프셋은 미포함) KafkaProducer 의 send 메서드는 레코드를 전송하기 위한 요청 메서드이다. P..
- 2023-08-27 22:06:00(1년 전)
- Kafka 3starryeye공부한 개념을 한 문장씩 쭉 세워본다. 토픽은 카프카에서 데이터를 구분하기 위해 사용하는 단위이다. (RDBMS 의 Table) 토픽은 1개 이상의 파티션을 가진다. 파티션에는 프로듀서가 보낸 데이터들이 저장된다. 해당 데이터를 레코드(record) 라 부른다. 파티션은 큐(Queue) 자료구조와 비슷하게 FIFO 로 동작된다. 큐에서는 데이터를 가져가면(pop) 삭제 하지만, 카프카에서는 삭제하지 않는다. 따라서, 동일한 레코드에 대해 여러 컨슈머 그룹이 가져갈 수 있는 환경이다. 위 그림은.. 브로커 3개에 파티션이 5개인 1개의 토픽을 생성한 그림이다. 팔로워 파티션은 없으므로 replication factor 는 1 이다. 위 그림처럼 파티션이 5개인 1개의 토픽을 생성하면.. round-robi..
- 2023-08-18 20:11:15(1년 전)
- Kafka 2starryeye공부한 개념을 한 문장씩 쭉 세워본다. 카프카 브로커는 카프카를 이용하는 모든 Application 과 데이터를 주고받기 위해 사용하는 주체이다. 우리가 개념적으로 카프카라 생각하는 그것. 하나의 서버에는 한 개의 카프카 브로커 프로세스가 실행된다. 카프카는 보통 데이터를 안전하게 보관하고 처리하기 위해 3대 이상의 브로커 서버를 1개의 클러스터로 묶어서 운영한다. 클러스터 형태의 카프카의 브로커들은... Producer 가 보낸 데이터를 안전하게 분산 저장하고 복제하는 역할을 수행한다. 따라서, 급작스런 브로커의 장애에도 안전하게 사용할 수 있다. 카프카 클러스터를 실행하기 위해서는 주키퍼가 필요하다. 카프카 3.0 부터는 주키퍼가 없어도 클러스터 형태로 운용할 수 있게 되었다. 하나의 주키퍼 앙상블로..
- 2023-08-16 02:21:44(1년 전)
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)