본문 바로가기
반응형

Book24

[카프카, 데이터 플랫폼의 최강자] 5장. 카프카 컨슈머 컨슈머란? 토픽의 메시지를 가져와서 소비(consume)하는 애플리케이션과 서버. 주요기능은 특정 파티션을 관리하고 있는 파티션 리더로부터 메시지 가져오기 요청을 하는 것. 각 요청은 로그의 오프셋을 명시하고 그 위치로부터 로그 메시지를 수신합니다. 그래서 컨슈머는 가져올 메시지의 위치를 조정할 수 있고 필요하다면 이미 가져온 데이터도 다시 들고 올 수 있습니다.(다른 메시지 큐에서는 제공되지 않는 기능, 메시지가 디스크에 저장되기에 가능.) 5.1. 컨슈머의 주요 옵션 컨슈머의 종류는 크게 두 가지로 old consumer와 new consumer가 있음. 주키퍼의 지노드에 오프셋을 저장하면 old consumer, 카프카의 토픽에 저장하면 new consumer 주키퍼의 지노드에 저장하는 방식은 향후.. 2021. 9. 29.
[카프카, 데이터 플랫폼의 최강자] 4장. 카프카 프로듀서 프로듀서란 메시지를 생산해서 카프카의 토픽으로 메시지 보내는 역할을 하는 어플리케이션, 서버 등을 말한다. 프로듀서의 주요 기능은 각각의 메시지를 토픽의 파티션에 매핑하고 파티션의 리더에 요청을 보내는 것. 아래꺼 보완하기 키 값을 정해 해당 키를 가진 메시지를 동일한 파티션에 전송할 수 있음. 키가 없으면 라운드 로빈 방식으로 파티션에 균등하게 분배 4.1. 콘솔 프로듀서로 메시지 보내기 auto.create.topics.enable=true # 토픽이 없을 때 자동으로 토픽을 생성하는 설정 책에서는 실습을 위해 토픽을 생성하며 토픽 생성에 필요한 기본적인 정보는 다음과 같음. 토픽 이름, 파티션 수, 리플리케이션 팩터 # 토픽 생성 ../kafka/bin/kafka-topics.sh --zookeep.. 2021. 9. 29.
[카프카, 데이터 플랫폼의 최강자] 3장. 카프카 디자인 3.1. 카프카 디자인의 특징 3.1.1. 분산 시스템 분산 시스템은 네트워크로 이루어진 컴퓨터들의 그룹으로서 시스템 전체가 공통의 목표를 가지고 있습니다. 다시 말해 같은 역할을 하는 여러 대의 서버로 이뤄진 서버 그룹을 분산 시스템이라고 합니다. 장점은 다음과 같습니다. 단일 시스템보다 더 높은 성능을 얻을 수 있다. 분산 시스템 중 하나의 서버 또는 노드 등이 장애가 발생하면 다른 서버 또는 노드가 대신 처리한다. 시스템 확장이 용이하다. 3.1.2. 페이지 캐시 카프카는 처리량을 높이기 위한 기능을 몇 가지 추가했고 그 기능 중 하나가 페이지 캐시 입니다. OS는 물리적 메모리에 애플리케이션이 사용하는 부분을 할당하고 남은 잔여 메모리 일부를 페이지 캐시로 유지해 OS의 전체적인 성능을 향상 시킵.. 2021. 9. 29.
[카프카, 데이터 플랫폼의 최강자] 2장. 카프카 설치 주된 내용 설치 방법 Systemd를 이용한 프로세스 관리 방법 카프카 운영 팁 설치 방법으로는 서버 직접 설치와 도커 활용 설치가 있는데, 이 글에서는 전자를 다룸. 카프카의 구성은 크게 4가지 프로듀서 카프카 컨슈머 주키퍼: 카프카의 메타데이터 정볼르 주키퍼에 저장하고, 카프카의 상태관리 등의 목적으로 사용. 2.1.카프카 관리를 위한 주키퍼 주키퍼란? 아파치 산하 프로젝트인 하둡, 나이파이, 에이치베이스, 스톰 등의 많은 애플리케이션이 부하 분산 및 확장이 용이한 분산 애플리케이션으로 개발 분산 애플리케이션을 사용하게 되면, 관리를 위한 안정적인 코디네이션 앱이 추가적으로 필요. 대용량 분산 처리 애플리케이션인 하둡의 중앙 관리 코디네이션 애플리케이션의 필요로 인해 서브 프로젝트로 개발되어졌음 카프.. 2021. 9. 29.
[카프카, 데이터 플랫폼의 최강자] 1장. 카프카란 무엇인가 카프카란 카프카는 글로벌 SNS 기업인 LinkedIn에서 개발한 대용량, 대규모 메시지 처리 플랫폼 빅데이터 필수 도구 깃허브에서 많은 스타를 받았으며, 여러 IT 기업에서 데이터 파이프라인으로 활용 중 1.1.카프카 탄생 배경 LinkedIn의 내부 이슈 해결하기 위해 탄생. 카프카를 이용한 링크드인의 데이터 처리 시스템 (출처: https://www.confluent.io/blog/event-streaming-platform-1/) 카프카 도입 이전의 단점들은 위와 같음 실시간 트랜잭션(OLTP) 처리와 비동기 처리가 동시에 이뤄지고 있으며, 통홥된 전송 영역이 없어서 복잡도가 높음. 이를 위한 개선을 하려 해도 연관 시스템을 모두 확인하여 영향도를 확인해야 함. → 복잡하고 변경이 어렵고 장애에 .. 2021. 9. 29.
[모던 자바 인 액션] 15장. CompletableFuture와 리액티브 프로그래밍 컨셉의 기초 소프트웨어 개발 방법을 획기 적으로 뒤집는 2가지 추세 멀티코어 프로세서의 발전으로 애플리케이션의 속도는 이를 얼마나 잘 활용할 수 있도록 개발하느냐가 중요해짐 인터넷 서비스에서 사용하는 애플리케이션이 증가하는 현상 서비스가 작아진 대신 네트워크 통신이 증가함. 다양한 소스의 콘텐츠를 가져와서 사용자의 삶이 풍요롭게 만들도록 합치는 메시업mashup 형태가 될 가능성이 큼 다른 서비스의 응답을 기다리는 동안 연산이 블록되거나 귀중한 CPU 클록 사이클 자원을 낭비하고 싶지는 않으 것이다. 반면에 동시성을 필요로 하는 상황 즉 조금씩 연관된 작업을 같은 CPU에서 동작하는 것 또는 애플리케이션을 생상선을 극대화할 수 있도록 코어를 바쁘게 유지하는 것이 목표라면, 원격 서비스나 데이터베이스 결과를 기다리는 .. 2021. 9. 29.
[모던 자바 인 액션] 10장. 람다를 이용한 DSL 프로그래밍 언어도 결국 언어이며 언어는 메시지를 명확하고 안정적인 방식으로 전달하는 것에 있다. 저명한 컴퓨터 과학자 하롤드 아벨슨이 프로그램은 사람들이 이해할 수 있ㄷ조록 작성되어야 하는 것이 중요하며 기기가 실행하는 부분은 부차적일 뿐이라 말한 것 처럼 의도가 명확하게 전달되어야 한다. 도메인 전용 언어로 애플리케이션의 비즈니스 로직을 표현함으로써 제대로 구현되었는지를 도메인 전문가가 좀더 쉽게 이해할 수 있다. 메이븐, 앤트, 그래들은 빌드 과정을 표현하는 DSL로 간주할 수 있고, HTML은 웹페이지의 구조를 정의하도록 특화된 언어이다. DSL의 장점 간결함 : API는 비즈니스 로직을 간편하게 캡슐화하므로 반복을 피할 수 있고 코드를 간결하게 만들 수 있다. 가독성 : 도메인 영역의 용어를 사용.. 2021. 9. 29.
[모던 자바 인 액션] 9장. 리팩터링, 테스트, 디버깅 기존에 람다, 스트림 API를 사용하지 않던 레거시 코드를 리팩터링할 방법을 알아보자. 람다 표현식으로 전략, 템플릿 메소드, 옵저버, 의무 체인, 팩토리 등의 객체지향 디자인 패턴을 어떻게 간소화할 수 있는지도 살펴보자. 코드 가독성 개선 코드 가독성은 다른 사람이 보더라도 쉽게 이해할 수 있음을 의미한다. 다음 리팩터링 예제를 통해 배워보자 익명 클래스를 람다 표현식으로 리팩터링하기 람다 표현식을 메서드 참조로 리팩터링 하기 명령형 데이터 처리를 스트림으로 리팩터링하기 익명 클래스를 람다 표현식으로 리팩터링하기 익명 클래스는 람다 표현식으로 리팩터링을 할 수 있는데 익명 클래스는 그 장황함과 쉽게 에러를 발생시킨다는 점에서 단점이 있기 때문이다. 하지만 변환이 불가한 케이스도 있는데 아래와 같다. 익.. 2021. 9. 29.
[모던 자바 인 액션] 8장. 컬렉션 API 개선 우리의 개발 라이프에 생기를 더해주는 것 중 하나가 컬렉션이다. 바퀴를 재 발명하지 않고 리스트, 집합, 맵 등의 완성도 있는 자료구조를 객체 선언해서 사용함으로써 개발 속도를 높이면서도 신뢰성 있는 코드를 작성할 수 있다. 컬렉션 API는 JDK 8 전, 후로도 많은 사용성이 개선되었는데, 이번 장에서는 이에 대한 내용을 주로 다룬다. 컬렉션 팩토리 정수를 담는 리스트를 선언하는 방법. 근데 아래 방법으로 선언을 하는 경우에는 엘리먼트의 변경이 불가하다! // 팩토리 메소드 미사용 List list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); // 팩토리 메소드 사용 List list = Array.. 2021. 9. 28.
반응형