로그(log)
단일시스템에서는 상태복구에 사용
분산시스템은 공유가능한 로그를 상태동기화에 사용
- WAL(Write ahead logging) : 어떤 명령을 실행하기전에, 로그먼저 남기고 실행
- SMR (State Machine Replication) : 분산데이터베이스 인덱스 동기화.
분산로그 저장소
- SMR(State Machine Replication)을 위한 공유로그 저장소
- 로그를 서버 1개에만 기록하는것이 아니라, 여러서버에 나눠서 저장한다는 게 특징
- 메세지 큐 처럼 써도 되고, WAL로그를 남길때, 분산 transaction을 남길때 주로 사용한다
오픈소스 분산로그 저장소 Varlog
Varlog의 특징
- 간단한 API로 이용가능 오픈소스 분산로그저장소
- append : 로그 끝에 데이터를 이어붙이거나
- subscribe : 임의의 로그 범위의 데이터를 읽거나
- trim : 로그 앞부분을 저장소 앞에서 삭제하거나
Varlog의 구조
- Storage Node(SN) : 로그를 분산해서 저장. 클라이언트는 로그를 추가하거나 읽어감
- Metadata Repository(MR) : 분산 저장된 로그들에 대한 일관된 순서를 매겨줌 (index ordering)
- ADM(admin) : SN과 MR을 관리
Global Order이슈
MessageQueue 의 특성상 로그 기록이 시간순서대로 연속적이여야 하는데 분산 저장해서 사용하다보니, 일관된 순서를 매기는데 어려움이 분명히 존재할것임.
기존에 존재하는 분산로그 저장소들은 Global Order이슈를 해결하기위해Sequencer라는 로그순서관리자를 사용해서 Global order 를 지정했음. 근데 Sequencer를 사용하는 방식은 또다른 이슈가 있었음
Sequencer없이 Global order를 사용하는 방식을 제안한게 2020 SCALOG (NSDI) 논문을 통해서 제안함 로그 쓰기에 실패해도, 로그에 Hole이 생기지도않고, 쓰기성능병목도 없다
메세지큐 Kov(Kafka on varlog)
varlog 의 기능과 성능의 문제가 없는지 확인하려고 만든 오픈소스
varlog를 메세지 큐 역할로 사용해서 [publisher] → MessageQueue(varlog) → [Subscriber] 구조를 만듬
근데 바로 producer와 varlog를 연동할수 없기때문에 Kafka layer와 varlog클라이언트를 만들어서 적용했음
Kov 구조
- Brokerproxy
- Admin
- KV(Key-value) storage)
Kov는 Kafka의 Pub-sub방식을 흉내내기 위해서Zookeeper를 사내분산 KV스토리지로 대체하고, Broker대신에 Kov클러스터 가 대체함
→ Cloud Native로 개발되는 부분이 많아지다보면, Varlog같은 분산로그시스템이 좀더 유망해질것이라고 생각했다고 함
QNA
Q : 카프카는 버전을 올리면서 주키퍼를 없에려는 움직임이 있는데,카프카 버전을 업그레이드 하면서 혹시 분산로그 저장소를 없에려는 시도를 해보시는지 궁금합니다.
A : kafka 를 기반으로 만든 오픈소스프로젝트기 떄문에, 추후에는 주키퍼를 없앨 예정이다. 그러나, 아직 당장은 상용환경으로 쓰기때문에 주키퍼를 없에지 않을 것이다.
'외부활동' 카테고리의 다른 글
[오픈소스 컨트리뷰션] 코스1. Backend.AI 써보고 경험 공유하기 (0) | 2023.06.21 |
---|---|
[구글 클라우드 쿠버네티스 스터디잼 중급] Introduction to Google Cloud (0) | 2023.06.15 |
[구글 클라우드 쿠버네티스 스터디잼 중급] Introduction to Google Cloud 챕터 4. Cloud Shell 코드 편집기 살펴보기 에러해결 (0) | 2023.06.03 |
AWSKRUG 성수 0322 “EKS에서 검색엔진 플랫폼 구축하기” 후기 (0) | 2023.03.24 |
발표에 대해서 끄적끄적 (0) | 2023.02.22 |