Tải bản đầy đủ (.pptx) (15 trang)

Spanner Hệ cơ sở dữ liệu phân tán

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (437.13 KB, 15 trang )

XỬ LÝ ĐỒNG THỜI TRÊN HỆ
CSDL SPANNER
1
NỘI DUNG BÁO CÁO
1. Giới thiệu Spanner
2. Kiến trúc Spanner
3. Spanserver Software Stack
4. TrueTime
5. Timestamps and TrueTime
6. Điều khiển đồng thời (Concurrency Control)
7. Đánh giá
2
Giới thiệu Spanner

Spanner là hệ cơ sở dữ liệu phân tán toàn cầu của
Google.

Spanner có khả năng mở rộng cho phép lưu trữ hàng tỷ
tỷ dòng dữ liệu trong hàng triệu node phân tán qua hàng
trăm datacenter.

Trọng tâm chính của Spanner là quản lý sao chép dữ
liệu qua các datacenter.

Spanner hỗ trợ ACID cho các giao tác và cung cấp ngôn
ngữ truy vấn dựa trên SQL.

Spanner sử dụng một TrueTime API mới để đồng bộ và
xử lý đồng thời.
3
Kiến trúc Spanner



Một sự triển khai Spanner gọi là
universe.

Một universe có nhiều zone
(physic location).

Một datacenter có một hoặc
nhiều zone.

Một zone có một zonemaster
và hàng trăm đến hành nghìn
spanserver.
Spanner Server Configuration

Universemaster cung cấp thông tin trạng thái của tất cả các zone
hoặc thông debugging.

Placement driver tự động chuyển dữ liệu giữa các zones hoặc
định kỳ tương tác với server để tìm kiếm dữ liệu cần chuyển đổi.
4
Spanserver Software Stack

Quản lý 100 – 1000 tablet.

Trạng thái của tablet lưu trong Colossus Distributed File System
dưới dạng file B-tree và write-ahead log.

Mỗi tablet được nhân bản qua nhiều datacenter sử dụng Paxos.


Mỗi Paxos có một leader tồn tại tương đối dài.

Tập hợp các bản sao (replicas) gọi là một nhóm Paxos (Paxos group)
5
Spanserver Software Stack
Paxos Group
6
True Time

Một API cung cấp thông tin về thời gian.

Có các phương thức sau:

TT.now(): trả về thời gian hiện tại dưới dạng
TTinterval: [earliest, latest], đảm bảo thời gian tuyệt
đối khi TT.now() được gọi là ở trong TTinterval.

TT.after(t): trả về true nếu chắc chắn đã qua thời
gian chỉ định t, ngược lại: false.

TT.before(t): trả về true nếu chắc chắn trước thời
gian chỉ định t, ngược lại: false.
7
TrueTime

TT.now()
time
earliest latest
TT.now()
2*ε


ε là biên độ lỗi tức thời (instantaneous error bound).

TTinterval tt = TT.now()

tt.lastest – tt.earliest = 2*ε

Thực thế, ε nằm trong khoảng từ 1 đến 7ms.
8
Timestamps and TrueTime

Gán timestamp đến một transaction

Sử dụng 2PL đối với một write transaction
T
Pick s = TT.now().latest
Acquired locks
Release locks
Wait until TT.now().earliest > ss
average ε
Commit wait
average ε

Commit wait là khoảng thời gian mà coordinator leader đảm bảo các
clients không nhìn thấy bất kỳ dữ liệu nào đã commit bởi T cho đến
khi TT.after(s) là true
9
Điều khiển đồng thời

Có 3 loại hoạt động mà Spanner hỗ trợ:


Read/write transaction

Read-only transaction

Snapshot reads

Hoạt động write đơn lẻ được cài đặt như một
read/write transaction.

Một hoạt động read (không phải snapshot read)
được cài đặt như một read-only transaction.
10
Điều khiển đồng thời

Read/Write Transaction

Sử dụng two phase commit (2PC)
TC
Acquired locks
Release locks
TP1
Acquired locks
Release locks
TP2
Acquired locks
Release locks
Notify participants of s
Commit wait done
Compute s for each

Start logging Done logging
Prepared
Compute overall s
Committed
Send s
11
Điều khiển đồng thời

Read-Only Transaction

Spanner yêu cầu scope-expression cho mỗi read-only transaction.

Scope-expression là một biểu thức tóm tắt các khóa (key) sẽ được đọc bởi
toàn bộ transaction.

Nếu giá trị của scope được thực thi bên trong một nhóm Paxos:

Client yêu cầu group leader cho một read-only transaction. Paxos leader gán
timestamp là LastTS() và thực thi hoạt động read.

LastTS() là giá trị timestamp của hoạt động write đã commit sau cùng trong
một nhóm Paxos.

Nếu giá trị scope thực thi qua nhiều nhóm Paxos:

Client sử dụng TT.now().lastest như là một read timestamp.

Client chờ cho đến khi TT.after() là true.

Xác nhận giá trị timestamp đã qua.


Gửi read task trong transaction đến các bản sao (replicas)
12
Điều khiển đồng thời

Schema Change Transaction

Sử dụng một transaction đặc biệt.

Đầu tiên, tạo một thời điểm ở tương lai và tạo và đăng ký
một timestamp.

Điều này giúp cho schema thay đổi mà không ảnh hưởng đến các
task đang diễn ra.

Read/write liên quan đến thay đổi schema được đồng bộ
với timestamp đã đăng ký của schema.

Nếu timestamp của task sớm hơn timestamp của thay đổi
schema, task được thực hiện sớm. Ngược lại, nó bị chặn.
13
Đánh giá

Spanner là hệ CSDL phân tán quy mô toàn cầu
đầu tiên của Google và hỗ trợ giao tác phân tán
nhất quán bên ngoài (externally-consistently)

Spanner kế thừa những ưu điểm từ BigTable và
MegaStore và khắc phục nhược điểm của chúng.


Một tính năng then chốt của Spanner là
TrueTime.
14
Cảm ơn!
15

×