33

Tôi đang làm việc trên một dự án trò chơi mới tại thời điểm này sẽ bao gồm một Front-end React Native và một back-end 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 hoạt động, tính năng định vị địa lý, v.v.AWS sẽ tương đương với Cơ sở dữ liệu thời gian thực Firebase là gì?

Tôi đang 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 cho đồng bộ hóa dữ liệu thời gian thực. khá thích nó.

3 tùy chọn tôi có thể nghĩ ra cho "serverless" thời gian thực chỉ sử dụng dịch vụ AWS là:

Lựa chọn 1: AWS IOT Tin nhắn qua WebSockets

Cái này là khá rõ ràng, một kết nối WebSockets quản lý thông qua SDK IoT. Tôi đã nghĩ đến việc kích hoạt Lambdas để đáp ứng các sự kiện trong và ngoà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. Một nhược điểm của điều này, ít nhất là so với Firebase, là tôi sẽ phải xử lý dữ liệu trong chính các sự kiện mà sẽ thêm một lớp quản lý khác 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 Scalable bi-directional

Nhược điểm:

  • Chỉ hoạt động khi ứng dụng được mở
  • nhắn cấu trúc cần được thực hiện
  • Nhiều lớp vận chuyển cần quản lý

Tùy chọn 2: Push-kích hoạt lại lấy

Một lựa chọn khác là sử dụng thông báo đẩy như thời gian thực gây nên nhưng sử dụng một yêu cầu HTTP thông thường để API Gateway để thực sự có được tải trọng cập nhật.

Tôi thích phương pháp này vì nó chỉ dính vào một lớp vận chuyển 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à rất nhiều công việc tùy chỉnh với ánh xạ có khả năng khó khăn giữa các thông báo đẩy cho 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 được đóng
  • nguồn Độc thân của chân lý, lớp truyền tải

Nhược điểm:

  • giải pháp Hầu hết các tùy chỉnh
  • Sẽ liên quan đến nhiều yêu cầu HTTP hơn tất cả

Cognito Sync Đây là phiên bản mới hơn với tôi và tôi không chắc chắn nếu nó thực sự có thể được giao tiếp với từ máy chủ.

Đồng bộ hóa Cognito cung cấp đồng bộ hóa trạng thái 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 Cognito SDK 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 kết luận nào về việc nó có thể sửa đổi, hoặc "kích hoạt", cập nhật từ AWS và không chỉ từ một trong các thiết bị.

Ưu điểm:

  • Cung cấp một trừu tượng mô hình dữ liệu thời gian thực
  • Kết nối với Cognito hồ sơ người dùng OOTB

Nhược điểm:

  • Không chắc chắn nếu có thể được sửa đổi hoặc được cập nhật từ Lambdas


Tôi tự hỏi liệu có ai có kinh nghiệm thực hiện AWS như một phần của kiến ​​trúc dựa trên Lambda và liệu bạn có ý kiến ​​về cách tốt nhất để tiếp tục không?

+0

Bạn đã cân nhắc triển khai trò chơi trong [ứng dụng web Firebase] (https://firebase.google.com/docs/web/setup), ví dụ: sử dụng [ReactFire] (https://github.com/firebase/reactfire), thay vì triển khai "tính năng Firebase" trên AWS? – matsev

+0

Tôi có, nhưng chúng tôi đang sử dụng nhiều dịch vụ mà AWS cung cấp như một phần của cơ sở hạ tầng và Firebase chỉ giải quyết lớp vận chuyển, phần còn lại được AWS xử lý tốt hơn trong trường hợp này, nếu không thì ReactFire sẽ là một lựa chọn tuyệt vời. – BarakChamo

+3

Tò mò tùy chọn bạn đã đi với, tôi đang nghĩ về việc thử tùy chọn 1 mình – Alex

Trả lời

17

Tôi đã hỏi một câu hỏi tương tự với Hỗ trợ AWS và đây là phản hồi của họ.

Câu hỏi của tôi đối với họ:

Có gì nhóm dịch vụ AWS (nếu có thể) để cung cấp cho rằng cùng trong trình duyệt DBaaS thời gian thực có cảm giác như căn cứ hỏa lực?

AWS Cognito có vẻ là tuyệt vời cho tài khoản người dùng. Có bất kỳ điều gì tương tự cho phần WebSockets/phần DB thời gian thực không?

Phản ứng của họ:

Để câu hỏi của bạn, căn cứ hỏa lực là gần gũi nhất với các dịch vụ AWS AWS MobileHub. Bạn có thể xem thêm chi tiết bên dưới về mobilehub từ liên kết bên dưới.

https://aws.amazon.com/mobile/details/ https://aws.amazon.com/mobile/getting-started/

"AWS Cognito có vẻ là rất tốt cho người sử dụng tài khoản. Có điều gì tương tự cho WebSockets/real-time DB phần?"

Amazon Dynamodb là dịch vụ cơ sở dữ liệu NoSQL nhanh và linh hoạt cho tất cả các ứng dụng cần độ trễ nhất quán, một phần nghìn giây tại bất kỳ thang đo nào. Đây là cơ sở dữ liệu đám mây được quản lý hoàn toàn và hỗ trợ cả hai mô hình cửa hàng tài liệu và khóa giá trị . Mô hình dữ liệu linh hoạt của nó, hiệu suất đáng tin cậy và khả năng mở rộng quy mô thông lượng tự động, làm cho nó phù hợp với thiết bị di động, web, chơi game, công nghệ quảng cáo, IoT và nhiều ứng dụng khác.

Amazon Dynamodb có thể được tối ưu hóa hơn nữa với Amazon DynamoDB Accelerator (DAX) mà là một quản lý đầy đủ, tính sẵn sàng cao, bộ nhớ cache trong bộ nhớ có thể giảm Amazon DynamoDB thời gian đáp ứng từ mili giây để micro, thậm chí hàng triệu yêu cầu môi giây.

Để biết thêm thông tin, vui lòng xem tài liệu bên dưới.

https://aws.amazon.com/dynamodb/getting-started/ https://aws.amazon.com/dynamodb/dax/

Nếu bạn có bất kỳ thắc mắc nào, xin vui lòng đừng ngần ngại hãy tôi biết.

Cảm ơn.

Trân trọng,

Tayo O. Amazon Web Services

Kiểm tra các AWS Hỗ trợ Trung tâm Tri thức, một nền tảng kiến ​​thức của bài viết và video mà đáp các thắc mắc của khách hàng về các dịch vụ AWS: https://aws.amazon.com/premiumsupport/knowledge-center/?icmpid=support_email_category

Ngoài ra khi nghiên cứu câu trả lời này, tôi cũng thấy điều này, có vẻ thú vị:

https://aws.amazon.com/blogs/database/how-to-build-a-chat-application-with-amazon-elasticache-for-redis/

Nhận xét cho bài viết đó cũng thú vị.

Jacob Wakeem: Cách tiếp cận này có lợi gì khi sử dụng aws iot? Có vẻ như iot có tất cả các chức năng này mà không cần viết một dòng mã và với kiến ​​trúc không có máy chủ .

Sam Dengler: Tính năng PubSub được quản lý trong dịch vụ AWS IoT cũng là một cách tiếp cận tốt cho các ứng dụng dựa trên tin nhắn, như được minh họa trong bài viết. Với Elasticache (Redis), khách hàng sử dụng Pub/Sub thường sử dụng Redis làm dữ liệu để lưu trữ các trường hợp sử dụng khác như bộ nhớ đệm, bảng thành tích, v.v. Với cho biết, bạn cũng có thể sử dụng ElastiCache (Redis) AWS IoT dịch vụ bằng cách kích hoạt chức năng AWS Lambda thông qua các quy tắc AWS IoT động cơ.Tùy thuộc vào cách ứng dụng dựa trên thông báo được cấu trúc và cách dữ liệu được tận dụng, một giải pháp có thể phù hợp hơn giải pháp khác.

0

Kiểm tra AWS AppSync cho một số tính năng thời gian thực và ngoại tuyến này bằng các nguồn dữ liệu khác nhau, bao gồm tìm kiếm cơ sở dữ liệu và tính toán.

Các vấn đề liên quan