본문 바로가기
728x90
반응형

전체 글79

RabbitMQ 네트워크 파티션 발생으로 인한 데이터 큐잉 중단 이슈 개요팀에서 RabbitMQ에 추가된 데이터를 컨슘하여 레디스에 캐싱하는 scdf 프로젝트가 있었다.설정된대로 데이터가 노출되지 않는다는 CS가 발생하여 원인을 분석하던 중 rabbitMQ 쪽을 확인해봤고, 데이터 큐잉이 중단되어 있었다.큐잉이 중단되었기 때문에, 설정된대로 데이터가 노출되지 않았을 것이다.아래의 명령어를 통해 확인해봤더니,$ rabbitmqctl cluster_status기존에는 RabbitMQ에 구성된 노드는 3개였는데rabbitMQ 클러스터를 구성하던 노드 중 하나에서 네트워크 파티션이 발생했다는 것을 확인했다.그리고, 또 다른 노드는 rabbitMQ 클러스터 구성에서 탈퇴되었음을 확인했다.이것이 데이터 큐잉 중단과 관련이 있을 거 같아서 추적해봤다.이슈 1: s.. 2024. 3. 30.
[RabbitMQ] RabbitMQ ACK Producer Confirm Producer가 RabbitMQ에게 Message를 전송한 후 RabbitMQ로부터 ACK를 받는 기법 Producer는 설정에 따라 RabbitMQ의 ACK를 기다리지 않을 수도 있음. Producer는 RabbitMQ에게 메세지 전송 RabbitMQ는 수신한 메세지를 Exchange에게 전달 Exchange는 Exchange에 설정된 규칙에 따라 수신한 메세지를 버리거나, Queue 혹은 다른 Exchange에게 전달한다. (1) Queue가 Mirroring되어 있을 경우 메세지는 미러링된 모든 큐에 복사된 이후 producer에게 ACK를 보낸다. (2) 그렇지 않은 경우 메세지가 버려진다면 RabbitMQ는 Producer에게 바로 ACK를 전송한다. 메세지가 큐.. 2022. 5. 17.
[Java] JVM 구조 2021.05.25 - [Java] - [Java] JDK & JRE & JVM JVM 개요 데이터 영역의 메모리 레이아웃이나 GC에 사용되는 알고리즘, JVM 명령어 실행과 관련된 내부의 최적화(e.g. 기계어로 번역하는 과정) 개발자 재량 JVM 구조 Class loader JVM 내로 클래스파일을 로드하고 연결하는 작업을 수행하는 역할을 한다. 사실 JRE에 속해있지 JVM에 속해있지는 않는다. Execution engine(실행 엔진) 클래스를 실행시키는 역할을 한다. 자바 바이트 코드를 실제로 JVM 내부에서 기계가 실행할 수 있는 형태로 변경한다. JIT(Just In Time) 인터프리터 방식의 단점을 보완하기 위해 도입된 컴파일러다. 인터프리터 방식으로 실행하다가 적절한 시점에 바이트코드 .. 2022. 5. 2.
[Java] JDK & JRE & JVM JDK - 자바 개발 도구 - JRE + 개발을 위해 필요한 도구(javac, java 등)을 포함. 더보기 javac java 파일을 bytecode로 컴파일. 컴파일 된 파일은 .class 파일로 저장됨. java jvac 명령어로 컴파일한 .class 파일을 실행시킬 수 있음. JRE - 자바 실행환경 - JVM이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일, 기타 파일을 가짐. - 운영체제 위에서 실행되며, 거의 모든 운영체제에서 코드 수정 없이 실행될 수 있도록 함. - JRE가 자바 애플리케이션을 실행할 수 있도록 해주므로 보통 자바로 개발된 프로그램들은 JRE를 포함하여 배포함. JVM - 자바 소스코드로 만들어지는 자바 바이너리 파일(.class)를 실행 - 자바 가상 머신 - 자바.. 2021. 5. 25.
728x90
반응형