2.6.1. Kiến trúc chung
Hình dƣới đây thể hiện sơ đồ kiến trúc của một ứng dụng trên đám mây. Trong mô hình này, luận văn đề xuất một tập dữ liệu và dịch vụ trung gian dựa trên vị trí, chúng sẽ chịu trách nhiệm chính trong việc tập hợp, xử lý các kiểu dữ liệu cũng nhƣ các dịch vụ có sẵn ở những nền tảng thông tin mạng khác nhau. Dựa trên các thông tin
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
đã đƣợc xử lý trƣớc, các module giao diện sẽ tổng hợp rồi phản hồi và quảng bá chúng trên một dịch vụ web. Chi tiết về lớp ứng dụng trên đám mây [8]:
Hình 2. 12: Sơ đồ kiến trúc của ứng dụng trên điện toán đám mây
Lớp ứng dụng trên thiết bị di động hoặc máy tính (Devices): Lớp này chứa
các ứng dụng chạy trên thiết bị di động, máy tính mà chƣơng trình (ví dụ nhƣ LBSinCloud) sẽ đƣợc thiết kế và cài đặt vào thiết bị, nó sẽ hiển thị các địa điểm xung quanh vị trí hiện thời của ngƣời dùng (thiết bị) tùy theo các thông số tìm kiếm, và dẫn đƣờng đến địa điểm mà ngƣời dùng mong muốn. Ứng dụng có thể đƣợc xây dựng trên Android, ISO, Windows Mobile, Computer OS… bằng Java hoặc các công nghệ phát triển khác.
Lớp dịch vụ ứng dụng trung gian - Service Application Middleware: Là các
ứng dụng hoặc các service chạy trên đám mây, các Google API. Các ứng dụng này hỗ trợ cho ngƣời quản trị và ứng dụng có thể giao tiếp với nhau, ngƣời quản trị hệ thống có thể bổ sung thông tin đa phƣơng tiện mà họ thu thập đƣợc tƣơng ứng với vị trí nào đó và đƣa lên server thông qua các ứng dụng của lớp này. Các service trong lớp này sẽ cho phép ứng dụng giao tiếp để lấy về thông tin hoặc cho phép đƣa thông tin lên mây.
Lớp ứng dụng đám mây (Cloud Appication): Lớp này đƣợc các nhà cung cấp
dịch vụ đám mây nhƣ Google, Microsoft,… cung cấp. Nó cung cấp đa dạng các khả năng lƣu trữ, tƣơng tác hay cơ sở hạ tầng cho ngƣời phát triển. Giải pháp dịch vụ điện toán đám mây đƣợc phân thành 3 mô hình chính Saas (Software as a Service), PaaS (Platform as a Service), IaaS (Infrastructure as a Service).
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
2.6.2. Chức năng của hệ thống
Mỗi khu vực đều có các đám mây (CU - Cloud Units), hoạt động nhƣ những trạm hỗ trợ di động nhằm cung cấp dịch vụ cho những ngƣời dùng thiết bị di động trên chính khu vực đó. Các đám mây nhỏ ở khắp nơi đƣợc kết nối tới các nhà cung cấp dịch vụ điện toán đám mây (CSP - Cloud Service Provider). Khi một ngƣời tới một thành phố mới, ngƣời đó có thể muốn tìm tới một siêu thị, cây ATM… của thành phố ấy. Chắc chắn sẽ rất khó nếu ngƣời đó thực hiện tìm kiếm theo cách thức thông thƣờng. Hệ thống luận văn này phát triển sẽ cung cấp dịch vụ tìm kiếm các địa điểm đó xung quanh một điểm có sẵn trên bản đồ. Mỗi đám mây sẽ lƣu một số các thông tin liên quan tới các địa điểm này nhƣ: địa chỉ, số điện thoại liên lạc, mô tả… Ứng dụng di động phát triển trên điện toán đám mâyđƣợc hiển thị ở hình dƣới đây [8]:
Hình 2. 13: Ứng dụng di động phát triển trên điện toán đám mây
Vai trò của LSP và người dùng: Khi một ngƣời dùng đi vào vùng phủ sóng của
một nhà cung cấp dịch vụ dựa trên vị trí (Location Services Provider - LSP), ngƣời dùng đó cần đăng ký với LSP đó để truy cập vào các dịch vụ sẵn có. LSP sẽ thực hiện việc xác thực bằng cách gán cho ngƣời dùng đó một định danh (ID) duy nhất ví dụ nhƣ số điện thoại… Ngƣời dùng lúc này có thể truy cập vào các dịch vụ mong muốn bằng
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
cách cung cấp định danh ID duy nhất đó. Sơ đồ mô tả chức năng của LSP và ngƣời dùng đƣợc mô tả lần lƣợt ở hình 2.14 và 2.15 dƣới đây [8]:
Hình 2. 14: Sơ đồ chức năng của nhà cung cấp dịch vụ dựa trên vị trí (LSP)
Hình 2. 15: Sơ đồ chức năng của người dùng
Vai trò của nhà cung cấp dịch vụ điện toán đám mây (CSP - Cloud Service Provider) và các đám mây trong LBS
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
Trong hệ thống dịch vụ dựa trên vị trí, mỗi một vị trí có nhiều đám mây (Cloud Unit - CU). Các đám mây này đều đƣợc kết nối tới các nhà cung cấp dịch vụ điện toán đám mây CSP. Cả CU và CSP đều có khả năng tính toán khác nhau và thực hiện những nhiệm vụ chính khác nhau. Các đám mây CU có nhiệm vụ đáp ứng các yêu cầu từ ngƣời dùng một cách trực tiếp. Trong khi các CSP tập trung xử lý các tính toán quan trọng của các dịch vụ. CU ở mỗi vị trí đều gửi các yêu cầu tới CSP để thực hiện các dịch vụ phức tạp. Sơ đồ chức năng của CSP và CU lần lƣợt đƣợc mô tả trong hình 2.16 và 2.17 dƣới đây [8]:
Hình 2. 16: Sơ đồ chức năng của nhà cung cấp dịch vụ điện toán đám mây
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
2.7. Kết luận chƣơng 2
Hiện nay với nhiều ƣu điểm, điện toán đám mây ngày càng đƣợc sử dụng rộng rãi. Có rất nhiều các nhà cung cấp dịch vụ điện toán đám mây khác nhau, mỗi nhà cung cấp có những ƣu điểm riêng. Tuy con e ngại về vấn đề bảo mật, tính tin cậy đối với nhà cung cấp dịch vụ nhƣng không thể phủ nhận những lợi ích to lớn mà điện toán đám mây mang lại, đặc biệt đối với doanh nghiệp vừa và nhỏ.
Tại Việt Nam, việc sử dụng công nghệ Điện toán đám mây để phát triển các hệ thống dịch vụ là một chủ đề còn khá là mới mẻ, đặc biệt là trong việc kết hợp các ƣu điểm của Điện toán đám mây trong việc xây dựng và cung cấp các dịch vụ dựa trên vị trí. Vì vậy, chƣơng III của luận văn tiến hành nghiên cứu, xây dựng CSDL ứng dụng dịch vụ dựa trên vị trí (LBS) trên nền tảng Điện toán đám mây của Google, với bài toán đặt ra là “Phát triển dịch vụ dựa trên vị trí trên nền tảng điện toán đám mây cho bài toán tìm kiếm các điểm đặt cột ATM, trạm xăng nhà hàng, siêu thị xung quanh một vị trí trên bản đồ”.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
CHƢƠNG III: CÀI ĐẶT CHƢƠNG TRÌNH THỬ NGHIỆM TRÊN NỀN TẢNG GOOGLE APP ENGINE
Phát triển dịch vụ dựa trên vị trí trên nền tảng điện toán đám mây trong việc tìm đường đi từ vị trí hiện tại đến một cửa hàng, siêu thị, trạm xăng, cây ATM… xung quanh một vị trí trên bản đồ.
3.1. Giới thiệu, lựa chọn công nghệ cho lƣu trữ dữ liệu
Google App Engine cung cấp cho ngƣời dùng những lựa chọn khác nhau cho việc lƣu trữ dữ liệu những sản phẩm của mình với các tiêu chí khác nhau về chi phí, hạn ngạch, tính ứng dụng, tính phổ thông, bao gồm:
- Google Cloud DataStore - Google Cloud SQL - Google Cloud Storage
Xét trên mặt mạnh của các hệ thống lƣu trữ này thì tác giả lựa chọn lƣu trữ thông qua Google Cloud DataStore với những đặc điểm nhƣ sau:
Kho dữ liệu (datastore)
Hầu hết mọi ứng dụng web đều cần một nơi để chứa thông tin khi xử lý yêu cầu từ phía client và lấy thông tin cho những lần yêu cầu sau này. Việc sử dụng một server làm một trung tâm dữ liệu là một ý tƣởng rất hay nhƣng có vấn đề xảy ra khi quá nhiều kết nối đƣợc gửi tới server này.
Hệ thống database của Google App Engine gần giống nhƣ một đối tƣợng database. Thiết kế của Cloud Datastore chỉ là trừu tƣợng để cho App Engine có thể xử lý việc phân tán và co giãn các ứng dụng. Chính vì thế trong các đoạn mã của chúng ta sẽ quan tâm đến những thứ khác đƣợc nêu sau đây.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
Một ứng dụng App Engine có thể chứa dữ liệu trong một hay nhiều thực thể Datastore. Mỗi thực thể có một hay nhiều thuộc tính, mỗi thuộc tính đều có tên và giá trị. Mỗi thực thể đều đƣợc phân loại để tiện cho việc truy vấn.
Ở cái nhìn đầu tiên, chúng ta thấy thực thể có thể gần giống các hàng (row) trong một bảng trong cơ sở dữ liệu quan hệ. Và mỗi thuộc tính có thể giống với một cột. Tuy nhiên đối với các thực thể cùng loại với nhau có thể có các thuộc tính khác nhau. Thứ 2, các thực thể có thể có cùng thuộc tính với các thực thể cùng loại khác nhƣng khác về kiểu dữ liệu. Một điểm khác nhau nữa giữa thực thể và các hàng (row) là các thực thể có thể có nhiều giá trị cho một thuộc tính đơn lẻ.
Mỗi thực thể có một khóa riêng (key) phân biệt lẫn nhau đƣợc cung cấp bởi ứng dụng hoặc do App Engine. Khác với CSDL quan hệ, khoá của thực thể không phải là thuộc tính, nó tồn tại độc lập với thực thể. Khoá của thực thể không đƣợc thay đổi khi thực thể đã đƣợc tạo ra.
Truy vấn (queries) và Chỉ mục (indexes)
Một câu truy vấn trên datastore trả về không hoặc nhiều thực thể cùng loại với nhau. Nó cũng có thể trả về các khóa của thực thể. Câu truy vấn có thể dựa vào các giá trị thuộc tính của thực thể và đƣợc sắp xếp theo giá trị của thuộc tính. Câu truy vấn cũng có thể làm việc với các khóa của thực thể.
Với App Engine, mỗi câu truy vấn sẽ có một chỉ mục trong Datastore. Khi ứng dụng cần thực hiên một câu truy vấn, thì Datastore sẽ tìm chỉ mục của câu truy vấn đó. Khi chúng ta tạo mới một thực thể và cập nhật cái cũ thì Datastore cũng sẽ cập nhật lại chỉ mục. Điều này giúp cho câu truy vấn đƣợc nhanh hơn.
Phiên giao dịch (transaction)
Khi một ứng dụng có quá nhiều client liên tục đọc hay ghi cùng một dữ liệu ở cùng một thời điểm, thì phiên giao dịch rất cần thiết để dữ liệu không bị đọc sai. Mỗi phiên giao dịch là đơn vị nhỏ nhất và chỉ có hai trạng thái là thành công hoặc thất bại.
Một ứng dụng đọc hay cập nhật nhiều thực thể trong một phiên giao dịch, nhƣng nó phải nói cho App Engine biết những thực thể nào sẽ đƣợc cập nhật khi nó tạo ra nhiều thực thể. Ứng dụng làm đƣợc điều này bởi việc tạo ra nhóm thực thể. Nhờ nhóm
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
thực thể, App Engine sẽ biết đƣợc các thực thể sẽ phân tán nhƣ thế nào qua các server, vì thế nó có thể khẳng định chắc chắn là phiên giao dịch thành công hay thất bại. App Engine cũng hỗ trợ những phiên giao dịch nội bộ (local transaction).
Nếu một ngƣời dùng cố gắng cập nhật một thực thể trong khi ngƣời khác đang cập nhật thực thể đó thì Datastore sẽ ngay lập tức trả về một biệt lệ báo lỗi. Trong thuật ngữ database, thì ta nói App Engine sử dụng “optimistic concurrency control”. Với chỉ mục và “optimistic concurrency control”, App Engine đƣợc thiết kế giúp cho ứng dụng có thể đọc dữ liệu nhanh hơn và đảm bảo hơn.
So sánh Google Cloud Datastore với CSDL truyền thống
Không giống nhƣ CSDL quan hệ truyền thống, Google Cloud Datastore sử dụng kiến trúc phân tán để tự động quản lý việc phân chia các tập dữ liệu lớn. Trong khi giao diện của Datastore có rất nhiều điểm tƣơng đồng với CSDL truyền thống, thì sự khác biệt ở đây chính là sự miêu tả mối quan hệ giữa các đối tƣợng dữ liệu. Các thực thể của cùng một loại có thể có các thuộc tính khác nhau, còn các thực thể khác nhau có thể có các thuộc tính cùng tên nhƣng có kiểu giá trị khác nhau.
Cloud Datastore khác với CSDL quan hệ truyền thống ở những đặc điểm sau: - Do tất cả các truy vấn trên App Engine đƣợc phục vụ bởi các chỉ mục đƣợc xây dựng trƣớc nên các loại truy vấn đƣợc thực hiện có nhiều hạn chế hơn so với CSDL truyền thống. Cụ thể, một số truy vấn sau không đƣợc hỗ trợ:
+ Thao tác join
+ Thao tác lọc khác nhau trên nhiều thuộc tính
+ Lọc trên những dữ liệu dựa trên các truy vấn khác
- Không giống CSDL quan hệ truyền thống, Datastore không yêu cầu các thực thể của cùng kiểu phải nhất quán với tập các thuộc tính.
3.2. Đặt bài toán và phân tích thiết kế hệ thống 3.2.1. Đặt bài toán và mô tả thuật toán 3.2.1. Đặt bài toán và mô tả thuật toán
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
Bài toán đặt ra là: “Phát triển dịch vụ vị trí trên nền tảng điện toán đám mây
trong việc tìm kiếm các trạm xăng, cây ATM, siêu thị… xung quanh một vị trí trên bản đồ”.
Mô tả thuật toán[8]
- Quy trình đăng ký: Khi một ngƣời dùng đi vào vùng phủ sóng của một nhà
cung cấp dịch vụ, ngƣời dùng đăng ký với nhà cung cấp dịch vụ đó để đƣợc truy xuất vào các dịch vụ mà mình mong muốn. Ngƣời dùng sẽ nhập các thông tin của mình để đăng ký và nhà cung cấp dịch vụ dựa trên vị trí sẽ gán cho ngƣời dùng đó một userID.
- Xác thực người dùng: Nhà cung cấp dịch vụ LSP thực hiện việc chứng thực
khi có một khách hàng đăng ký dịch vụ của mình. Nếu ngƣời dùng đƣợc xác thực, LSP sẽ cung cấp một danh sách các dịch vụ cho khách hàng đó. Và khách hàng sẽ lựa chọn một dịch vụ trong số các dịch vụ đã đƣợc liệt kê. Danh sách này bao gồm tất cả các dịch vụ mà khách hàng đã đƣợc đăng ký và có sẵn ở khu vực hiện tại của khách hàng. Mỗi khu vực có những đám mây có thể cung cấp các dịch vụ tới khách hàng của mình và khách hàng có thể truy cập vào các dịch vụ đã đăng ký trực tiếp từ những đám mây này. Với những dịch vụ chƣa đăng ký, khách hàng cần liên lạc tới các đám mây có ở từng vị trí. Điều này sẽ đƣợc giải thích rõ hơn trong phần mã giả đƣợc nêu ra ở Thuật toán 1.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
- Xác định vị trí người dùng: Ở thuật toán 2, vị trí của ngƣời dùng đƣợc xác định
thông qua RFID hoặc GPS. Khi một ví trí đƣợc xác định cụ thể, hàng loạt ngƣời dùng trên cùng vị trí đó sẽ đƣợc tính toán. Thực hiện tính toán xong, vị trí gắn với một ngƣời dùng cụ thể sẽ đƣợc gửi tới LSP.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
- Tìm kiếm và lọc thông tin xung quanh một vị trí: Ở thuật toán 3, vị trí của
ngƣời dùng đƣợc trả về từ thuật toán 2 đƣợc sử dụng làm tham số để xác định danh sách tất cả các cửa hàng, siêu thị, địa điểm… có ở khu vực đó.
- Trả về kết quả: Ở thuật toán 4, trong số danh sách các cửa hàng, siêu thị, trạm
xăng…đƣợc liệt kê có trong khu vực đó, LSP sẽ kiểm tra xem ngƣời dùng có quyền sử dụng các dịch vụ đó hay không. Đối với các dịch vụ mà ngƣời dùng đƣợc cấp phép, một danh sách các địa điểm tƣơng ứng sẽ đƣợc liệt kê và gửi tới khách hàng.
Mục đích chính của chúng ta là cung cấp một dịch vụ dựa trên vị trí động và tăng tính chính xác của thông tin truy cập đƣợc giới hạn trên màn hình điện thoại bằng cách truy cập vào ứng dụng trên đám mây. Mỗi vị trí cho phép cung cấp rất nhiều dịch vụ.