Nhược điểm
Việc sử dụng API Gateway có thể làm tăng thời gian phản hồi do phải đi qua server trung gian, dẫn đến độ trễ so với việc gọi trực tiếp tới hệ thống Thêm vào đó, việc cấu hình và quản lý server gateway có thể tạo ra nhiều tác nhân gây lỗi, khiến cho việc xử lý yêu cầu trở nên phức tạp hơn; nếu gateway gặp sự cố, các yêu cầu sẽ không thể tới được server.
Nếu không được cấu hình và mở rộng hợp lý, 14 gateway có thể dẫn đến tình trạng nghẽn mạng, làm chậm hệ thống Bên cạnh đó, chi phí cho server, điện năng và quản lý hệ thống API gateway sẽ gia tăng, đặc biệt với những hệ thống lớn cần tính năng cao cấp, việc mua bản Enterprise của các API gateway sẽ làm tăng thêm gánh nặng tài chính.
Service discovery: Netflix Eureka
Service discovery là một thành phần quan trọng trong hệ thống Microservices, nơi lưu trữ thông tin về tất cả các dịch vụ Khi một dịch vụ khởi động, nó sẽ gửi thông tin và địa chỉ IP của mình đến Eureka, và Eureka sẽ chịu trách nhiệm lưu trữ và quản lý các thông tin này.
Ứng dụng vào đề tài
Sử dụng Netflix Zuul làm API Gateway, Netflix Eureka làm Service discovery cho back-end của ứng dụng.
Redis
Các ứng dụng của Redis
– Caching: Sử dụng làm bộ nhớ đệm Chính tốc độ đọc ghi nhanh mà
Redis là một giải pháp hiệu quả cho việc lưu trữ bộ nhớ đệm, cho phép chia sẻ dữ liệu giữa các ứng dụng và hoạt động như một cơ sở dữ liệu tạm thời Bên cạnh đó, Redis có thể được sử dụng làm bộ nhớ cache toàn bộ trang cho website Nhờ vào tính nhất quán của nó, người dùng sẽ không cảm thấy chậm khi tải trang ngay cả khi Redis được khởi động lại.
Counter trong Redis được sử dụng để đếm lượt truy cập, với khả năng tăng giảm thông số nhanh chóng nhờ dữ liệu lưu trữ trên RAM Các cấu trúc dữ liệu như sets và sorted sets thường được áp dụng để theo dõi lượt view của website và bảng xếp hạng trong game Redis đảm bảo tính an toàn cho đa luồng, cho phép đồng bộ hóa dữ liệu giữa các yêu cầu một cách hiệu quả.
Redis Pub/Sub enables the creation of data-sharing channels, facilitating communication between publishers and subscribers, similar to channels in Socket Cluster or topics in Apache Kafka This feature is particularly useful for monitoring connections in social networks and chat systems.
Redis hỗ trợ tạo hàng đợi để xử lý các yêu cầu theo thứ tự, cho phép lưu trữ dữ liệu dưới dạng danh sách Với nhiều thao tác linh hoạt trên các phần tử trong danh sách, Redis trở thành một giải pháp hiệu quả cho việc triển khai message queue.
Các kiểu dữ liệu trong Redis
Redis hỗ trợ nhiều kiểu dữ liệu như STRING, LIST và SET Với STRING, Redis có thể xử lý các giá trị kiểu string, integer và float, cho phép tăng hoặc giảm giá trị LIST là danh sách các string được sắp xếp theo thứ tự chèn, cho phép thêm phần tử vào đầu hoặc cuối, phù hợp cho các tác vụ cần truy cập nhanh vào các phần tử gần đầu và cuối, mặc dù truy cập vào các phần tử ở giữa có thể chậm Cuối cùng, SET là tập hợp các string không sắp xếp, cho phép thêm, đọc, xóa và kiểm tra sự xuất hiện của phần tử, đồng thời hỗ trợ các phép toán tập hợp như intersect, union và difference.
HASH trong Redis là cấu trúc lưu trữ dạng bảng băm cho các cặp key-value, với key được sắp xếp ngẫu nhiên Redis cho phép thực hiện các thao tác như thêm, đọc, xóa từng phần tử và cũng có thể đọc tất cả các giá trị trong bảng băm.
A Sorted Set (ZSET) is a data structure that consists of a collection of elements, where each element is a map pairing a string (member) with a floating-point number (score) The elements in a ZSET are organized in ascending order based on their scores, allowing for efficient retrieval and management of ordered data.
Ứng dụng vào đề tài
Sử dụng Redis làm cache, giúp giảm số lượng request giữa các services ở phía server của ứng dụng.
Google Maps API
Giới thiệu
Hình 2.6: Logo Gooogle Map API
Google Maps API là công cụ kết nối các tính năng của Google Map, giúp lập trình viên phát triển ứng dụng bên thứ ba API này được Google phát triển và tập trung vào ba lĩnh vực chính.
– Triển khai Google Map trên các ứng dụng web mà không phải quan tâm công nghệ phát triển đằng sau nó là gì: php, asp.net, java …
Các ứng dụng di động tích hợp tiện ích chỉ đường, đánh dấu, và tính toán khoảng cách cùng thời gian hoàn thành chuyến đi Đồng thời, các ứng dụng webservice cũng đóng vai trò quan trọng trong việc tạo ra các bộ thư viện và dịch vụ cho những ứng dụng khác cần tích hợp.
Ứng dụng vào đề tài
Sử dụng Google Maps API để xử lý một số tính năng liên quan đến vị trí của người dùng trong ứng dụng.
Google Cloud Messaging
Giới thiệu
Hình 2.7: Dịch vụ Google Cloud Messaging
GCM là dịch vụ miễn phí của Google, cho phép gửi thông báo đến các thiết bị di động của người dùng Điểm mạnh của GCM là khả năng gửi dữ liệu từ server đến cả thiết bị Android và iOS.
Các tính năng nổi bật của GCM:
– Topic Message: Cho phép người dùng nhận thông báo theo các chủ đề do họ lựa chọn, tránh viện bị spam thông báo
– Gửi thông báo đến các thiết bị khác: Cho phép lập trình viên gửi thông báo đến ứng dụng theo 3 cách:
• Theo từng thiết bị riêng lẻ
• Theo 1 nhóm các thiết bị
• Theo các topic cụ thể
– Downstream Message: Cho phép gửi thông báo đến người dùng thông qua các pop-up, notification trước khi người dùng mở ứng dụng – Upstream
Message: Là trường hợp ngược lại của Downstream Message, cho phép gửi ngược dữ liệu lại server thông qua GCM.
Ứng dụng vào đề tài
Sử dụng GooGle Cloud Messaging để gửi notification từ server đến ứng dụng của người dùng.
Amazon S3
Các khái niệm cơ bản
– Bucket: Dữ liệu trên Amazon S3 được hệ thống hoá theo khái niệm Bucket
• Amazon S3 lưu trữ dữ liệu như một Object
• Một Bucket là một đơn vị lưu trữ logical trên S3
• Một Bucket sẽ chứa các object, trong đó Object sẽ chứa dữ liệu (data) và metadata miêu tả về dữ liệu đó
• Bạn có thể chỉ định vị trí địa lý khu vực mà Bucket của bạn tạo ra sẽ được lưu trữ ở Amazon S3 khu vực đó
Mỗi bucket trên AWS sẽ có một tên toàn cục (global) duy nhất, nghĩa là nếu tên bucket đã được sử dụng, không tài khoản AWS nào ở bất kỳ khu vực nào có thể sử dụng lại tên đó.
Một key trong Amazon S3 là chuỗi định danh ID cho một Object trong một Bucket, với mỗi Object có một key duy nhất Địa chỉ truy cập của mỗi Object được tạo ra bằng cách kết hợp thông tin từ web service endpoint, tên bucket, key và version, đảm bảo tính độc nhất cho mỗi Object trong hệ thống.
– Object: là khái niệm cơ bản về một thực thể dữ liệu được lưu trữ trong Amazon S3 Các object sẽ bao gồm object dữ liệu (object data) và metadata.
S3 lưu trữ dữ liệu mà không quan tâm đến nội dung của chúng, nhưng yêu cầu phải có "metadata" dưới dạng thông tin kiểu 'name-value' để mô tả về từng object, ví dụ như ngày chỉnh sửa và loại dữ liệu Mỗi object trong S3 sẽ được gán một ID độc nhất trong một bucket.
Khi sử dụng Amazon S3, việc chọn khu vực địa lý để lưu trữ các bucket là rất quan trọng nhằm tối ưu hóa độ trễ và chi phí Các đối tượng (Object) sẽ được giữ lại trong khu vực đã chọn cho đến khi bạn quyết định xóa hoặc chuyển chúng sang khu vực khác Để lựa chọn khu vực lưu trữ hiệu quả, bạn cần cân nhắc bốn yếu tố chính.
• User/Customer Location (Nơi khách hàng sử dụng dịch vụ) •
• Service Availability (Tính khả dụng dịch vụ)
Ưu điểm của Amazon S3
– Tạo Buckets: tạo và đặt tên một Bucket sẽ chứa dữ liệu Bucket là khái niệm cơ bản trong Amazon S3 dành cho việc lưu trữ dữ liệu
Lưu trữ dữ liệu trong Bucket cho phép bạn lưu trữ vô hạn các loại dữ liệu khác nhau Mỗi dữ liệu được xem như một Object, và bạn có thể tải lên bao nhiêu tùy thích Mỗi Object có khả năng chứa tối đa 5TB dữ liệu.
Bạn có thể tải dữ liệu của mình bất kỳ lúc nào, bao gồm cả việc cho phép người khác tải dữ liệu từ Amazon S3 Bucket của bạn.
– Phân quyền: phân quyền cho phép hoặc từ chối quyền hạn upload/download đối với dữ liệu nằm trong Amazon S3 Bucket của bạn
Giao diện tương tác tiêu chuẩn cho phép bạn thiết kế kết nối từ ứng dụng của mình đến Amazon S3 thông qua việc sử dụng REST hoặc SOAP, hỗ trợ bởi các công cụ lập trình phát triển.
Tính ổn định của hệ thống được đảm bảo với khả năng chịu đựng hỏng hóc và phục hồi nhanh chóng, tối thiểu thời gian gián đoạn Amazon cam kết duy trì tính sẵn sàng với thỏa thuận cấp dịch vụ (SLA) đạt 99.99%.
S3 là một công cụ dễ sử dụng, được thiết kế dựa trên các khái niệm đơn giản, mang lại sự linh hoạt cao cho việc phát triển ứng dụng Nếu cần thiết, bạn có thể xây dựng các lược đồ lưu trữ phức tạp hơn bằng cách thêm các hàm vào các thành phần của S3.
Thiết kế của S3 mang lại tính mở rộng cao, cho phép điều chỉnh linh hoạt dịch vụ khi lượng truy cập vào ứng dụng web tăng đột biến với lưu lượng lớn.
– Rất Rẻ: Chi phí sử dụng S3 rất cạnh tranh với các giải pháp của công ty và cá nhân khác trên thị trường.
Ứng dụng vào đề tài
Sử dụng Amazon S3 để lưu trữ các hình ảnh, tài liệu mà người dùng đăng tải trong ứng dụng.
SMTP Gmail
Giới thiệu
SMTP (Simple Mail Transfer Protocol) là dịch vụ cho phép gửi email với số lượng lớn mà không bị giới hạn Dịch vụ này sử dụng TCP hoặc IP để đảm bảo tính nhanh chóng, bảo mật và tiện lợi trong quá trình gửi mail.
Ứng dụng vào đề tài 23 Chương 3 XÂY DỰNG MẠNG XÃ HỘI HỖ TRỢ HỌC TẬP .24 3.1 Đặt vấn đề 24 3.2 Tìm
Sử dụng để gửi số lượng lớn email tới nhiều người dùng khác nhau Phục vụ cho tính năng xác minh email khi tạo tài khoản, quên mật khẩu.
Chương 3 XÂY DỰNG MẠNG XÃ HỘI HỖ TRỢ HỌC TẬP 23
Trong quá trình học tập thì em nhận thấy bạn bè xung quanh, đặc biệt là các bạn sinh viên UIT thường gặp những khó khăn như:
Khi học ở lớp, thời gian hạn chế khiến giáo viên không thể giải đáp tất cả thắc mắc của học sinh Nhiều bạn cũng thường cảm thấy ngại khi hỏi bài thầy cô, dẫn đến tâm lý e ngại rằng thầy không hiểu bài bằng bạn.
– Còn khi tự học ở nhà, gặp những bài tập khó nhưng lại không có bạn bè, thầy cô xung quanh để giải đáp, giúp đỡ
– Tìm hiểu được những kiến thức hay, bổ ích, muốn thảo luận cùng mọi người nhưng lại không có không gian để chia sẻ
– Chưa nắm vững kiến thức của 1 môn học nào đó, muốn có người kèm cặp hướng dẫn, nhưng lại khó khăn trong việc tìm kiếm
Nếu bạn muốn tham gia các buổi seminar, cuộc thi học thuật và hoạt động ngoại khóa nhưng không biết tìm thông tin ở đâu, hãy khám phá các nguồn tài nguyên trực tuyến, theo dõi trang mạng xã hội của trường và tham gia các nhóm cộng đồng để cập nhật về các sự kiện đang diễn ra xung quanh.
3.2 Tìm hiểu về các ứng dụng học tập phổ biến ở Việt Nam
QandA, viết tắt của Question and Answer, là một ứng dụng giải toán nổi tiếng đến từ Hàn Quốc, giúp học sinh nhanh chóng tìm ra lời giải cho các bài toán Ứng dụng này đã từng dẫn đầu trong các kho ứng dụng của Android và iOS.
• Có thể tìm ra lời giải của bài với tốc độ nhanh chóng
• Sử dụng trí tuệ nhân tạo, có thể tự giải bài mà không cần tới sự can thiệp của con người
• Chỉ giải được một vài dạng bài toán nhất định
• Hiện tại chỉ hỗ trợ giải toán, chưa hỗ trợ các môn học khác •
Chưa hỗ trợ các bài tập bằng tiếng Việt.
PhotoStudy
PhotoStudy là ứng dụng hỗ trợ học sinh, sinh viên tìm kiếm lời giải và hướng dẫn cho bài tập thông qua smartphone Khi người dùng đăng tải câu hỏi, hệ thống kết nối với chuyên gia phù hợp để cung cấp câu trả lời và giải đáp thắc mắc Đặc biệt, PhotoStudy còn ứng dụng trí tuệ nhân tạo để tự động giải quyết một số loại bài tập mà không cần can thiệp từ con người.
Các chuyên gia quốc tế, thường là những người có trình độ đại học, giáo viên hoặc có kiến thức sâu rộng trong lĩnh vực chuyên môn, sẽ cung cấp sự hỗ trợ cần thiết.
• Có chế độ tự giải bài tập bằng AI, hướng dẫn rõ ràng cụ thể từng bước giải, giúp người đọc dễ hiểu bài hơn
• Vẫn chưa hỗ trợ tiếng Việt
• Số môn học hỗ trợ còn hạn chế
• Chế độ tự giải bằng AI chỉ giải được các bài tập đơn giản, những bài phức tạp hơn vẫn cần sự can thiệp của con người.
Hỏi đáp 247
Hỏi đáp 247 là mạng xã hội hỏi đáp bài tập dành cho học sinh từ lớp 1 đến lớp 12
• Có hệ thống tích điểm khi giúp đỡ mọi người trả lời câu hỏi.26 – Nhược điểm:
• Chưa hỗ trợ các môn học cho bậc đại học.
EduBox
Hình 3.4: Logo EduBox Edubox là ứng dụng tìm kiếm gia sư trên các thiết bị di động, với các tính năng như là:
• Đăng yêu cầu tìm gia sư (môn học, mức giá, …)
• Xem đánh giá, chất lượng trình độ gia sư
• Tìm kiếm được công việc dạy thêm để kiếm thêm thu nhập lúc rảnh rỗi
• Tra cứu các yêu cầu tìm gia sư phù hợp và ở gần nơi ở.