분류 전체보기 (74) 썸네일형 리스트형 [MQ] 카프카 메시지와 토픽과 파티션 카프카 브로커는 프로듀서로부터 메시지를 전달받고, 다시 이를 컨슈머로 전달하는 역할을 담당합니다. 이번글은 카프카를 통해 흘러가는 메시지에 대해 알아보고, 나아가 카프카의 요소인 토픽과 파티셔너에 대해 개념적으로 살펴봅니다. 카프카의 메시지 카프카의 메시지는 Key(키)와 Value(값)로 구성됩니다. 먼저, 메시지의 키는 해당 메시지가 카프카 브로커 내부에 저장될 때, 저장되는 위치와 관련된 요소입니다. 프로듀서가 메시지를 브로커로 전달할 때, 프로듀서 내부의 파티셔너(Partitioner)가 저장 위치를 결정하는데, 이때 키의 값을 이용하여 연산하고 그 결과에 따라 저장되는 위치를 결정합니다. 메시지의 값은 메시지가 전달하고자 하는 내용물을 의미합니다. 값은 단순한 문자열이 될 수도 있고, JSON이.. [Netty] ByteBuf Netty는 왜 자바 표준인 NIO의 ByteBuffer를 사용하지 않는 걸까 이유를 몰랐는데 자바 네트워크 소녀 네티를 보고 이유를 알게되어 정리해봄. ByteBuffer와 ButeBuf의 세부사항 보다는 ByteBuffer는 어떤 문제점을 가지고, ButeBuf는 그 문제점을 어떻게 해결했는지에 초점을 맞추어 정리함. ByteBuffer의 문제점 Netty의 ByteBuf는 자바의 ByteBuffer가 가진 문제점들을 해결하기 위해 나왔다. 데이터 쓰기/읽기 인덱스가 분리돼있지 않다. val byteBuffer = ByteBuffer.allocate(3) // 3바이트를 담을 수 있는 힙버퍼, 전부 0으로 초기화된다. println(byteBuffer) // java.nio.HeapByteBuffer.. [Java] 기존 동시성 프로그래밍의 한계와 새롭게 도입될 구조적 동시성(Structured Concurrency) 1. 기존 동시성 프로그래밍의 한계와 새롭게 도입될 구조적 동시성(Structured Concurrency) [ 비구조적 동시성의 한계 ] ExecutorService를 이용한 동시성 적용 개발을 하다 보면 하나의 작업이 여러 개의 하위 작업(Task)들로 나누어지는 경우가 있다. 일반적인 단일 스레드 애플리케이션에서는 하위 작업들이 순차적으로 실행될 것이다. 하지만 만약 각각의 작업이 서로 독립적이고 하드웨어 리소가 충분하다면, 이를 동시에 실행하여 전체 작업을 더 빠르게 그리고 더 적은 지연 시간으로 처리할 수 있을 것이다. 예를 들어 User와 Order API를 호출하여 얻어온 결과를 사용하는 코드가 있다고 하자. 이때 각각의 I/O 작업이 자체 스레드에서 동시에 실행된다면 더 빠를 것이므로, J.. [Server] Cache(캐시)란? 1. Cache(캐시)란? [ Cache ] Cache란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 아래와 같은 저장공간 계층 구조에서 확인할 수 있듯이, 캐시는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다. Cache는 아래와 같은 경우에 사용을 고려하면 좋다. 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우 (서버의 균일한 API 데이터) 반복적으로 동일한 결과를 돌려주는 경우 (이미지나 썸네일 등) Cache에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 결국 Cache란 반복적으로 데이터를 불러오는 경우에, 지속적으로 DBMS 혹은 서버에 요청하는 것이 아니라 Memory에 데이터를 저장하.. [Java] 예시로 살펴보는 IntelliJ 프로파일링 결과 분석 및 성능 최적화 방법 1. 예시로 살펴보는 IntelliJ 프로파일링 결과 분석 및 성능 최적화 방법 [ 샘플 코드 작성 및 프로파일링 하기 ] IntelliJ Ultimate를 사용하고 있다면, 손쉽게 프로파일링을 진행하고 결과를 확인할 수 있다. 예를 들어 다음과 같은 컨트롤러와 서비스가 있다고 하자. @RestController @RequiredArgsConstructor class BoxingController { private final BoxingService boxingService @GetMapping("/boxing") int boxing() { int result1 = boxingService.max1(100000000L); int result2 = boxingService.max2(100000000L); .. [JVM] Async-Profiler 소개 및 IntelliJ에서 프로파일링 결과 분석하는 방법 1. Async-Profiler 소개 및 사용 방법 [ Async-Profiler ] async-profiler는 오픈소스 프로젝트로, Safepoint bias 문제를 겪지 않는 자바 전용 저오버헤드(low-overhead) 샘플링 프로파일러이다. Safepoint란 GC 작업을 진행하면서 사용되지 않는 객체들을 식별하는데, 이때 애플리케이션이 안전한 지점으로 이동하여 GC를 진행할 수 있는 지점을 safepoint라고한다. 그리고 Safepoint bias 문제란 간단히 요약하면 샘플링 프로파일러에 의한 분석 샘플이 특정 위치로 편향되는 문제를 의미한다. 기존의 많은 자바 샘플링 프로파일러들은 Safepoint bias 문제에 의해 정확한 분석을 해주지 못했기 때문에 상당히 아쉬운 부분이 많이 있었다.. [MQ]Windows 환경에 kafka 설치하기 다운로드 (kafka.apache.org/downloads) 및 설치 Kafka 공식 홈페이지에서 다운로드를 받는다. 그리고 다운받은 파일을 적당한 곳에서 압축을 풀어준다. 압축을 풀고 bin\windows 폴더로 진입을 한다. 배치 파일이 많이 보일것이다. 그리고 여기에서 cmd(or powershell)창을 열어준다. kafka 실행 실행을 하기 앞서 이해를 돕기 위한 간단한 개념을 알아야 한다. kafka에서 사용되는 용어들인데 Broker는 kafka의 서버를 뜻하며 동일 노드 내에서 여러개의 Broker를 띄울 수 있다. 그리고 이렇게 분산되어서 여러개의 Broker가 ㅡ띠워져 있으면 이 분산 Message Queue를 관리해주는 역할을 하는 것이 Zookeeper이다. kafka 서버를 띄우기.. [Network] 도메인/호스팅/DNS 서버 도메인 내 사이트의 이름을 지정하는 것 DNS(Domain Name System) 범국제적 단위로 웹사이트의 IP 주소와 도메인 주소를 이어주는 환경/시스템. 이 안에서 부분적으로 지 역할을 하는 서버를 풀네임으로 DNS 서버, 또는 부르는 사람마다 지 맘대로 다르게 말하기도 함 (DNS 서버, 네임서버, 도메인 네임서버 등) 호스팅 내 사이트가 위치하는 공간(내 데이터를 저장할 공간)을 빌리는 것. 데이터를 저장하는 컴퓨터 호스팅 서버 웹 사이트의 데이터가 저장되어 있는 호스팅 서버는 인터넷 회선이 연결된 컴퓨터/장치인지라 IP주소가 할당되어 있고 이 주소가 실제 웹사이트 주소라 할 수 있음. 홈페이지고 사이트고 결국은 데이터 쪼가리이기 때문에 물리적으로 저장할 컴퓨터가 필요함. 이런 컴퓨터를 호스팅 .. 이전 1 ··· 3 4 5 6 7 8 9 10 다음