Lãnh sự - Kiến trúc

Sơ đồ kiến ​​trúc cho lãnh sự làm việc trong một trung tâm dữ liệu có thể được mô tả tốt nhất như hình dưới đây:

Như chúng ta có thể quan sát, có ba máy chủ khác nhau, được quản lý bởi Lãnh sự. Kiến trúc làm việc hoạt động bằng cách sử dụng thuật toán bè, giúp chúng tôi bầu ra một nhà lãnh đạo trong số ba máy chủ khác nhau. Các máy chủ này sau đó được gắn nhãn theo các thẻ nhưFollowerLeader. Đúng như tên gọi, người theo dõi có trách nhiệm tuân theo các quyết định của người lãnh đạo. Tất cả ba máy chủ này được kết nối thêm với nhau để giao tiếp.

Mỗi máy chủ tương tác với máy khách của chính nó bằng cách sử dụng khái niệm RPC. Có thể giao tiếp giữa các khách hàng doGossip Protocolnhư đã đề cập bên dưới. Giao tiếp với thiết bị internet có thể được thực hiện bằng cách sử dụng TCP hoặc phương pháp giao tiếp tin đồn. Giao tiếp này tiếp xúc trực tiếp với bất kỳ máy chủ nào trong ba máy chủ.

Thuật toán bè

Raft là một thuật toán đồng thuận để quản lý một bản ghi sao chép. Nó dựa trên nguyên tắcCAP Theorem, nói rằng khi có phân vùng mạng, người ta phải lựa chọn giữa tính nhất quán và tính khả dụng. Không phải tất cả ba nguyên tắc cơ bản của Định lý CAP đều có thể đạt được tại bất kỳ thời điểm nào. Người ta phải đánh đổi để có được hai thứ tốt nhất.

A Raft Clusterchứa một số máy chủ, thường là số lẻ. Ví dụ, nếu chúng ta có năm máy chủ, nó sẽ cho phép hệ thống chịu đựng được hai lỗi. Tại bất kỳ thời điểm nào, mỗi máy chủ ở một trong ba trạng thái:Leader, Follower, hoặc là Candidate. Trong một hoạt động bình thường, có đúng một người lãnh đạo và tất cả các máy chủ khác đều là người theo dõi. Những người theo dõi này ở trạng thái bị động, tức là họ không tự mình đưa ra yêu cầu mà chỉ cần đáp ứng yêu cầu từ lãnh đạo và ứng viên.

Hình minh họa sau đây mô tả mô hình quy trình làm việc sử dụng thuật toán bè -

Dữ liệu giá trị chính

Kể từ phiên bản 0.7.1 của Lãnh sự, đã có phần giới thiệu dữ liệu giá trị khóa riêng biệt. Lệnh KV được sử dụng để tương tác với kho khóa-giá trị của Lãnh sự thông qua dòng lệnh. Nó hiển thị các lệnh cấp cao nhất choInserting, Updating, ReadingDeletingtừ cửa hàng. Để có được kho lưu trữ đối tượng Khóa / Giá trị, chúng tôi gọi phương thức KV có sẵn cho khách hàng lãnh sự -

kv := consul.KV()

Các KVPair Structuređược sử dụng để đại diện cho một mục nhập khóa / giá trị. Chúng ta có thể xem cấu trúc của Consul KV Pair trong chương trình sau.

type KVPair struct {
   Key string
   CreateIndex uint64
   ModifyIndex uint64
   LockIndex uint64
   Flags uint64
   Value []byte
   Session string
}

Ở đây, các cấu trúc khác nhau được đề cập trong đoạn mã trên có thể được định nghĩa như sau:

  • Key- Đây là một tên URL gạch chéo. Ví dụ - trang web / 1 / miền.

  • CreateIndex - Số chỉ mục được gán khi khóa lần đầu tiên được tạo.

  • ModifyIndex - Số chỉ mục được chỉ định khi khóa được cập nhật lần cuối.

  • LockIndex - Số chỉ mục được tạo khi có một khóa mới trên mục nhập khóa / giá trị

  • Flags - Nó có thể được ứng dụng sử dụng để đặt giá trị tùy chỉnh.

  • Value - Đây là một mảng byte tối đa 512kb.

  • Session - Nó có thể được thiết lập sau khi tạo một đối tượng phiên.

Các loại giao thức

Có hai loại giao thức trong Lãnh sự, được gọi là -

  • Giao thức đồng thuận và
  • Giao thức Gossip

Bây giờ chúng ta hãy hiểu chúng một cách chi tiết.

Giao thức đồng thuận

Giao thức đồng thuận được Lãnh sự sử dụng để cung cấp Tính nhất quán như được mô tả bởi Định lý CAP. Giao thức này dựa trên Thuật toán Raft. Khi triển khai giao thức Đồng thuận, Thuật toán bè được sử dụng khi các nút bè luôn ở bất kỳ một trong ba trạng thái: Người theo dõi, Ứng cử viên hoặc Nhà lãnh đạo.

Giao thức Gossip

Giao thức gossip có thể được sử dụng để quản lý tư cách thành viên, gửi và nhận tin nhắn trên toàn cụm. Trong lãnh sự, việc sử dụng giao thức buôn chuyện xảy ra theo hai cách,WAN (Mạng vùng không dây) và LAN(Mạng lưới khu vực địa phương). Có ba thư viện đã biết, có thể triển khai Thuật toán Gossip để khám phá các nút trong mạng ngang hàng -

  • teknek-gossip - Nó hoạt động với UDP và được viết bằng Java.

  • gossip-python - Nó sử dụng ngăn xếp TCP và có thể chia sẻ dữ liệu qua mạng được xây dựng.

  • Smudge - Nó được viết bằng Go và sử dụng UDP để trao đổi thông tin trạng thái.

Các giao thức gossip cũng đã được sử dụng để đạt được và duy trì tính nhất quán của cơ sở dữ liệu phân tán hoặc với các loại dữ liệu khác ở trạng thái nhất quán, đếm số lượng nút trong mạng có kích thước không xác định, truyền bá tin tức một cách mạnh mẽ, tổ chức các nút, v.v.

Cuộc gọi thủ tục từ xa

RPC có thể được ký hiệu là dạng viết tắt cho các cuộc gọi thủ tục từ xa. Nó là một giao thức mà một chương trình sử dụng để yêu cầu một dịch vụ từ một chương trình khác. Giao thức này có thể được đặt trong một máy tính khác trên mạng mà không cần phải xác nhận các chi tiết mạng.

Vẻ đẹp thực sự của việc sử dụng RPC trong Consul là nó giúp chúng tôi tránh được các vấn đề về độ trễ mà hầu hết các công cụ dịch vụ khám phá đã gặp phải cách đây một thời gian. Trước RPC, Lãnh sự thường chỉ cóTCPUDPdựa trên kết nối, tốt với hầu hết các hệ thống, nhưng không tốt với trường hợp hệ thống phân tán. RPC giải quyết những vấn đề như vậy bằng cách giảm khoảng thời gian truyền thông tin gói từ nơi này sang nơi khác. Trong lĩnh vực này, GRPC của Google là một công cụ tuyệt vời để mong đợi trong trường hợp một người muốn quan sát các điểm chuẩn và so sánh hiệu suất.