Hiện tại, tôi đang thực hiện một dự án trò chơi mới bao gồm giao diện người dùng React Native và giao diện người dùng dựa trên Lambda. Ứng dụng yêu cầu một số tính năng thời gian thực như hồ sơ người dùng đang hoạt động, xác định địa lý, v.v.
Tôi đã xem Cơ sở dữ liệu thời gian thực của Firebase trông giống như một giải pháp thực sự thanh lịch để đồng bộ hóa dữ liệu thời gian thực nhưng tôi không nghĩ AWS có bất cứ điều gì khá giống nó.
3 tùy chọn tôi có thể nghĩ đến cho thời gian thực "không máy chủ" chỉ sử dụng các dịch vụ AWS là:
Tùy chọn 1: Nhắn tin AWS IoT qua WebSockets
Điều này khá rõ ràng, một kết nối WebSockets được quản lý thông qua SDK IoT. Tôi đã nghĩ đến việc kích hoạt Lambdas để phản hồi các sự kiện gửi đến và gửi đi và chỉ sử dụng WebSockets làm lớp thời gian thực, xây dựng logic xử lý tùy chỉnh trên ứng dụng khách như bạn thường làm.
Nhược điểm của điều này, ít nhất là so với Firebase, là tôi sẽ phải tự mình xử lý dữ liệu trong các sự kiện, điều này sẽ thêm một lớp quản lý khác lên trên WebSockets và sẽ phải được chuẩn hóa với lớp dữ liệu API trong các cửa hàng của ứng dụng .
Ưu điểm:
- Kết nối thời gian thực hai chiều có thể mở rộng
Nhược điểm:
- Chỉ hoạt động khi ứng dụng đang mở
- Cấu trúc thông điệp cần được triển khai
- Nhiều lớp truyền tải được quản lý
Tùy chọn 2: Tìm nạp lại do kích hoạt đẩy
Một tùy chọn khác là sử dụng thông báo đẩy làm trình kích hoạt thời gian thực nhưng sử dụng yêu cầu HTTP thông thường tới API Gateway để thực sự nhận được tải trọng cập nhật.
Tôi thích cách tiếp cận này vì nó chỉ dính vào một lớp truyền tải và một nguồn chân lý duy nhất cho trạng thái ứng dụng. Nó cũng sẽ kích hoạt cập nhật khi ứng dụng không mở vì đây là Thông báo đẩy.
Nhược điểm là đây là công việc tùy chỉnh rất nhiều với các ánh xạ tiềm ẩn khó khăn giữa các thông báo đẩy với dữ liệu cần được tìm nạp.
Ưu điểm:
- Thông báo đẩy hoạt động ngay cả khi ứng dụng bị đóng
- Nguồn sự thật duy nhất, lớp truyền tải
Nhược điểm:
- Giải pháp tùy chỉnh nhất
- Sẽ liên quan đến nhiều yêu cầu HTTP hơn về tổng thể
Tùy chọn 3: Đồng bộ hóa ẩn danh Cái này mới hơn đối với tôi và tôi không chắc liệu nó có thể thực sự được giao tiếp từ máy chủ hay không.
Cognito Sync cung cấp đồng bộ hóa trạng thái của người dùng. trên các thiết bị hoàn chỉnh với hỗ trợ ngoại tuyến và là một phần của SDK ẩn danh mà tôi sẽ sử dụng. Nghe có vẻ giống như những gì tôi đang tìm kiếm nhưng không thể tìm thấy bất kỳ bằng chứng thuyết phục nào về việc có thể sửa đổi hoặc "kích hoạt" các bản cập nhật từ AWS chứ không chỉ từ một trong các thiết bị.
Ưu điểm:
- Cung cấp mô hình dữ liệu thời gian thực trừu tượng hóa
- Được kết nối với bản ghi người dùng ẩn danh OOTB
Nhược điểm:
- Không chắc liệu có thể được sửa đổi hoặc cập nhật từ Lambdas hay không
Tôi tự hỏi liệu có ai có kinh nghiệm làm việc trong thời gian thực trên AWS như một phần của kiến trúc dựa trên Lambda không và nếu bạn có ý kiến về cách tốt nhất để tiếp tục là gì?