AWS tương đương với Cơ sở dữ liệu thời gian thực của Firebase là gì?


82

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ì?


Bạn đã cân nhắc triển khai trò chơi trong ứng dụng web Firebase , ví dụ: sử dụng ReactFire , thay vì triển khai "các tính năng của Firebase" trên AWS chưa?
matsev

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 của chúng tôi và Firebase chỉ giải quyết lớp truyền tải, phần còn lại sẽ đượ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

Không chắc điều này có áp dụng được cho trường hợp sử dụng của bạn hay không, nhưng Elasticache Redis có dịch vụ PubSub mà bạn có thể sử dụng. Rất nhiều logic tùy chỉnh tho, có thể.
Adam Owczarczyk

Cognito Sync rất tốt cho việc lưu trữ dữ liệu được cá nhân hóa của người dùng và bạn có thể sử dụng trình kích hoạt AWS Lambda với nó, hoạt động hoàn toàn tốt cho trường hợp sử dụng của bạn.
Ankit Pise

Tôi thấy bài viết này trên google cloud so sánh AWS Mobile Hub và Firebase rất hữu ích: cloud.google.com/docs/compare/aws/mobile
MatthewThomasGB

Câu trả lời:


43

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

Câu hỏi của tôi cho họ:

Nhóm các dịch vụ AWS (nếu có thể) là gì để cung cấp cho DBaaS thời gian thực trong trình duyệt giống như Firebase?

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

Phản ứng của họ:

Đối với câu hỏi của bạn, Firebase gần nhất với 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 dưới đây.

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

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

Amazon Dynamodb là một dịch vụ cơ sở dữ liệu NoSQL nhanh chóng và linh hoạt cho tất cả các ứng dụng cần độ trễ mili giây nhất quán, một chữ số ở bất kỳ quy mô nào. Nó là một cơ sở dữ liệu đám mây được quản lý hoàn toàn và hỗ trợ cả mô hình lưu trữ tài liệu và khóa-giá trị. Mô hình dữ liệu linh hoạt, hiệu suất đáng tin cậy và tự động mở rộng dung lượng thông lượng, làm cho nó trở nên phù hợp tuyệt vời cho thiết bị di động, web, trò chơi, 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), là một bộ nhớ đệm trong bộ nhớ được quản lý hoàn toàn, khả dụng cao, có thể giảm thời gian phản hồi của Amazon DynamoDB từ mili giây xuống micro giây, 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ỳ câu hỏi nào khác, vui lòng cho tôi biết.

Cảm ơn.

Trân trọng,

Tayo O. Dịch vụ web của Amazon

Xem Trung tâm kiến ​​thức hỗ trợ AWS, một cơ sở kiến ​​thức gồm các bài báo và video trả lời các câu hỏi của khách hàng về dịch vụ AWS: https://aws.amazon.com/premiumsupport/knowledge-center/?icmpid=support_email_category

Ngoài ra, trong 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/

Các bình luận cho bài viết đó cũng thú vị.

Jacob Wakeem: Phương pháp này có lợi thế gì so với việc 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ã nào 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, giống như cách được trình bày trong bài báo. Với Elasticache (Redis), khách hàng sử dụng Pub / Sub thường cũng đang sử dụng Redis làm kho lưu trữ dữ liệu cho các trường hợp sử dụng khác như bộ nhớ đệm, bảng xếp hạng, v.v. Cùng với đó, bạn cũng có thể sử dụng ElastiCache (Redis) với dịch vụ AWS IoT bằng cách kích hoạt chức năng AWS Lambda thông qua công cụ quy tắc AWS IoT. Tùy thuộc vào cách ứng dụng dựa trên tin nhắn đượ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 kia.


14

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


6

AWS Amplify là câu trả lời hiện đại của AWS cho Firebase.

Cách nhanh nhất để tạo các ứng dụng web và di động

AWS Amplify là một nền tảng phát triển để xây dựng các ứng dụng web và di động an toàn, có thể mở rộng. Nó giúp bạn dễ dàng xác thực người dùng, lưu trữ an toàn dữ liệu và siêu dữ liệu người dùng, cho phép truy cập có chọn lọc vào dữ liệu, tích hợp học máy, phân tích số liệu ứng dụng và thực thi mã phía máy chủ. Amplify bao gồm toàn bộ quy trình phát triển ứng dụng di động từ kiểm soát phiên bản, kiểm tra mã, đến triển khai sản xuất và nó dễ dàng mở rộng quy mô với doanh nghiệp của bạn từ hàng nghìn người dùng đến hàng chục triệu. Các thư viện Amplify và CLI, một phần của Amplify Framework, là nguồn mở và cung cấp giao diện có thể cắm được cho phép bạn tùy chỉnh và tạo các plugin của riêng mình.


Thử nó. Thiếu trầm trọng. Không đề nghị. Bám sát Firestore. Amplify thậm chí không đề cập đến SLA (đó là trên mỗi tài khoản dịch vụ, nếu bạn không có thỏa thuận thì chỉ có 99% là xấu) hoặc kết nối tối đa là gì, hoặc cách nó hoạt động trên quy mô. Nghèo. Ngoài ra, không có plugin Typescript cho những thứ phía máy chủ như firebase-admin.
Oliver Dixon

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.