IT 기술/개념정리 (4) 썸네일형 리스트형 Debezium 커넥터 복구 방법 실 운영을 하다보니, bin-log 파싱에러가 발생했다. "schema.history.internal.skip.unparseable.ddl": "true" 옵션을 사용했는데도 불구하고 프로듀싱하는 커넥터가 Stopping down connector 되었다. (원인 : 원인은 primaryKey를 삭제하여 io.debezium.DebeziumException: Error processing binlog event 에러가 발생) 장애 발생을 좀 더 신속하게 알았다면, 재기동을 했겠지만 어느정도 시간이 흐른 뒤 인지하였다. 그래서 에러 발생 시점의 mysql-bin 로그를 못찾는 바람에 재기동이 불가능했다. RDS는 bin 로그 저장 기간을 디폴트 값으로 쓴다면, 짧은 기간동안만 저장한다 즉각적으로 재기동 하.. 유사 채팅방 구현하기(2) 개발목표 1. 채팅 방 접속 시 웹소켓 연결 정보를 찾아 채팅방 메모리에 변수에 저장한다. 2. 커넥션이 끊겼을 때 입장했던 방 사람들에게만 사실을 브로딩 캐스팅한다. 물론 메모리의 데이터는 remove한다. 3. 채팅방 입장 시 방 사람들에게만 사실을 브로딩 캐스팅한다. 4. 유요하지 않은 Text(none Json String)을 보냈더라도 커넥션을 유지한다. 1. 채팅 방 접속 시 웹소켓 연결 정보를 찾아 채팅방 메모리에 변수에 저장한다. 채팅방 정보는 WAS메모리에 기록한다. 커넥션 성공 시 Map 로 저장된다. 추후 이 Map은 Map 형태로 2중 저장된다.(채팅방 입장 시) Map으로 선택한 이유는 HashMap을 사용해 빠른 탐색을 하기 위해서이다. (List의 경우 for문을 돌릴 수 밖에.. 유사 채팅방 구현하기(1) 개발목표 1. 웹소켓을 사용한 채팅방을 구현한다. 2. 웹소켓 연결 시 토큰 값을 받아 연결 가능 여부를 판단한다. 3. 웹소켓 연결 후 채팅방 입장을 요청하며, 채팅방은 DB로 관리한다. 4. 재연결 시도 시(강제종료/연결불안정등) 3.에서 기록된 정보로 채팅방에 재입장한다. 5. 특정 요청 시 채팅방에 포함된 사용자에게 내용을 서버에서 브로드캐스팅한다. 공통코드 프로토타입 1. @Config 채팅방 정보는 WAS메모리에 기록될 예정이다. (추후 변경가능성 높음) 웹소켓 연결시 인터셉터가 연결가능 여부를 판단한다. 연결가능 여부는 Acess Token으로 판단한다. 소켓세션 쓸만하도록 정보를 가공하는 역할을 한다. 핸들러를 따로 생성하여, 메세지를 받았을 때, 연결 시작/종료에 대한 이벤트를 메니징 한.. Debezium 개념정리 도입 배경 1. A DB에서 B DB로 데이터 동기화를 해야한다. 2. 테이블 단위로 이루어지며, A DB와 B DB가 버전이 다르다.(오라클/mysql 포함) 기존 방식 1. A DB의 기준 컬럼(시간)을 기준으로 전송 데이터를 읽어 가공&전송한다. 2. 전송받은 데이터를 B DB에 기록한다. Debezium 1. Debezium은 database에서 발생하는 변경사항을 추적할 수 있는 일종의 Apache Kafka Connect의 source connector 이다. 2. 데이터베이스의 바이너리 로그파일을 기반으로 변경사항을 감지한다. 3. 변경사항 감지는 카프카 커넥터로 이루어진다. 4. 현재 적용 대상인 mysql은 binary log 파일에 모든 데이터베이스 변경사항이 기록되는데 Debezium.. 이전 1 다음