카우치베이스 서버

Debezium을 사용하여 MySQL에서 Couchbase로 Kafka 연결하기

카프카는 (카프카 싱크) 데이터 센터로 또는 (카프카 소스) 데이터 센터로부터 레코드를 스트리밍하는 데 사용할 수 있는 스트리밍 플랫폼입니다. Couchbase는 Kafka를 생성하고 지원합니다. 커넥터 를 사용하면 Couchbase를 소스 또는 싱크로 쉽게 사용할 수 있습니다.

전체 튜토리얼을 작성하고 있습니다. 고객 360 사용 사례입니다. 그 중 한 가지가 카프카와 관련이 있습니다. 다음은 개략적인 다이어그램입니다:

Customer 360 ingestion digram

이 튜토리얼의 한 부분은 기업에서 '택배' 시스템에 사용되는 MySQL 데이터베이스에서 (고객 360 용도로 사용되는) Couchbase 데이터 플랫폼으로 데이터를 스트리밍하는 방법에 대한 안내서입니다. 이 블로그 게시물에서는 다이어그램의 이 부분만 집중적으로 설명합니다:

Customer 360 diagram focused on Kafka

전제 조건

처음에는 카프카에 대해 잘 몰랐지만, 카프카를 사용하여 작동하는 개념 증명을 완성할 수 있었습니다:

  • Docker. 이 튜토리얼을 완료하려면 Docker가 설치되어 있어야 합니다. 결국 이 모든 것을 도커 컴포즈로 옮기거나 (더 가능성이 높습니다) Kubernetes. 저는 이 글에서 모든 아키텍처를 구축하고 있지만, 기업에서는 이미 배포된 부분도 있을 것입니다.
  • 데베지움의 빠른 시작 튜토리얼 - Debezium은 MySQL 데이터베이스를 다음과 같이 구성하기 위해 선택한 커넥터입니다. 출처.
  • 카우치베이스 도커 퀵스타트 - 를 사용하여 도커 내에서 간단한 카우치베이스 클러스터를 실행할 수 있습니다.
  • 카우치베이스 카프카 커넥터 빠른 시작 튜토리얼 - 이 튜토리얼에서는 Couchbase를 Kafka 싱크 또는 Kafka 소스로 설정하는 방법을 설명합니다.
  • 도커파일 참조 - 사용자 정의 도커 이미지를 만드는 방법에 대해 설명합니다. 어렵게 들릴 수 있지만 몇 줄의 텍스트에 불과하니 걱정하지 마세요.

카우치베이스 설정

Docker와 함께 Couchbase를 설치합니다:

도커 실행 -d --이름 db -p 8091-8094:8091-8094 -p 11210:11210 카우치베이스

또한 다음을 수행해야 합니다. 카우치베이스 클러스터 설정 를 클릭합니다. "스테이징"이라는 버킷을 만들었습니다.

Zookeeper, Kafka, MySQL 실행 중

대부분의 경우, 다음 지침을 따르기만 하면 됩니다. 데베지움 튜토리얼. 자세한 내용은 모두 읽어보시기 바라며, 간략하게 설명하면 다음 단계를 따르는 것입니다:

Zookeeper 이미지를 실행합니다(카프카의 경우 필수):

도커 실행 -it --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:0.9

카프카 이미지를 실행합니다(Zookeeper에 링크됨):

도커 실행 -it --rm --이름 카프카 -p 9092:9092 --link 동물원관리자:동물원관리자 데베지움/카프카:0.9

MySQL 데이터베이스를 시작합니다(Debezium은 이미 일부 샘플 데이터가 포함된 Docker 이미지를 제공합니다):

docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw debezium/example-mysql:0.9

그런 다음 위의 자격 증명을 사용하여 MySQL 데이터베이스에 연결할 수 있습니다. 데베지움 튜토리얼에서는 이를 위한 다른 Docker 이미지를 제공하거나 원하는 MySQL 도구를 사용할 수 있습니다. 지금 당장 이 작업을 수행할 필요는 없지만 나중에 연결하고 데이터를 삽입/업데이트하여 프로세스를 엔드 투 엔드 테스트하고 싶을 것입니다.

Kafka 커넥터 준비하기

이 시점에서 저는 Debezium 튜토리얼에서 약간 벗어나야 합니다. 이 튜토리얼에서는 (다른 Docker 이미지와 REST 요청을 사용하여) Debezium MySQL 커넥터를 시작하는 방법을 보여줍니다. 하지만 여기서는 Couchbase Kafka 커넥터를 소개하고자 합니다.

가장 쉬운 방법은 사용자 정의 Docker 이미지를 만드는 것입니다. 이렇게 하면 Debezium Kafka 연결 이미지를 기본으로 사용하고, 여기에 Couchbase Kafka 연결 JAR 파일을 추가하기만 하면 됩니다. 이렇게 하려면 다음과 같은 텍스트 파일을 만듭니다. 도커파일:

이 작업이 완료되면 이미지를 작성합니다: 도커 빌드 . --태그 couchbasedebezium. 이미지 소파 기반 데베지움라고 부르지만 원하는 대로 불러도 됩니다. 이 작업이 완료되면 도커 이미지소파 기반 데베지움 가 로컬 리포지토리에 표시되어야 합니다:

카프카 커넥트 시작하기

카프카 커넥트를 시작하려면 다음과 같이 하세요:

docker run -it --rm --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs -e OFFSET_STORAGE_TOPIC=my_connect_offsets -e STATUS_STORAGE_TOPIC=my_connect_statuses --link zookeeper:zookeeper --link kafka:kafka --link mysql:mysql --link db:db couchbasedebezium

그러면 Kafka를 MySQL과 Couchbase에 연결하는 데 사용할 Docker 이미지가 시작됩니다. 제가 사용하고 있는 소파 기반 데베지움 이미지를 사용하고 있으며 -link db:db로 설정할 수 있지만, 그 외에는 데베지움 튜토리얼과 동일합니다.

두 단계가 더 있습니다:

  1. 카프카 커넥트에 MySQL을 소스로 사용하도록 지시합니다.
  2. 카프카 커넥트에 카우치베이스를 싱크대로 사용하도록 하세요.

이를 수행하는 방법에는 여러 가지가 있지만 저는 Kafka의 REST API를 사용하기로 결정했습니다.

MySQL에 소스로 연결

다음 주소로 POST 요청을 생성합니다. http://localhost:8083/connectors/ 몸과 함께:

이것은 데베지움 튜토리얼에서 직접 가져온 것입니다. 특히 다음 사항에 유의하세요. database.server.name 그리고 데이터베이스.화이트리스트. 이를 게시하면 데이터가 MySQL에서 Kafka로 즉시 흐르기 시작합니다.

Couchbase에 싱크로 연결

다음 주소로 다른 POST 요청을 생성합니다. http://localhost:8083/connectors/ 몸과 함께:

이 구성은 주로 카우치베이스 빠른 시작. 명령줄의 텍스트 파일이 아니라 HTTP POST입니다. 특별히 주목하세요:

  • connector.class - 다음은 JAR 파일에 있는 커넥터 클래스입니다.
  • 주제 - 카우치베이스가 가라앉을 주제입니다.
  • connection.cluster_address - Docker에서 Couchbase를 시작할 때 "db"라는 이름을 지정했습니다.
  • connection.bucket, connection.username, connection.password - 이 설정은 모두 Couchbase를 설정할 때 제가 만든 설정입니다.

이제 데이터가 흐르고 있습니다.

이제 데이터가 Couchbase 버킷으로 흘러 들어가고 있어야 합니다. Couchbase에 연결하면 스테이징 버킷에 4개의 문서가 표시됩니다(이는 MySQL 샘플 데이터베이스의 데이터 행 4개에 해당). MySQL 데이터베이스에 데이터를 추가하거나 업데이트하면 더 많은 레코드가 자동으로 Couchbase 버킷으로 롤링되기 시작합니다.

저는 이 모든 과정을 Twitch의 라이브 코드 스트림. 이 모든 과정을 실제로 보고 싶다면 모든 단계를 보여주는 하이라이트 릴을 편집해 보았습니다:

[유튜브 https://www.youtube.com/watch?v=HCAY7EMm3pg&w=560&h=315]

리소스 및 다음 단계

이제 이 튜토리얼을 완료했으니 계속 탐색할 수 있는 다른 방향이 있습니다.

  • 오케스트레이션: 이 샘플에는 수동으로 실행되는 많은 Docker 이미지가 포함되어 있습니다. 프로덕션 환경에서는 이러한 부분 중 일부 또는 전부를 Kubernetes와 같은 것을 사용하여 오케스트레이션하고 확장하고 싶을 것입니다. 이 샘플에는 카우치베이스 엔터프라이즈용 쿠버네티스 운영자.
  • 고객 360: MySQL 데이터베이스에서 Couchbase로 데이터를 스트리밍하는 것은 이 방향의 한 단계에 불과합니다. Customer 360 애플리케이션은 다양한 다른 데이터베이스에서 데이터를 가져올 가능성이 높습니다. Customer 360 수집 아키텍처 구축에 대한 자세한 내용은 Couchbase 블로그와 Couchbase 튜토리얼을 계속 지켜봐 주세요.

문의 사항이 있으시면 다음 연락처로 연락해 주세요. 트위터 @mgroves에 댓글을 남기거나 다음 포스팅을 기대해주세요. 라이브 코드 스트림.

Couchbase 또는 Couchbase Kafka 커넥터에 대한 기술적인 질문이 있는 경우, 다음을 확인하세요. 카우치베이스 포럼.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.