Top Banner
Bottled Water 요요 요요 2015.10.27 요요
15

Bottled water 요약 설명 20151114

Apr 13, 2017

Download

Software

Daeyong Shin
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Bottled water 요약 설명 20151114

Bottled Water 요약 설명2015.10.27 대용

Page 2: Bottled water 요약 설명 20151114

프로그래밍 잘하게 생긴 예

Page 3: Bottled water 요약 설명 20151114

문제 상황

Page 4: Bottled water 요약 설명 20151114

문서의 핵심• DB 그리고 캐쉬등의 다른 스토리지에 어플리케이션이 동시 쓰기를 하면 여러 가지 이점이 있지만 결국에는 데이터가 달라짐• 차이가 커지면 수동으로 교정을 하는데 디비가 큰 경우에는 하루로 끝나지 않는 매우 큰 작업임• 가끔씩 하는 것보다 스냅샷과 변경 분을 fello 하는 것이 좋음• 링크드인과 페이스 북은 이미 이렇게 하고 있음• postgreSQL 은 과거에 사용하던 커밋 로그보다 좀 더 나은 방법을 제공함• kafka 는 key 단위 log aggregation 을 자체적으로 해줌

Page 5: Bottled water 요약 설명 20151114

문제• DB 는 정말 좋은데 ...• 분석을 위해서 다른 곳에다가 복사 하고 싶다 . • 빠른 서비스를 위해서 캐쉬도 하고 싶다 .

Page 6: Bottled water 요약 설명 20151114

dual writes• 프로그램은 DB 에 작업 , 캐쉬 날리고 , 검색 엔진 인덱스 새로 생성하고 , 로그를 남긴다 .

• 문제가 많고 결국에는 각 스토리지에서 각 데이터들은 달라지게 된다 . • 디비 스냅샷을 떠서 교정 작업을 보면 좋은데 디비가 커질수록 비 효율적이고 엄청 오래 걸릴것이다 . • 또한 스냅샷을 작게 만들려면 이러한 배치를 자주 계속 돌려야 한다 ...

Page 7: Bottled water 요약 설명 20151114

replication• 짱 좋음• a consistent snapshot at one point in time, and • a real-time stream of changes form that point onwards.

• 파이프 라인으로 이러한 변경의 스냅샷을 순서 대로 받을 수 있다 .• 디비가 아닌 다른 시스템에도 이 개념을 적용 할 수 있다 .

Page 8: Bottled water 요약 설명 20151114

Chanage Data Capture (CDC)• 이런걸 CDC 라 부름• LinkedIn• Databus

• Facebook• Wormhole

• 이런게 있으면 당신은 = “cental hub of data streams” 에서 데이터를 로드 할 수 있다 .• 리얼 타임• 안정적인 ....

Page 9: Bottled water 요약 설명 20151114

비슷한거• Oracle – GoldenGate• MySQL – binlog• MongoDB – oplog• CouchDB – changes feed• RethinkDB• Firebase

• PostgreSQL – logical decoding!!!!!!!

Page 10: Bottled water 요약 설명 20151114

Bottled Water• Confuent 의 지원을 받아 혼자 만듬• WAL 를 어서 정합성 유지• aborted/bolled-back 등은 남지 않는다 .

• logical decoding 은 지정된 시간 동안 전체 DB 의 변경 스냅샷을 가져 올 수 있다 .

• bottled water 는 logical decoding 으로 부터 스냅샷을 받아서 avro 로 kafka 에 각 테이블을 별개의 topic 으로 넣는다 .

Page 11: Bottled water 요약 설명 20151114

왜 카프카 인가 ?• log compaction feature• log compaction 이 활성화 되면 시간 단위 만료는 꺼진다 .• key 가 주어지면 가장 마지막의 레코드를 기억한다 .• * postgres 의 키를 인식해서 사용한다 .....• replicated log abstraction• 이러한 작업들이 가능하도록 잘 추상화를 해주었다 .

Page 12: Bottled water 요약 설명 20151114

avro• confluent 의 규정• schema registry 가 이미 있음

Page 13: Bottled water 요약 설명 20151114

logical decoding output plugin• C 로 짜면 됨

Page 14: Bottled water 요약 설명 20151114

설치$ docker run -d --name zookeeper --hostname zookeeper confluent/zookeeper

$ docker run -d --name kafka --hostname kafka --link zookeeper:zookeeper \ --env KAFKA_LOG_CLEANUP_POLICY=compact confluent/kafka

$ docker run -d --name schema-registry --hostname schema-registry \ --link zookeeper:zookeeper --link kafka:kafka \ --env SCHEMA_REGISTRY_AVRO_COMPATIBILITY_LEVEL=none confluent/schema-registry

$ docker run -d --name postgres --hostname postgres confluent/postgres-bw:0.1

Page 15: Bottled water 요약 설명 20151114

시연• http://showterm.io/fde6260d684ee3a6ee692