Tên, định danh và địa chỉ• Tên: • Thực thể: Entity • Điểm truy cập: Access point • Thực thể và điểm truy cập: ví dụ điện thoại đi động • Địa chỉ: một địa chỉ chỉ là một loại đặc biệt
Trang 1DISTRIBUTED SYSTEMSPrinciples and Paradigms
Đỗ Minh Nam
Chapter 5 ĐỊNH DANH TRONG HỆ
PHÂN TÁN
Trang 25.1 Tên, định danh và địa chỉ
• Tên:
• Thực thể: Entity
• Điểm truy cập: Access point
• Thực thể và điểm truy cập: ví dụ điện
thoại đi động
• Địa chỉ: một địa chỉ chỉ là một loại đặc biệt
của tên
Trang 3Names, Identifiers, And Addresses
Một định danh thực sự là một tên:
Properties of a true identifier:
• An identifier refers to at most one entity.
• Each entity is referred to by at most one
identifier.
• An identifier always refers to the same
entity
Trang 4Names, Identifiers, And Addresses
Phân giải một tên
Ta có một tên; ftp.cs.vu.nl
NS(.) ~ NS(nl) ~ NS(vu.nl) ~ address ofjtp.cs.vu.nl
NS(.) ~ NS(nl) ~ NS(vu.nl) ~ address ofjtp.cs.vu.nl
Trang 55.2 Định danh phẳng (Flat naming)
NS(.) ~ NS(nl) ~ NS(vu.nl) ~ address ofjtp.cs.vu.nl
Trang 6Điểm trỏ chuyển tiếp (Forwarding
Pointers) (1)
Trang 7Forwarding Pointers (2)
Trang 8Forwarding Pointers (3)
Trang 9Home-Based Approaches
Trang 10Bảng băm phân tán (Distributed Hash
Table - DHT)
Trang 11 DHTs là cơ sở để xây dựng các hệ thống ứng dụng
phân tán như distributed file systems, peer-to-peer file sharing và content distribution systems Bên cạnh đó là các hệ thống web caching, multicast, anycast, domain name services, và instant messaging.
Các hệ thống ứng dụng sử dụng DHTs đáng chú ý có
BitTorrent, eDonkey ….
Bảng băm phân tán (Distributed
Hash Table - DHT)
Trang 12Bảng băm phân tán (Distributed
Hash Table - DHT)
DHTs là một lớp (class) của hệ thống phân tán có cấu
trúc, cung cấp khả năng tìm kiếm (lookup) tương tự như bảng hash:
– Là một dạng của cấu trúc bảng băm thông thường.
– Cặp (khóa - key, giá trị - value) được lưu trữ ở DHTs và bất kì node
nào cũng có thể truy vấn lấy value một cách hiệu quả thông qua key
đã cho.
– Hỗ các 3 thao tác: chèn, tìm kiếm, xoá các cặp (key, value).
Trang 13DHT: Không gian địa chỉ
Không gian địa chỉ của DHT là một tập gồm nhiều số nguyên,
vd: từ 0 … 2 3 -1, 0 … 2 160 -1, v.v….
0
4
2 6
5
1
3 7
Trang 14DHT: Không gian địa chỉ
Các Node và dữ liệu (data items) được ánh xạ vào cùng một
không gian địa chỉ.
Sử dụng hàm băm bảo mật SHA-1 (sinh ra một số 160 bit).
Đầu vào của hàm băm
– Địa chỉ IP của một Node.
– Tên các files dữ liệu.
– Hoặc nội dung của dữ liệu.
Trang 15DHT: Không gian địa chỉ
Trong hình vẽ:
– Không gian địa chỉ: 0…65535 (216 -1)
– Được phân hoạch cho 8 Node
Trang 16DHT: Quản lý dữ liệu
Địa chỉ IP của một node được băm để xác định vị trí của
nó trong bảng băm
– NodeID = SHA-1(Node IP Address)
Mỗi file dữ liệu được gán một số định danh (Key)
– Key = SHA-1(tên file) hoặc SHA-1(nội dung file).
– Key là giá trị duy nhất trong không gian địa chỉ.
Mỗi node quản lý một khoảng giá trị trong không gian địa
chỉ
Dữ liệu được lưu trữ ở node và được quản lý khoá của
dữ liệu
Trang 18DHT: Tìm kiếm dữ liệu
Thông điệp tìm kiếm khoá K sẽ được chuyển đi lần lượt
đến các node trong DHT cho đến khi gặp node quản lý khoá K.
Trang 19DHT: Cơ chế quản lý
Một node ra nhập (join) hoặc rời bỏ (leave) hệ thống được
quản lý như thế nào?
Node Join: 4 bước
– Step 1: liên lạc với một node tồn tại trong DHT.
– Step 2: xác định khoảng địa chỉ mà nó quản lý.
– Step 3: cập nhật lại thông tin phục vụ cho việc tìm kiếm.
– Step 4: chuyển tất cả các cặp (Key, Value) thuộc quyền quản lý từ node
trước về nó.
Trang 20DHT: Cơ chế quản lý
Node Leave: 2 bước
– Step 2: chuyển các cặp (Key, Value) của nó về node trước nó.
– Step 2: cập nhật lại thông tin phục vụ cho việc tìm kiếm.
Trang 21Giới thiệu giao thức DHT
I Stoica, R Morris, D Karger, F Kaashoek, and H Balakrishnan Chord:
A scalable Peer-To-Peer lookup service for internet applications In
Proceedings of the 2001 ACM SIGCOMM Conference, p 149–160, 2001.
Trang 22Mạng ngang hàng Chord
0
4
2 6
keys 2
keys
keys
7 5
Trang 23Mạng ngang hàng Chord
Là một trong nhiều giao thức sử dụng DHTs (các giao
thức sử dụng DHTs khác như CAN, Pastry, Viceroy…).
Hệ thống tìm kiếm và lưu trữ thông tin P2P.
Cho một khoá (data item), nó ánh xạ khoá đó vào một
Trang 24• ID(Node) = SHA-1(IP Address)
Định danh của một mục dữ liệu (Key) là giá trị băm của
tên hoặc nội dung dữ liệu (phụ thuộc vào ứng dụng).
• ID(Key) = SHA-1(tên file)
• ID(key) = SHA-1(nội dung file)
Trang 25Chord: Không gian địa chỉ
Trong một không gian định danh m-bit sẽ có 2m định
danh.
Các định danh được xếp theo thứ tự vòng tròn modulo
2m.
Vòng tròn định danh được gọi là vòng tròn Chord.
Cặp (k,v) được lưu ở node đầu tiên có định danh lớn hơn
hoặc bằng key trong không gian định danh.
Node như vậy được gọi là successor k, được ký hiệu là
successor(k).
Trang 27Chord: Join and Departure
Khi node n join vào mạng, các khoá do n quản lý đã
được gán cho successor của n bay giờ sẽ được gán trả lại cho n
0
2 6
keys 2
keys
keys
7 5
Trang 28Chord: Join and Departure
Khi node n rời mạng thì tất cả khoá do nó quản lý sẽ được chuyển cho successor của nó.
0
2 6
1 7
keys 1
keys
keys
keys 6
7
Trang 29Chord: Tìm kiếm đơn giản
Mỗi node chỉ biết successor của nó trong vòng tròn
định danh, như vậy có thể duyệt qua các node theo thư
tự tuyến tính.
Các câu truy vấn với một định danh cho trước được
chuyển quanh vòng tròn thông qua các con trỏ successor cho đến khi gặo node chứa khoá cần tìm.
Trang 30Chord: Tìm kiếm đơn giản
1
2 6
0
4
2 6
successor(0) = 1
Node 0 gửi câu truy vấn
với key = 6
Trang 31Chord: Tìm kiếm đơn giản
• Đoạn giả Code để tìm successor:
// ask node n to find the successor of id
Trang 32Chord: Tìm kiếm nâng cao
Thông tin bổ sung này không phải là bản chất cho vấn
đề tính đúng đắn.
Trang 33Ch ord – Finger Tables
• Để tăng tốc độ tìm kiếm, Chord duy trì thêm thông tin
tìm đường.
bit biểu diễn vòng tròn định danh), được gọi là finger table.
node đầu tiên s theo sau node n bởi ít nhất là 2i-1 trong vòng tròn định danh.
Trang 341
3 7
finger table keys
0+2 0
0+2 1
0+2 2
1 2 4
[1,2) 3
3 6
[2,4) [4,0)
finger table keys
For start Int Succ.
3+2 0 4 [4,5) 6
1 2
finger table keys
For start Int Succ.
[0,2) [2,6)
5
Trang 35Chord – tìm kiếm mở rộng
Giả code để tìm successor của một định danh
Walk clockwise to find the node which precedes id and whose successor succeeds id
Start with the m th finger of node n See if it comes between node n and the id, if not, check the m-1 th
finger until we find one wich does.
This is the closest node preceding id Find id’s successor by finding the immediate predecessor of the id
Trang 36Chord – Tìm kiếm mở rộng
0
4
2 6
5
1
3 7
finger table keys
finger table keys
1 2
finger table keys
Successor
finger table keys
7
4 7
successor(5) = 7
4
Trang 37Chord - Node joins
Các công việc được thực hiện
– Khởi tạo predecessor và bảng finger table của node n.
– Cập nhật lại bảng finger table và predecessor của các node tồn tại khi
có thêm node n.
– Chuyển các khoá thích hợp cho node n quản lý.
Trang 38Chord Algorithm - Node joins
0
4
2 6
5
1
3 7
finger table keys
finger table keys
1 2
finger table keys
6 4
Successor 0
Predecessor 35
Successor 3 Predecessor 6
Successor 6 Predecessor 0
finger table keys
6 [6,7)
7 [7,1)
7 7
Khởi tạo bảng fingers và predecessor
find_successor(6);
Trang 39Chord - Node joins
0
4
2 6
5
1
3 7
finger table keys
5
finger table keys
finger table keys
6 4
Successor 0
Predecessor 35
Successor 3 Predecessor 6
Successor 7 Predecessor 0
5
finger table keys
6 [6,7)
7 [7,1)
1 [1,5)
7 7 3
Successor
Predecessor
7 3
5
Cập nhật bảng fingers của các node trong mạng
3 3
P = find_predecessor(n-2 i-1 )
i = 1, P = find_predecessor(4)
3
Trang 40Chord - Node joins
0
4
2 6
5
1
3 7
finger table keys
6
finger table keys
finger table keys
6 4
Successor 0
Predecessor 35
Successor 3 Predecessor 6
Successor 6 Predecessor 0
5
finger table keys
6 [6,7)
7 [7,1)
7 7
5
Chuyển các Keys
Trang 41Chord – node joins
Trang 42Chord - Stabilization
Stabilization
– Đảm bảo tính đúng đắn và hiệu quả.
– Đảm bảo tính cập nhật cho các node‘s successor.
– Sử dụng successor pointers để đảm bảo tính đúng đắn của các bản
ghi trong các bảng finger.
Trang 43Chord - Stabilization
Giả code cho quá trình stabilization
Join does not make the rest of the network aware of n
Every node runs stabilize periodically, to verify the successor
Use successor pointers to
Node n asks its successor for the successor’s predecessor x.
See if x should be n’s successor instead (happens if x recently joined the system)
Notify n’s successor of n’s exist Successor changes its predecessor to n if it knows no closer predecessor than n.
Trang 44Distributed Hash Tables
General Mechanism
Figure 5-4
Resolving key
26 from node 1
Trang 45Hierarchical Approaches (1)
Trang 46Hierarchical Approaches (2)
Trang 47Hierarchical Approaches (3)
Trang 48Hierarchical Approaches (4)
Trang 49Hierarchical Approaches (5)
Trang 50Name Spaces (1)
Trang 51Name Spaces (2)
Trang 52Linking and Mounting (1)
Trang 53Name space
Observation
We can easily store all kinds of attributes in a node,
describing aspects of the entity the node represents:
– Type of the entity
– An identifier for that entity
– Address of the entity’s location
Trang 54 The mechanism to select the implicit context from which to
start name resolution:
– www.cs.vu.nl: start at a DNS name server
– /home/steen/mbox: start at the local NFS file server (possible recursive
search)
– 0031204447784: dial a phone number
– 130.37.24.8: route to the VU’s Web server
Trang 55Linking: kĩ thuật này sử dụng bí danh (alias) - tên giống với tên
của thực thể Với kĩ thuật này cho phép nhiều đường dẫn cùng tham chiếu đến cùng một nút trên đồ thị tên Một cách tiếp cận khác là dùng một nút lá không phải để lưu trữ địa chỉ hay trạng thái của thực thể mà để lưu trữ đường dẫn tuyệt đối tới thực thể đó.
Mounting: là kĩ thuật được thực hiện khi tìm kiếm trên hai không
gian tên Một nút thư mục được gọi là một mount point (điểm
gắn kết) lưu giữ id (hoặc các thông tin cần thiết cho việc xác định và truy nhập) một nút thư mục bên phía không gian tên
cần gắn kết được gọi là mounting point.
Trang 56Linking and Mounting (2)
Information required to mount a foreign
name space in a distributed system
• The name of an access protocol.
• The name of the server.
• The name of the mounting point in the
foreign name space.
Trang 57Linking and Mounting (3)
Trang 58Name-space implementation
Basic issue
Distribute the name resolution process as well as name space management
across multiple machines, by distributing nodes of the naming graph.
Distinguish three levels
• Global level: Consists of the high-level directory nodes Main aspect is
that these directory nodes have to be jointly managed by different administrations
• Administrational level: Contains mid-level directory nodes that can be
grouped in such a way that each group can be assigned to a separate administration.
• Managerial level: Consists of low-level directory nodes within a single
administration Main issue is effectively mapping directory nodes to
Trang 59Name Space Distribution (1)
Trang 60Name Space Distribution (2)
Trang 61Implementation of Name Resolution (1)
Iterative name resolution
1 resolve(dir,[name1, ,nameK]) sent to Server0 responsible for dir
2 Server0 resolves resolve(dir,name1) ! dir1, returning the identification (address) of Server1, which stores dir1.
3 Client sends resolve(dir1,[name2, ,nameK]) to Server1, etc.
Trang 62Implementation of Name Resolution (2)
Recursive name resolution
1 resolve(dir,[name1, ,nameK]) sent to Server0 responsible for dir
2 Server0 resolves resolve(dir,name1) ! dir1, and sends resolve(dir1,[name2, ,nameK]) to
Server1, which stores dir1.
3 Server0 waits for result from Server1, and returns it to client.
Trang 63Implementation of Name Resolution (3)
Trang 64Example: The Domain Name System
Trang 65The DNS Name Space
Trang 66DNS Implementation (1)
Trang 67DNS Implementation (2)
Trang 68DNS Implementation (3)
Trang 69Hierarchical Implementations: LDAP (1)
Trang 70Hierarchical Implementations: LDAP (2)
Trang 71Hierarchical Implementations: LDAP (3)
Figure 5-23 (b) Two directory entries
Trang 72Mapping to Distributed Hash Tables (1)
Trang 73Mapping to Distributed Hash Tables (2)
Trang 74Semantic Overlay Networks