1. Trang chủ
  2. » Luận Văn - Báo Cáo

Giao thức XMPP và khai thác dữ liệu bản đồ phân tán

15 520 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 0,96 MB

Nội dung

Hiện có nhiều hệ thống bản đồ nhưng còn có hạn chế: đều sử dụng mô hình máy chủ - khách, điều này khiến cho dữ liệu trao đổi có thể bị mất mát hoặc không được đáp ứng trong thời gian yêu

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ - ĐHQGHN

KHOA CÔNG NGHỆ THÔNG TIN

CÔNG TRÌNH DỰ THI GIẢI THƯỞNG “SINH VIÊN NGHIÊN CỨU KHOA HỌC”

NĂM 2014

Tên công trình: Giao thức XMPP và khai thác dữ liệu bản đồ phân tán

Họ và tên sinh viên: Nam, Nữ:

Lớp: QH-2011-I/CQ-C-CLC Khoa: Công nghệ thông tin Giáo viên hướng dẫn: PGS TS Nguyễn Việt Hà

Giáo viên đồng hướng dẫn: ThS Vũ Quang Dũng

Trang 2

Tóm t t/L i nói đ u ắt/Lời nói đầu ời nói đầu ầu

Sự phát triển của công nghệ thông tin dẫn đến nhu cầu sử dụng và hiển thị dữ liệu bản đồ trực tuyến ngày càng tăng cao Hiện có nhiều hệ thống bản đồ nhưng còn có hạn chế: đều sử dụng

mô hình máy chủ - khách, điều này khiến cho dữ liệu trao đổi có thể bị mất mát hoặc không được đáp ứng trong thời gian yêu cầu và gây quá tải lên máy chủ Trước thực trạng đó, nhóm sinh viên chúng tôi đề xuất đề tài: “Giao thức XMPP và khai thác dữ liệu bản đồ

phân tán” nhằm xây dựng hệ thống trao đổi dữ liệu bản đồ sử dụng phương thức XMPP Từ

đó giảm tải cho máy chủ và giảm thời gian trao đổi dữ liệu đảm bảo tính ổn định và đáp ứng thời gian yêu cầu cho hệ thống Bên cạnh đó chúng tôi áp dụng phương pháp hiển thị theo lớp(layer) giúp hiển thị dữ liệu bất kỳ và tối ưu cho việc tách biệt các dữ liệu Quá trình nghiên cứu và phát triển đề tài này là tiền đề để chúng tôi tiếp tục áp dụng cho nghiên cứu trực quan liên quan tới chiều không/thời gian trong tương lai

Từ khóa: XMPP, GIS, OpenLayers, lớp, dữ liệu bản đồ, phân tán

Trang 3

Mục lục

Tóm tắt/Lời nói đầu

Mục lục

Danh sách hình vẽ

Đặt vấn đề

Giải quyết vấn đề

Trao đổi dữ liệu giữa các Client

Phát biểu bài toán

XMPP và Websocket

Xây dựng máy chủ hỗ trợ XMPP/Websocket Hiển thị dữ liệu bản đồ

Phát biểu bài toán

Công nghệ sử dụng

Công nghệ Web OpenLayers Open Street Map GeoServer Hiển thị

Thực nghiệm

Môi trường thực nghiệm

Môi trường máy chủ

Máy khách

Kết quả

Kết luận

Kết quả thu được

Hạn chế

Hướng đi tương lai:

Nâng cấp hệ thống

Bản đồ trục thời gian (TimeMap)

Khai thác tri thức bản đồ phân tán

Tài liệu tham khảo

Trang 4

Danh sách hình vẽ

Trang 5

1 Đ t v n đ ặt vấn đề ấn đề ề

Với sự phát triển của hệ thống hạ tầng mạng, nhu cầu sử dụng các ứng dụng bản đồ trực tuyến đang tăng cao Các ứng dụng này yêu cầu dữ liệu phải liên tục được cập nhật mới Bên cạnh

đó sự bùng nổ của thiết bị di động như máy tính bảng, điện thoại thông minh dẫn đến việc dữ liệu trao đổi tăng về lượng và cần linh hoạt và gọn nhẹ hơn Nhu cầu kết nối, tương tác giữa người dùng cũng ngày càng nhiều: người dùng cần có các phương thức kết nối, trao đổi, tương tác với bạn bè, đối tác dễ dàng và nhanh chóng

Hiện có nhiều ứng dụng bản đồ, như Google Maps, Here Maps, iOS Maps, etc Nhưng các ứng dụng này đều có 2 hạn chế:

● Hầu hết sử dụng mô hình máy chủ - máy khách thuần túy Dữ liệu ở máy khách khi cần thiết đều phải lấy từ máy chủ Khi số lượng người dùng là lớn, nhiều yêu cầu dữ liệu được gửi đến, máy chủ sẽ quá tải, khiến dữ liệu có thể mất mát hoặc đáp ứng với thời gian chậm

● Không có các phương thức cho phép các máy khách tương tác, trao đổi dữ liệu trực tiếp, nhanh chóng và đơn giản

Từ đó chúng tôi đề xuất một hệ thống hiển thị dữ liệu bản đồ, trong đó việc trao đổi dữ liệu không chỉ được thực hiện giữa máy chủ và máy khách mà còn giữa các máy khách, thông qua một máy chủ thứ 2

Mô hình hoạt động của hệ thống tổng quát được thể hiện ở sơ đồ sau:

Cụ thể, khi có yêu cầu về dữ liệu, clients sẽ thực hiện các bước:

Trang 6

1 Gửi yêu cầu đến các clients còn lại thông qua XMPP server

2 Nếu nhận được dữ liệu yêu cầu(từ clients khác), đến bước 4 Nếu không nhận được đến bước 3

3 Nếu không có, gửi yêu cầu đến Web Server

4 Nhận yêu cầu

5 Kết thúc

Bài toán cụ thể chúng tôi cài đặt để minh họa cho hệ thống ở đây là:

Tài liệu được chia làm 4 phần:

1 Đặt vấn đề

2 Giải quyết vấn đề

3 Thực nghiệm

4 Kết luận: Đạt được, hạn chế và phương hướng tương lai

Trang 7

2 Gi i quy t v n đ ải quyết vấn đề ết vấn đề ấn đề ề

2.1 Trao đ i d li u gi a các Client ổi dữ liệu giữa các Client ữ liệu giữa các Client ệu giữa các Client ữ liệu giữa các Client

2.1.1. Phát biểu bài toán

Trong các ứng dụng truyền thống: Khi máy khách có nhu cầu cần phải lấy dữ liệu mới hoặc cập nhật dữ liệu, máy khách sẽ gửi yêu cầu đến máy chủ Máy chủ sẽ xử lý yêu cầu, sau đó gửi lại cho máy khách theo mô hình sau

Hệ thống của chúng tôi đề xuất sử dụng mô hình trao đổi dữ liệu như trong mô hình sau:

<Mô hình trao đổi XMPP, visio>

Trong đó, cốt lõi của hệ thống là giao thức XMPP với công nghệ Websocket, một công nghệ mới có trong HTML5

2.1.2 XMPP và Websocket

XMPP là viết tắt của eXtensible Messaging and Presence Protocol, là một công nghệ XML mở

cho phép giao tiếp thời gian thực, nó có thể đáp ứng một số lượng lớn các ứng dụng bao gồm tin nhắn nhanh (instant messaging), trạng thái trực tuyến (presence), đàm phán đa phương tiện (media negotiation), bảng tương tác (whiteboarding), sự công tác (collaboration), máy kết nối đơn giản (lightweight middleware), thống nhất nội dung (content syndication), và định tuyến XML tổng quát (generalized XML routing) - theo xmpp.org

XMPP sử dụng các luồng XML để truyền tải thông tin XML là một phần của chuỗi tiến hóa của các ngôn ngữ đánh dấu (markup language) (ngôn ngữ với các cặp dấu ngoặc) Chữ X trong XML viết tắt của eXtensible nghĩa là khả mở và XMPP tận dụng tính khả mở đó, nó sử dụng XML để tạo ra các không gian tên (namespace) để thuận tiện trao đổi các loại thông điệp khác nhau

Truyền thông trên XMPP thực chất là trao đổi các khổ XML (stanza), chúng tôi sử dụng triệt để khả năng mở rộng này của XMPP để truyền dữ liệu và các thông điệp điều khiển giữa các client

Websocket [1] là công nghệ được phát triển như một phần của HTML5, được cung cấp dưới

dạng một interface (Websocket Javascript interface), nó cho phép định nghĩa một kết nối socket đơn, song công mà thông qua đó thông điệp có thể được truyền giữa máy chủ và máy khách Chuẩn Websocket cho phép đơn giản hóa tối đa những rườm rà của giao tiếp bán song công của web và sự quản lý kết nối - theo websocket.org

Trang 8

2.1.2 Xây dựng máy chủ hỗ trợ XMPP/Websocket

a Chiến lược kết nối

Có một khó khăn nảy sinh khi chúng tôi thực hiện nghiên cứu này liên quan đến chuẩn

sử dụng XMPP thông qua websocket (XMPP/WS) Cho đến thời điểm này, vẫn chưa có một chuẩn chính thức nào về XMPP/WS được công nhận vì vậy việc tìm ra một mô hình mẫu để học tập, cải biên cho đúng với mục đích sử dụng là một vấn đề lớn Do đó, một thực tế rõ ràng là chiến lược kết nối và xây dựng máy chủ XMPP/WS trong phần nghiên cứu của chúng tôi không phải chiến lược kết nối chuẩn, nhưng nó là một trong các chiến

lược đã được khuyến nghị trong cuốn The Definitive Guide to HTML5 WebSocket của

Vanessa Wang, Frank Salim, and Peter Moskovits

(http://www.websocket.org/book.html)

Chiến lược kết nối của chúng tôi là sử dụng một gateway hỗ trợ websocket làm trung gian giữa máy khách và máy chủ XMPP Mô hình của chiến lược kết nối này như sau:

- Client: Sử dụng strophe.js [7] là một module phát triển trên nền javascript, hỗ

trợ các phương thức xmpp từ phía client

- XMPP Server: Sử dụng ejabberd, phần mềm cung cấp dịch vụ xmpp

- Gateway: Sử dụng module node-xmpp-bosh[4] do dhruvbird phát triển, là module của notejs[6], tương thích với strophe.js từ phía client

b Tiến hành cài đặt (thực hiện trên HĐH ubuntu server)

- Cài đặt ejabberd (sử dụng apt-get của ubuntu), sau đó config cổng admin từ 5820 thành một cổng khác (sửa trong file ejabberd.cfg) Việc này sẽ giúp tránh được xung đột

do module node-xmpp-bosh (gateway) cũng giao tiếp trên cổng 5820

- Cài phiên bản mới nhất của nodejs

Trang 9

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:chris-lea/node.js

sudo apt-get update

sudo apt-get install nodejs

- Cài module node-xmpp-bosh theo hướng dẫn chi tiết từ nhà phát triển module này https://github.com/dhruvbird/node-xmpp-bosh

2.2 Hi n th d li u b n đ ển thị dữ liệu bản đồ ị dữ liệu bản đồ ữ liệu giữa các Client ệu giữa các Client ản đồ ồ

2.2.1. Phát biểu bài toán

Dữ liệu nhận được từ server và từ clients khác cần được hiển thị đến người dùng dưới dạng hình ảnh trực quan

Ở đây ta có 2 dạng dữ liệu:

1 Dữ liệu bản đồ từ server: Dữ liệu này sẽ được lấy về ngay từ khi tải trang web, và sẽ được update trong qua trình sử dụng thông qua request HTTP

2 Dữ liệu về vị trí từ người dùng từ clients: Dữ liệu này sẽ được gửi đến các clients còn lại khi có sự thay đổi về trang thái của client

Các dữ liệu này sẽ được xử lý hiển thị về phía người dùng

2.2.2. Co'ng nghệ sử dụng

2.2.2.1 Co'ng nghệ Web

HTML5 là phiên bản thứ 5, mới nhất của chuẩn HTML, ngôn ngữ cấu trúc và trình bày nội dung

cho World Wide Web

HTML5 có nhiều tính năng mới hỗ trợ việc đưa vào và quản lý các nội dung đa phương tiện và

đồ họa, không còn phụ thuộc vào các plugin và API

Cùng với HTML5 là thế hệ tiếp theo của CSS (Cascading Style Sheets) – CSS3 CSS là những

đặc tả hiển thị hỗ trợ cho trình duyệt Web trong việc trình bày một trang HTML CSS3 là phiên bản mới nhất của CSS

2.2.2.2 OpenLayers

Openlayers[2] là một thư viện thuần JavaScript hỗ trợ cho việc hiển thị dữ liệu bản đồ trên hầu

hết các trình duyệt web mà không phụ thuộc vào phía server OpenLayers cài đặt một tập các hàm API JavaScript hỗ trợ việc xây dựng các ứng dụng bản đồ trên nền web, cũng tương tự như các hàm API của Google Maps và MSN MSN Virtual Earth, nhưng với sự khác biệt quan trọng – OpenLayers là phần mềm mã nguồn mở, được phát triển bởi cộng đồng phần mềm mã nguồn mở

Có hai khái niệm quan trong cần được hiểu rõ khi làm việc với OpenLayers để hiện xây dựng bản đồ:

1 Map: Map là nơi để lưu giữ các thông tin về hệ quy chiếu, đơn vị,… của bản đồ.

2 Layers: Bên trong bản đồ, dữ liệu được hiển thị thông qua Layer Một Layer là một

nguồn dữ liệu, nó cho biết OpenLayers nên yêu cầu và hiển thị dữ liệu như thế nào Trong một Map có thể chứa một hoặc nhiều ‘Layer’ chồng lên nhau Dữ liệu được hiện thị trong một Layer có thể là dạng raster hoặc vector

Trang 10

OpenLayers cung cấp một tập các điều khiển (controls) cho lập trình viên có các thao tác linh

hoạt trên bản đồ Các điều khiển là các lớp trong OpenLayers, chúng cho phép định nghĩa các trạng thái, hành vi của bản đồ Hoặc hiển thị các thông tin bổ sung cho người dùng Các điều khiển là giao diện chính cho phép tương tác với bản đồ

2.2.2.3 Open Street Map

Open Street Map[3] là một dự án bản đồ mở, cho phép tất cả mọi người cùng đóng góp, tùy

chỉnh, để xây dựng dữ liệu bản đồ thế giới chi tiết tới mọi vùng miền Khác với Google Map, Open Street Map cung cấp trực tiếp dữ liệu bản đồ dưới nhiều định dạng, và cho phép người dùng sử dụng mà không đòi hỏi thông qua API hay ràng buộc hạn chế

Một trong số những định dạng bản đồ mà Open Street Map cung cấp là ảnh bản đồ tĩnh (Static Map Tile) Định dạng này phù hợp để vẽ đồ thị lên trên vì bản đồ khi đó là một phần của không gian đồ họa

2.2.2.4 GeoServer

Geoserver [5] là một dự án mã nguồn mở, phát triển trên ngôn ngữ Java Geoserver cho phép

người dùng chia sẻ, sửa đổi các dữ liệu bản đồ

Geoserver cho phép lấy nguồn dữ liệu từ nhiều nguồn, và cho phép các ứng dụng khác truy cập thông qua giao thức HTTP

Geoserver hỗ trợ nhiều định dạng dữ liệu bản đồ chuẩn như: Open Geospatial Consortium (OGC) Web Feature Service (WFS) and Web Coverage Service (WCS), Web Map Service (WMS)

2.2.3. Hiển thị

Dữ liệu bản đồ được lấy trực tiếp từ Open Street Map OpenStreetMap cung cấp nhiều định dạng dữ liệu bản đồ Ở hệ thống, ảnh được cung cấp dưới định dạng “.png”, kích thước 256x256px, các ô ảnh bản đồ nhỏ được xếp cạnh nhau để tạo thành một bản đồ có kích thước lớn

Open Street Map cung cấp ảnh bản đồ thông qua các đường

dẫn (URL), cụ thể:

http://b.tile.openstreetmap.org/15/26019/14425.png

sẽ cho hình ảnh sau:

- URL ảnh bản đồ Open Street Map cung cấp có cấu trúc như sau:

o [abc] : subdomain ( a.tile , b.tile , c.tile )

o zoom : mức zoom ( 0-18)

o x, y : toạ độ của ô ảnh trong mảng Cụ thể :

Trang 11

Ở mức zoom=0, toàn bộ bản đồ trái đất

chỉ gồm 1 ô ảnh

Ở mức zoom=1, mỗi chiều ô ảnh được

chia làm 2, cho 4 ô ảnh bản đồ Với x,y là

toạ độ ô ảnh, có 4 ô xác định bởi bộ 3 số

zoom,x,y :

[1,0,0] , [1,1,0] , [1,0,1] , [1,1,1]

Tương tự với các mức zoom tiếp theo

Việc hiển thị dữ liệu được xử lý thông qua thư viện Openlayers Openlayers sử dụng các layer

để hiển thị dữ liệu

Thế mạnh của việc hiển thị sử dụng layer là khả năng tách biệt hóa Mỗi layers có một nhiệm vụ riêng, hiển thị dữ liệu riêng Từ đó việc quản lý, thay đổi các layer để hiển thị đến người dùng là linh hoạt và không ảnh hưởng đến layer khác

Mô hình hiển thị đến người dùng được mô tả như sau:

Ở đó:

● Layer OSM hiện thị nền bản đồ, lấy nguồn từ Open Street Maps hoặc Geoserver

● Vector layer hiển thị dữ liệu vector

● Marker layer hiển thị các marker

Trang 12

Kết quả cho ta giao diện của hệ thống với người dùng:

Trong đó, ở view bản đồ người dùng, có các thao tác:

● Di chuyển: Bằng chuột

● Zoom: Bằng cuộn chuột, controller

● Đánh dấu(mark): click chuột

Sau khi đã kết nối, bản đồ của người dùng sẽ hiển thị và liên tục được cập nhật thông qua xmpp và hiển thị ở view bản đồ của client khác trên client còn lại

3 Thực nghiệm

3.1. Mo'i trường thực nghiệm

3.1.1. Mo'i trường máy chủ

Trong phần nghiên cứu của mình, chúng tôi sử dụng một máy chủ vật lý làm nơi lưu trữ và chạy các máy chủ web, XMPP server, Geoserver

Chúng tôi cần máy chủ cung cấp được 2 dịch vụ là dịch vụ web và dịch vụ XMPP Bởi vì hai dịch vụ này chạy trên 2 cổng khác nhau và không xung đột nên trong phạm vi nghiên cứu, chúng chạy trên cùng một máy chủ Khi ứng dụng nghiên cứu này vào thực tế thì tùy vào điều kiện cụ thể mà ta có thể thay đổi số lượng máy chủ

HP

Trang 13

3.1.2 Máy khách

Sự lựa chọn môi trường máy khách có tính linh động cao, miễn là máy khách có cung cấp trình duyệt web cho người sử dụng Trong quá trình kiểm thử, hệ thống của chúng tôi chạy tốt với các trình duyệt phổ thông như Internet Explorer của Microsoft, Chrome của Google và Firefox của Mozilla

Firefox v27

Firefox v27

3.2. Kết quả

Hệ thống chạy ổn định và không gặp vấn đề gì trong việc trao đổi dữ liệu Khi có sự thay đổi từ client, client còn lại nhận được dữ liệu và cập nhật tức thời Điều này thể hiện qua việc cập nhật liên tục vị trí client ở cửa sổ “partner” và tính toán khoảng cách giữa 2 điểm đánh dấu

<Thêm ảnh demo>

4 Kết luận

4.1 K t qu thu đ ết quả thu được ản đồ ược c

Qua thực nghiệm, hệ thống đã thành công trong việc trao đỗi dữ liệu giữa 2 clients thông qua giao thức XMPP và máy chủ XMPP Dữ liệu được trao đổi không thông qua server thuần túy, giảm tải cho server

4.2. Hạn chế

Hiện tại hệ thống còn 2 hạn chế:

1 Chỉ hỗ trợ 2 clients

2 Dữ liệu trao đổi chưa phong phú: Mới chỉ là địa điểm hiện tại và địa điểm được đánh dấu

Trang 14

4.3 H ướng đi tương lai: ng đi t ương lai: ng lai:

4.3.1. Nâng cấp hệ thống

Chúng tôi sẽ nâng cấp hệ thống để khắc phục các hạn chế hiện tại:

1 Hỗ trợ hệ thống gồm n - clients, sử dụng cơ chế xác thực của XMPP: XMPP ID để xác thực người dùng

2 Trao đổi thông tin phong phú hơn, bao gồm: Dữ liệu ảnh bản đồ(không phải yêu cầu đến OSM hay geoserver nếu clients khác có)

4.3.2 B n đ tr c th i gian (TimeMap) ản đồ ồ ục thời gian (TimeMap) ời gian (TimeMap)

Trong tương lai, chúng tôi đề xuất một hệ thống lưu trữ dữ liệu theo 3 chiều:

1 02 Chiều không gian

2 Chiều thời gian

cho phép người dùng hiển thị dữ liệu theo dạng bản đồ 2 chiều thông thường Nhưng bên cạnh

đó là khả năng hiển thị trục thời gian của tọa độ/vị trí/đối tượng Theo trục thời gian này, người dùng có thể xem được đối tượng/tọa độ/vị trí đó đã có những biến cố gì, sự kiện gì xảy ra trong lịch sử

Với hệ thống này, chúng tôi mong muốn người dùng sẽ có trải nghiệm thú vị hơn, là một cách trực quan, hứng thú để quan sát lịch sử Nhất là với lớp trẻ Việt Nam, ngày càng thiếu kiến thức

và quan tâm đến lịch sử của nước nhà

4.3.3 Khai thác tri th c b n đ phân tán ức bản đồ phân tán ản đồ ồ

Một hướng đi nữa của nghiên cứu này là ứng dụng vào việc khai thác tri thức bản đồ phân tán Nói một cách dễ hiểu là với nghiên cứu này, những thông tin trên đường của mạng lưới người dùng sẽ được chia sẻ cho nhau và từ đó có được thông tin chính xác nhất về tình trạng giao thông hiện tại Ý tưởng của hướng đi này dựa trên ý tưởng của thuật toán distance-vector trong định tuyến mạng của các router

Nếu như hướng đi này được hiện thực hóa, nó sẽ trở thành một giải pháp đắc lực cho việc giải quyết các vấn đề của giao thông đô thị Việt Nam, vốn đang là bài toán khó đối với toàn

xã hội

Để trực quan hóa hướng đi này, chúng tôi đưa ra một tình huống trong giải quyết tắc đường Giả sử như mọi người dân Hà Nội đều sử dụng smartphone và trên đó có ứng dụng để khai thác bản đồ phân tán, khi đó, với tri thức có được từ mạng lưới người dùng, ứng dụng có thể biết được tình trạng thực tế của các tuyến đường và từ đó gợi ý cho người dùng tuyến đường hợp lý nhất (mật độ thấp nhất, hiện đang không sửa chữa, chất lượng đường chấp nhận được ) Khi đó, nếu nhìn toàn cục giao thông ở Hà Nội, ta sẽ thấy một sự “tự điều chỉnh” vô cùng hợp lý và hiệu suất của các tuyến đường được khai thác một cách tối đa

Tài liệu tham khảo

[1] The Definitive Guide to HTML5 WebSocket by Vanessa Wang, Frank Salim, and Peter

Moskovits

[2] “Openlayers” [Online] Available: http://openlayers.org/

[3] “Open Street Maps” [Online] Available: http://www.openstreetmap.org/

[4] “node-xmpp-bosh” [Online] Available: https://github.com/dhruvbird/node-xmpp-bosh/

[5] “Geoserver” [Online] Available: http:// geoserver org

Ngày đăng: 08/10/2015, 13:41

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w