Computer >> Máy Tính >  >> Lập trình >> Redis

Cơ sở dữ liệu toàn cầu cho Serverless và Edge

Trong những năm gần đây, kiến ​​trúc không máy chủ và điện toán biên đang trở nên rất phổ biến để triển khai ứng dụng. Nhưng việc lưu trữ trạng thái ứng dụng và dữ liệu bên trong một hàm không máy chủ và / hoặc cạnh lại là một câu chuyện khác. Có rất nhiều khó khăn như; quản lý các kết nối đến cơ sở dữ liệu, cung cấp dữ liệu để truy cập nhanh từ nhiều vị trí, v.v. Chỉ có một số dịch vụ cơ sở dữ liệu hỗ trợ truy cập không máy chủ và rất ít trong số đó cũng phù hợp với các chức năng cạnh. ( Bạn có thể đọc phân tích chi tiết tại đây. )

Tại Upstash, từ ngày đầu tiên, chúng tôi đang cung cấp cơ sở dữ liệu tương thích Redis không máy chủ để có độ trễ thấp và với mô hình định giá theo yêu cầu. REST API loại bỏ rắc rối quản lý kết nối, đặc biệt là khi được sử dụng trong các chức năng không có máy chủ, nhưng cũng có thể truy cập được ngay cả từ các môi trường bị hạn chế như các vị trí cạnh hoặc trình duyệt web.

Hôm nay, chúng tôi vui mừng thông báo Cơ sở dữ liệu toàn cầu, là một bước tiến xa hơn để cung cấp cơ sở dữ liệu trên toàn cầu, gần hơn với các khách hàng và các vị trí biên để đọc có độ trễ thấp. Cơ sở dữ liệu toàn cầu có sẵn trên cấp miễn phí, bạn có thể dùng thử mà không mất phí .

Sử dụng khi nào?

Cơ sở dữ liệu toàn cầu được triển khai tới nhiều khu vực trên các lục địa khác nhau và các yêu cầu của khách hàng được chuyển đến regio gần nhất để giảm thiểu độ trễ khi người dùng được phân phối trên khắp thế giới. Cơ sở dữ liệu Upstash Global có thể được sử dụng cho;

  • Chức năng Edge (Cloudflare worker, Fastly Compute):API REST tích hợp và khả năng truy cập độ trễ thấp từ tất cả các vị trí cạnh làm cho nó trở thành một giải pháp hoàn hảo.

  • Triển khai không máy chủ đa vùng:Các chức năng AWS Lambda, Vercel và Netlify có thể được triển khai cho nhiều vùng. Cơ sở dữ liệu toàn cầu cung cấp dữ liệu có độ trễ thấp cho dù các chức năng không có máy chủ của bạn ở đâu.

  • Nền tảng web / di động:Sử dụng API REST chỉ đọc, bạn có thể truy cập trực tiếp vào cơ sở dữ liệu của Redis một ứng dụng web / di động. Cơ sở dữ liệu toàn cầu sẽ cung cấp độ trễ tốt hơn như bạn có thể mong đợi cho người dùng từ mọi nơi.

Một mục tiêu khác đằng sau Cơ sở dữ liệu toàn cầu là làm cho cơ sở dữ liệu có khả năng chống lại các lỗi trên toàn khu vực. Khi một khu vực không khả dụng, các yêu cầu của bạn sẽ được chuyển đến khu vực khả dụng gần nhất; để cơ sở dữ liệu của bạn vẫn có sẵn.

Cách hoạt động?

Cơ sở dữ liệu toàn cầu cho Serverless và Edge

Trong mô hình cơ sở dữ liệu toàn cục, có nhiều bản sao của cùng một cơ sở dữ liệu và chúng tạo thành một cụm với nhau. Mỗi bản sao được kết nối với các thành viên cụm khác và theo dõi tình trạng sống của từng người trong số họ bằng cách sử dụng máy phát hiện lỗi. Cả thành viên cụm và phát hiện lỗi đều được quản lý bằng cách sử dụng giao thức truyền thông dựa trên tin đồn. (Xem SWIM:giao thức thành viên nhóm quy trình theo kiểu lây nhiễm nhất quán yếu có thể mở rộng.)

Để sao chép dữ liệu (cụ thể hơn là ghi / cập nhật / xóa cá nhân), mô hình sao chép thủ lĩnh duy nhất được sử dụng. Một nhóm khóa được chỉ định cho một nhóm lãnh đạo, nhóm này được bầu bằng cách sử dụng cơ chế bầu cử nhóm trưởng sau khi thay đổi thành viên. Các bản sao còn lại sẽ trở thành bản sao lưu của người lãnh đạo đó cho nhóm khóa đó. trong một thời gian ngắn và tất cả các yêu cầu sẽ bị chặn cho đến khi cuộc bầu cử hoàn tất.

Chỉ bản sao người lãnh đạo chấp nhận và xử lý các yêu cầu ghi, các bản sao dự phòng trong nội bộ chuyển tiếp các bản ghi cho người lãnh đạo mà không cần thông báo cho khách hàng. Sau khi xử lý yêu cầu ghi, bản sao lãnh đạo sẽ truyền nó đến các bản sao dự phòng.

Thông tin thêm về tính nhất quán

Hiện tại, Cơ sở dữ liệu toàn cầu có tính nhất quán yếu, chúng chưa hỗ trợ tính nhất quán mạnh. Phản hồi của một yêu cầu ghi được trả lại cho máy khách sau khi bản sao lãnh đạo xử lý hoạt động, mà không cần đợi ACK từ phần lớn các bản sao lưu. Kết quả ghi được sao chép để sao lưu đồng bộ một cách dễ dàng song song.

Yêu cầu đọc được xử lý bởi bất kỳ bản sao nào, điều này mang lại khả năng mở rộng đọc tốt hơn nhưng cũng có nghĩa là yêu cầu đọc có thể trả về giá trị cũ cho đến khi kết quả của thao tác ghi cho cùng một khóa đến được bản sao dự phòng.

Sẽ dễ dàng hơn nếu không có xung đột!

Trong trường hợp bị lỗi trên toàn cụm chẳng hạn như phân vùng mạng, nhiều người lãnh đạo có thể được bầu cho cùng một khóa. Điều đó có nghĩa là nhiều bản sao chấp nhận ghi và dữ liệu để phân kỳ trên các bản sao khác nhau. Có thể ngăn chặn xung đột xảy ra ngay từ đầu bằng một mô hình mạnh hơn bằng cách sử dụng các giao thức như Calvin hoặc Spanner (hoặc thậm chí có thể là Paxos, Raft), nhưng đó là một con đường khác mà chúng tôi không muốn thực hiện vào lúc này.

Thay vào đó, Cơ sở dữ liệu toàn cầu cho phép các xung đột xảy ra và giải quyết chúng bằng cách sử dụng LWW ( last-write-won ) thuật toán và cuối cùng hội tụ các bản sao về cùng một trạng thái. Mỗi bản ghi trong cơ sở dữ liệu Upstash có một số thứ tự đơn điệu, duy nhất. Mỗi khi một bản sao trở thành người dẫn đầu, nó sẽ đánh dấu trình tự của các quá trình ghi đầu tiên. Khi hai bản sao của nhà lãnh đạo phát hiện ra nhau, họ chia sẻ bài viết của mình sau khi trở thành người lãnh đạo và họ giải quyết xung đột của mình.

Không phải tất cả các bản sao đều như nhau

Một số bản sao giống nhau hơn những bản khác. Bởi vì chỉ một số người trong số họ có thể được bầu làm lãnh đạo. Trong một cụm cơ sở dữ liệu toàn cầu, một bản sao có thể được đánh dấu là người học , điều này làm cho nó không phù hợp để bầu cử lãnh đạo. Các bản sao của người học luôn ở trạng thái chỉ đọc và không thể là ứng cử viên cho vị trí lãnh đạo.

Việc thêm các bản sao của người học không ảnh hưởng đến sự ổn định của cụm và chúng không thể gây ra xung đột ghi khi chúng bị tách ra. Ngay cả khi họ bị tách khỏi nhóm trưởng, họ vẫn tiếp tục cho phép các yêu cầu đọc và đồng bộ hóa các lần ghi còn lại sau khi phần tách được chữa lành. Vì vậy, bản sao người học là một tiện ích rất tốt để chúng tôi mở rộng thêm các vị trí cạnh.

Nhiều vùng hơn, nhiều bản sao hơn?

Trong bản phát hành đầu tiên, chúng tôi đang cung cấp Cơ sở dữ liệu toàn cầu với năm bản sao và ở năm khu vực. Và các bản sao bên ngoài Hoa Kỳ và EU được đánh dấu là người học s, vì vậy chỉ những bản sao ở các khu vực Hoa Kỳ và EU mới có thể được bầu làm lãnh đạo. Điều này làm giảm khả năng xảy ra xung đột ghi trong một phân vùng mạng, nhưng cũng cho phép chúng tôi thêm nhiều vùng hơn dưới dạng bản sao của người học mà không phải lo lắng về các phân vùng mạng.

Vẫn còn cách để tiếp tục

Hiện tại Cơ sở dữ liệu toàn cầu chỉ được thiết kế để tối ưu hóa / giảm thiểu độ trễ của các thao tác đọc. Chúng không phù hợp cho việc ghi nhiều tải. Chúng tôi đang làm việc để cải thiện độ trễ cho các thao tác ghi bằng một thiết kế tốt hơn.

Ngoài thiết lập năm khu vực ban đầu, chúng tôi đang xem xét mở thêm các khu vực và / hoặc các nhóm khu vực khác nhau trong tương lai do nhu cầu và phản hồi từ người dùng của chúng tôi.

Bạn có thể liên hệ với chúng tôi trên Twitter và Discord để chia sẻ suy nghĩ / ý tưởng của bạn và các câu hỏi của bạn.