GVHD: PGS.TS Nguyễn Hà Nam
Nhóm 1:
1. Nguyễn Thanh Tịnh
2. Vương Đình Dũng
Tổng quan về Riak
Một số ưu nhược điểm
Một số hướng ứng dụng
Riak?
Là một hệ cơ sở dữ liệu phân tán mã nguồn mở
Dữ liệu được chứa trong các bucket, các khóa và các giá trị
Thiết kế dựa theo thuyết CAP của Eric Brewer
-
Consistency
-
Availability
-
Partition tolerance
3/21
Vòng tròn cụm
Mỗi máy chủ vật lý là một node, mỗi node chứa 1 hoặc nhiều node ảo (vnode)
Tất cả các node trong cụm là bình đẳng, không tồn tại khái niệm master node
4/21
Giao thức Gossip
Chia sẻ thông tin giữa các node về trạng thái vòng tròn
cụm:
- Vai trò của mỗi node.
- Các thuộc tính của các bucket.
Mỗi node định kỳ gửi thông tin mà nó biết đến một số node
được lựa chọn ngẫu nhiên.
Chức năng:
-
Phát hiện các node bị mất kết nối với vòng tròn cụm.
-
Làm tăng tính nhất quán của dữ liệu.
5/21
Tạo bản sao
Bảo đảm cho dữ liệu không bị mất nếu có node bị mất kết
nối.
Có thể tùy chỉnh cho từng bucket.
Tiến trình Read Repair: sửa lỗi dữ liệu không nhất quán.
Hinted handoff: bù trừ cho node bị mất kết nối.
6/21
Backend lưu dữ liệu
Engine lưu trữ đặc biệt được tối ưu cho việc truy xuất dữ
liệu dạng key/value.
Hỗ trợ nhiều loại backend, có thể đưa thêm vào hoặc gỡ
ra.
Mỗi bucket có thể dùng một backend khác nhau.
Mặc định dùng Bitcask.
7/21
Backend lưu dữ liệu - Bitcask
File
entry
Thư
mục
File
8/21
Backend lưu dữ liệu - Bitcask
Keydir
- Nằm trọn vẹn trong bộ nhớ trong.
-> Thao tác đọc dữ liệu nhanh.
9/21
Backend lưu dữ liệu - Bitcask
Tiến trình hợp nhất dữ liệu
10/21
Đọc/ghi
Mỗi node đều có thể đóng vai trò là node điều phối cho 1
request từ client:
-
Chuyển request đến các partition phù hợp.
-
Nhận và so sánh các kết quả trả về.
-
Trả lời client.
Đọc
- Client có thể thiết lập 1 giá trị R trên mỗi request.
Ghi
- Cho phép thiết lập 1 giá trị W cho mỗi cập nhật.
- Mỗi cập nhật được đánh dấu bằng 1 vector clock.
11/21
Giải quyết xung đột
Hai cách giải quyết các xung đột trong việc cập nhật
các đối tượng dữ liệu:
-
Cho lần cập nhật gần nhất giành chiến thắng.
-
Trả về cho client tất cả các phiên bản của object.
12/21
Giải quyết xung đột – Vector clock
Phương pháp so sánh các phiên bản của đối tượng
Ví dụ:
[{client1,3,tstamp},{client2,1,tstamp},{client3,2,tstamp}]
Vector Clock Pruning :
13/21
Giải quyết xung đột - Sibling
Sibling được tạo ra khi Riak không thể xác định
được phiên bản đúng của đối tượng dữ liệu.
Ba trường hợp sẽ tạo ra sibling:
-
Các thao tác ghi xảy ra đồng thời.
-
Sử dụng giá trị vector clock sai.
-
Thao tác ghi không dùng vector clock.
14/21
Map-Reduce
Xử lý dữ liệu theo thời gian thực và xử lý song song
Tăng tính địa phương hóa cho dữ liệu
Job:
-
có thể được viết bằng Javascript và gửi đi thông qua HTTP
-
nhận kết quả ở dạng JSON
Map phase
- thực thi tại các node chứa dữ liệu input
Reduce phase
- thực thi tại node điều phối
15/21
Link-walking
Link
-
Thiết lập các mối quan hệ một chiều giữa các đối tượng dữ
liệu
-
Cho phép thực hiện những truy vấn lần theo các mối quan
hệ từ một đối tượng đến các đối tượng khác
-
Đọc và cập nhật link thông qua HTTP Link header
Link: </riak/list/1>; riaktag="previous", </riak/list/3>; riaktag="next"
-
Link-walking bắt đầu từ một đối tượng dữ liệu đầu vào, lần
theo các link của đối tượng đó để tìm những đối tượng phù
hợp
GET /riak/buckets/keys/[bucket],[tag],[keep]
16/21
Một số ưu nhược điểm của Riak
Ưu điểm:
-
Chống chịu lỗi tốt
-
Tính sẵn sàng và tính scalability cao
-
Hoàn toàn địa phương hóa dữ liệu
-
Độ trễ thấp và thông lượng lớn
-
HTTP + JSON
-
Link-walking
-
CAP có thể tùy chỉnh được
-
Multi-backend
-
Map-Reduce linh hoạt
-
Cung cấp nhiều giao diện lập trình
-
Mã nguồn mở
17/21
Một số ưu nhược điểm của Riak
Nhược điểm
-
Thắt nút cổ chai tại Reduce phase
-
Vấn đề với backend Bitcask
+ Bảng keydir phải được chứa toàn bộ trong bộ nhớ trong
-
Không hỡ trợ những đối tượng dữ liệu lớn (>100MB)
18/21
Một số hướng ứng dụng
Các ứng dụng hoạt động trên nền Web
Ứng dụng thu thập thông tin người dùng
-
Mozilla Test Pilot,…
Lưu dữ liệu người dùng cho mạng xã hội và các trò chơi
trực tuyến
- Yammer,…
Xây dựng các ứng dụng Mobile đáng tin cậy và scalability
19/21
Một số hướng ứng dụng
Caching Layer
Hệ thống lưu trữ file đám mây hoặc kho lưu trữ dữ liệu
đa phương tiện
Lưu dữ liệu người dùng cho mạng xã hội và các trò chơi
trực tuyến
Các hệ thống thương mại điện tử phân tán
20/21