컴퓨터 지식 네트워크 - 컴퓨터 지식 - Canal+Kafka MySQL 및 redis 데이터 동기화

Canal+Kafka MySQL 및 redis 데이터 동기화

머리말

이전 문장 에서는 canal 개념을 간략하게 소개했으며, 이 문서에서는 일반적인 캐시 업무와 함께 canal 사용에 대해 설명합니다. 실제 개발 과정에서는 일반적으로 데이터를 redis 캐시에 저장하여 간단한 쿼리 최적화를 수행합니다. 이 시점에서 데이터베이스 데이터가 변경되면 redis 를 동시에 업데이트하는 코드를 비즈니스 코드에 작성해야 하지만, 이러한 데이터 동기화 코드와 비즈니스 코드를 조합하는 것은 우아하지 않고 데이터 불일치 문제가 발생할 수 있습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), Northern Exposure (미국 TV 드라마), 예술명언) 그럼 이 동기화코드를 뽑아서 독립모듈을 만들 수 있을까요? 대답은' 예' 입니다. 다음은 canal 과 Kafka 를 결합하여 MySQL 과 redis 간의 데이터 동기화를 가능하게 합니다. < P > 아키텍처 설계 < P > 는 MySQL, Canal, Kafka, ZooKeeper, Redis 와 같은 구조 설계도를 통해 사용된 구성 요소를 명확하게 파악할 수 있습니다.

카파 & Zookeeper 구축

먼저 공식 홈페이지에서 Kafka 다운로드:

다운로드 후 폴더 압축을 풀면 다음과 같은 파일을 볼 수 있다.

Kafka 내부에는 zookeeper 가 포함되어 있어 zookeeper 클러스터를 만들 필요가 없다

위 zookeeper 시작 명령과 Kafka 시작 명령을 통해 서비스를 시작하면

Canal 구축

canal 구축 구체적인 내용은 위를 참조하십시오. 구체적인 매개 변수 구성만 여기에 설명되어 있습니다.

찾기 /conf 디렉토리에서 canal.properties 구성 파일:

그런 다음 instance 를 구성하고/conf/example/instance.pov 를 찾습니다

테스트

환경 구축이 완료되면 테스트를 위한 코드를 작성할 수 있습니다.

1, POM 종속성 도입

2, Redis 도구 클래스 캡슐화

application.yml 파일에 다음과 같은 구성 추가:

Redis 작업을 위한 도구 클래스 캡슐화:

3, 동기화를 위한 MQ 소비자 생성

수신을 위한 CanalBean 객체 생성:

마지막으로 소비를 위한 소비자 CanalConsumer 를 생성할 수 있습니다.

Mysql 테스트 Redis 동기화

MySQL 에 해당하는 테이블 구조는 다음과 같습니다.

Update 문을 사용해 보십시오.

콘솔에서도 다음과 같은 출력을 볼 수 있습니다.

완전히 테스트되었습니까? 문제가 있습니까?

요약

canal 이 이렇게 강하면 결점이 없잖아요? 대답은 당연히 존재한다. 예를 들면, canal 은 증분 데이터만 동기화할 수 있고, 실시간 동기화가 아니라 준 실시간 동기화, MQ 순서 문제 등이다. 몇 가지 단점에도 불구하고, 결국 어떤 기술이나 제품도 완벽하지 않고, 가장 중요한 것은 적당하다. 예를 들어, 회사는 현재 Mysql 데이터를 Es 에 동기화하여 Canal+Kafka 를 사용하여 와이드 테이블 검색 쿼리 기능을 제공하는 뷰 서비스를 제공하고 있습니다.

上篇: 5V 가열 칩의 원리 下篇: HTC 휴대폰에서 스크린샷을 찍는 방법
관련 내용