Programming6 Kafka 왜 쓸까? Kafka가 뭘까?카프카는 스트리밍 데이터를 실시간으로 받고 처리하는데 특화된 분산 데이터 저장소이다. 스트리밍 데이터란 수천개의 데이터 원천들로부터 지속적으로 생성되는 데이터다. 카프카와 같은 스트리밍 플랫폼은 이러한 대량으로 유입되는 데이터를 순서대로 처리할 능력이 요구된다. 카프카는 사용자에게 세 가지 기능을 제공한다: 1. 스트림 데이터의 publish 및 subscribe 2. 생성된 순으로 레코드(데이터) 스트림을 효율적으로 저장 3. 레코드들의 스트림을 실시간 처리 카프카는 실시간 스트리밍 데이터 파이프라인과 애플리케이션을 만들 때 활용된다. 메세징, 저장과 스트림 처리 기능을 제공하여 과거와 실시간 데이터 둘 다 유지하며 분석할 수 있다. Kafka가 왜 필요할까?데이터 파이프라인과 메.. Programming 2024. 2. 5. [Kafka] 가상머신(VM) 카프카 & Windows 프로듀서 통신 VirtualBox에 띄운 카프카랑 호스트 OS 프로듀서랑 통신하는 테스트를 해보고 싶었다. 위 그림이랑 비슷한 형태이다. 방법 Kafka VM (Linux) 1) 쉘에서 hostname 입력해서 hostname을 알아낸다. $ hostname user-VirtualBox 2) 카프카 브로커 설정(server.properties)를 편집한다. kafka.properties라는 이름으로 존재할 수도 있는 것 같다. listeners=PLAINTEXT://0.0.0.0:9092 advertised.listeners=PLAINTEXT://user-VirtualBox:9092 listeners는 주키퍼에 등록된 카프카 브로커들끼리 통신할 때 사용되는 클러스터 내부 상 IP이다. 이때 클러스터가 클라우드에 올라가.. Programming 2024. 2. 5. [Kafka] kafka.common.InconsistentClusterIdException 에러 해결 kafka-logs 위치를 /tmp에서 다른 영속적인 디렉토리로 바꾸고 나서 브로커를 재실행 해보니 kafka.common.InconsistentClusterIdException 에러가 떴다. 에러 원인은 브로커가 주키퍼랑 연결을 시도하는 클러스터 id랑 meta.properties에 명시된 실제 클러스터 id랑 다르기 때문이라고 한다. 이것저것 해보니 대충 이해하기로는 cluster id가 meta.properties에 기록되고 브로커가 클러스터를 조인할 때 id를 명시하는데 주키퍼가 meta.properties에 기록된 cluster id를 확인해서 값이 일치하는지 확인해본다. 그래서 브로커가 명시한 cluster id를 meta.properties에 기록해주면 브로커가 정상 실행된다. 그런데 컴퓨터.. Programming 2024. 2. 5. Servlet과 Tomcat의 개념 [참조 문헌] https://medium.com/stackademic/internal-architecture-and-working-of-apache-tomcat-4a0b1800627d https://jeongwhanchoi.medium.com/introduction-to-servlets-aff4abc76ed9 https://medium.com/app-dev-community/complete-introduction-to-java-servlets-d445cec67ce2 https://velog.io/@rudwhd515/Tomcat%EC%9D%98-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC Servlet? 자바 서블릿은 HTTP 요청을 처리하고 동적 응답을 생성해내는 java-base.. Programming 2024. 2. 5. REST API, RESTful 정의 [참조 문헌] https://mannhowie.com/rest-api https://medium.com/ 💡개요 REST는 Representational State Transfer, API는 Application Programming Interface의 약어라고 한다. 웹을 통해 클라이언트와 서버 애플리케이션 간 통신 및 데이터 교환을 가능케 하는 도구이다. REST API는 웹 서비스들이 어떻게 통신해야 할지를 정의한 설계 규칙이다. 이를 위해 엔드포인트, 리소스, HTTP 메소드, 요청 및 응답 형식과 상태 코드 등의 정보들을 이용한다. 자원을 JSON, XML 등으로 표현하기 때문에 Representational이라는 수식어가 붙는다. API는 프로그래머들이 서로 다른 소프트웨어 애플리케이션 간 연.. Programming 2024. 2. 5. Python vs Java [참조 문헌] https://medium.com/ https://www.analyticsvidhya.com/blog/2023/04/java-vs-python/ https://bloofer.net/114 https://monkey3199.github.io/develop/python/2018/12/04/python-pararrel.html 특징적 차이점 타이핑 시스템 Python이 동적 타이핑이라면, Java는 정적 타이핑이다. 쉽게 말해, Java는 변수 선언 시 타입 지정 등 지켜야 할 규칙이 따른다. 동적 타이핑은 런타임 시 인터프리터가 타입을 해석해야 하므로 정적 타이핑보다 느리다. 그 뿐만 아니라, Java가 컴파일 언어라는 점도 속도 차이에 기인한다. 파이썬은 인터프리터 언어로 컴파일 단계가 없이.. Programming 2024. 2. 5. 이전 1 다음