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

phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn

89 392 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 89
Dung lượng 4,72 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Mục đích nội dung của ĐATN Tìm hiểu, nghiên cứu các vấn đề lý thuyết và công nghệ xử lý dữ liệu lớn để xây dựng một dịch vụ mạng quản lý địa điểm đảm bảo tính dễ mở rộng quy mô scalabili

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

──────── * ───────

ĐỒ ÁN

TỐT NGHIỆP ĐẠI HỌC

NGÀNH CÔNG NGHỆ THÔNG TIN

PHÁT TRIỂN DỊCH VỤ THÔNG TIN ĐỊA ĐIỂM DỄ MỞ RỘNG QUY MÔ LỚN

Sinh viên thực hiện: Đặng Việt Hùng

Lớp CNPM – K51

Giáo viên hướng dẫn: TS Nguyễn Khanh Văn

HÀ NỘI 5-2011

Trang 2

LỜI CẢM ƠN

Trước tiên em xin gửi lời cảm ơn chân thành đến các thầy cô giáo trong trường đại học Bách Khoa Hà Nội nói chung và các thầy cô giáo trong Viện Công Nghệ Thông Tin và Truyền Thông, bộ môn Công Nghệ Phần Mềm nói riêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức, những kinh nghiệm quý báu trong suốt 5 năm qua

Đặc biệt em xin gửi lời cảm ơn đến thầy TS Nguyễn Khanh Văn, thầy

đã tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm

đồ án tốt nghiệp Trong thời gian làm việc với thầy, em không chỉ tiếp thu thêm được nhiều kiến thức mới, bổ ích mà còn học hỏi được nhiều kinh nghiệm thực tiễn khi tham gia dự án Foloyu, đây là những điều rất cần thiết cho em trong quá trình học tập và công tác sau này

Em cũng xin gửi lời cảm ơn tới thầy Trịnh Tuấn Đạt và các bạn trong nhóm làm dự án Foloyu đã giúp đỡ em rất nhiều trong suốt thời gian làm đồ

án tốt nghiệp

Cuối cùng con xin gửi lời cảm ơn chân thành tới gia đình đặc biệt là bố

mẹ đã động viên, cổ vũ con trong suốt 5 năm qua

Hà Nội, ngày … tháng … năm 2011

Đặc biệt em xin gửi lời cảm ơn đến thầy TS Nguyễn Khanh Văn, thầy

đã tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm

đồ án tốt nghiệp Trong thời gian làm việc với thầy, em không chỉ tiếp thu thêm được nhiều kiến thức mới, bổ ích mà còn học hỏi được nhiều kinh nghiệm thực tiễn khi tham gia dự án Foloyu, đây là những điều rất cần thiết cho em trong quá trình học tập và công tác sau này

Em cũng xin gửi lời cảm ơn tới thầy Trịnh Tuấn Đạt và các bạn trong nhóm làm dự án Foloyu đã giúp đỡ em rất nhiều trong suốt thời gian làm đồ

án tốt nghiệp

Cuối cùng con xin gửi lời cảm ơn chân thành tới gia đình đặc biệt là bố

mẹ đã động viên, cổ vũ con trong suốt 5 năm qua

Hà Nội, ngày … tháng … năm 2011

Trang 3

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

1 Thông tin về sinh viên

Họ và tên sinh viên: Đặng Việt Hùng

Đồ án tốt nghiệp được thực hiện tại: Bộ môn Công nghệ phần mềm

Thời gian làm ĐATN: Từ ngày 21/02/2011 đến 27/05/2011

2 Mục đích nội dung của ĐATN

Tìm hiểu, nghiên cứu các vấn đề lý thuyết và công nghệ xử lý dữ liệu lớn để xây dựng một dịch vụ mạng quản lý địa điểm đảm bảo tính dễ mở rộng quy mô (scalability) đáp ứng nhu cầu cá nhân, cũng như kết nối với các hệ thống dịch vụ khác, trước hết là tích hợp mạng địa xã hội Foloyu Phân tích, đánh giá hiệu quả của các công nghệ xử lý dữ liệu lớn qua đó lựa chọn giải pháp hiệu quả để cài đặt vào dịch vụ mạng quản lý địa điểm

Tìm hiểu thuận toán tìm kiếm các địa điểm gần một đường đi cho trước thỏa mãn một số tiêu chí nhất định Triển khai thuật toán trên dịch vụ của Google Map

3 Các nhiệm vụ cụ thể của ĐATN

 Tìm hiểu lý thuyết các công nghệ xử lý dữ liệu lớn MapReduce và Memcached

 Cài đặt thử nghiệm và đánh giá hiệu quả của các công nghệ MapReduce, Memcached qua đó lựa chọn giải pháp áp dụng vào dịch vụ mạng quản lý địa điểm

 Tìm hiểu công nghệ lập trình Java, Servlet, JSP, và xây dựng Web Service trên Java

 Tìm hiểu Google Map API, qua đó cài đặt thuật toán tìm kiếm các địa điểm gần một đường đi cho trước trên Google Map

 Xây dựng dịch vụ mạng quản lý địa điểm tích hợp vào mạng đia xã hội Foloyu và ứng dụng thử nghiệm

4 Lời cam đoan của sinh viên

Tôi – Đặng Việt Hùng - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới

sự hướng dẫn của TS.Nguyễn Khanh Văn

Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công trình nào khác

Hà Nội, ngày 27 tháng 05 năm 2011

Tác giả ĐATN

Đặng Việt Hùng

Trang 4

5 Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo vệ:

……….…….…

……….…….…

……….…….…

……….…….…

……….…….…

Hà Nội, ngày 27 tháng 05 năm 2011

Giáo viên hướng dẫn

TS Nguyễn Khanh Văn

Trang 5

TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP

Những năm gần đây khi Internet ngày càng phát triển ở Việt Nam, các bản đồ số, các

hệ thống tra cứu địa điểm ra đời đã đáp ứng nhu cầu tìm kiếm, tra cứu địa điểm của con người Tuy nhiên đối với với một số tổ chức, doanh nghiệp, các cá nhân trong các ngành như du lịch, bất động sản, mua sắm trực tuyến, thì việc giới thiệu các địa điểm, vị trí đến với người dùng, những khách hàng của họ lại phụ thuộc vào các hệ thống xây dựng sẵn có như vậy Do đó, nhu cầu về một dịch vụ mạng quản lý địa điểm là rất cần thiết Đồ án này tập trung vào xây dựng một một giải pháp cho vấn đề trên, đó là dịch vụ mạng thông tin địa điểm đáp ứng nhu cầu sử dụng của cá nhân, các tổ chức cũng như tích hợp với các hệ thống khác Dịch vụ mạng này phải có tính dễ mở rộng quy mô (scalability) và hỗ trợ tốt việc hiển thị trên bản đồ trực tuyến khi các hệ thống khác có nhu cầu Để xây dựng được một dịch vụ như vậy, đồ án đã đề cập đến một số giải pháp công nghệ xử lý dữ liệu cực lớn được áp dụng thành công ở các hệ thống lớn của Google, Yahoo, hay Facebook như mô hình MapReduce, Memcached…Ngoài ra, nhằm đánh giá hiệu quả của dịch vụ mạng quản

lý địa điểm, đồ án cũng xây dựng một hệ thống thử nghiệm có tích hợp dịch vụ này kết hợp hiển thị, tìm kiếm địa điểm trên bản đồ trực tuyến của Google

Từ khóa —Địa điểm, MapReduce, Memcached, Google Map, Design Application

Scalability, Web Service

Trang 6

ABSTRACT OF THESIS

In recent years, Internet has been developing rapidly in Viet Nam The appearance of digital Mapping Services and Location Searching Services has met the people’s need for searching and finding places However, the locations of organizations, companies, individuals in tourist, real estate, shopping business showed and introduced to costumers depend a lot on such services mentioned above Therefore, a location management service

is very in need My thesis focus on a location management service that meets the demands

of individuals and organizations and it can be integrated into other systems This service has to be scalable and provide the displays on online map when other systems request service In order to build such a service, my thesis is based on some solutions to large data processing technology such as MapReduce, Memcached…In addition, to evaluate the effectiveness of location management service, I have built a system integrated with this service to display and search locations on Google Map

Keywords—Location Service, MapReduce, Memcached, Web Service, Design

Application Scalability

Trang 7

MỤC LỤC

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 3

TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP 5

ABSTRACT OF THESIS 6

MỤC LỤC 7

DANH MỤC CÁC BẢNG 8

DANH MỤC CÁC HÌNH 9

DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ 11

MỞ ĐẦU 12

PHẦN I: TỔNG QUAN VỀ ĐỀ TÀI 14

ĐẶT VẤN ĐỀ VÀ PHƯƠNG PHÁP THỰC HIỆN 14

CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ 18

PHẦN II: CÁC KẾT QUẢ ĐẠT ĐƯỢC 32

CÀI ĐẶT MEMCACHED TRONG HỆ THỐNG 33

PHÂN TÍCH HỆ THỐNG THỬ NGHIỆM TÍCH HỢP DỊCH VỤ THÔNG TIN ĐỊA ĐIỂM 38

KẾT QUẢ CÀI ĐẶT, TRIỂN KHAI VÀ CHẠY THỬ 72

KẾT LUẬN 81

TÀI LIỆU THAM KHẢO 82

PHỤ LỤC 84

Trang 8

DANH MỤC CÁC BẢNG

Bảng 1: Thay đổi key-value qua các quá trình 23

Bảng 2: Chiến lưu trữ key-value với memcacehd trong hệ thống 36

Bảng 3: Các tác nhân của hệ thống 39

Bảng 4: Bảng thông tin User 59

Bảng 5: Bảng thông tin địa điểm 59

Bảng 6: Bảng thông tin Hạ tầng mạng của địa điểm 60

Bảng 7: Bảng các địa điểm ưa thích của user 60

Bảng 8:Bảng thông tin loại địa điểm 60

Bảng 9: Bảng bài viết liên quan đến địa điểm 61

Bảng 10: Bảng bình luận của địa điểm 61

Bảng 11: Bảng kết nối giữa Địa điểm và Loại địa điểm 61

Bảng 12: Bảng Multimedia 62

Bảng 13: Bảng Block – Thông tin Phường Xã 62

Bảng 14: Bảng District-Thông tin Quận Huyện 62

Bảng 15: Bảng Province-Thông tỉn Tỉnh/Thành Phố 63

Bảng 16: Bảng đánh giá dịch vụ quản lý địa điểm và các hệ thống khác 79

Trang 9

DANH MỤC CÁC HÌNH

Hình 1: Mô hình mạng xã hội Foloyu 16

Hình 2: Kiến trúc client-server truyền thống 19

Hình 3: Kiến trúc phân tán thông thường 20

Hình 4: Kiến trúc client-server trong hệ thống sử dụng 20

Hình 5: Kiến trúc đặc trưng đầy đủ của hệ thống sử dụng memcached 21

Hình 6: Luồng dữ liệu xử lý bài toán 22

Hình 7: Luồn xử lý dữ liệu khi áp dụng mô hình MapReduce 24

Hình 8: Mô hình thực thi MapReduce 25

Hình 9: Kiến trúc Web Service 28

Hình 10: Minh họa một Request message 29

Hình 11: Minh họa một Response message 30

Hình 12: Minh họa một WSDL 30

Hình 13: Kiến trúc client-server khi áp dụng Memcached 34

Hình 14: Kiến trúc hệ thống 38

Hình 15: Usecase tổng quan hệ thống 40

Hình 16: Usecase Xem danh sách địa điểm 41

Hình 17: Usecase Xem bản đồ 43

Hình 18: Usecase Tìm kiếm địa điểm 43

Hình 19: Usecase Xem loại địa điểm 45

Hình 20: Usecase Xem thông tin chi tiết địa điểm 46

Hình 21: Usecase Tìm đường đi 47

Hình 22: Usecase Đăng địa điểm 48

Hình 23: Usecase Cập nhật địa điểm 49

Hình 24:Usecase Quản lý địa điểm 50

Hình 25:Usecase Quản lý tài nguyên liên quan đến địa điểm 50

Hình 26:Usecase Đánh giá địa điểm 51

Hình 27: Usecase Đăng ký làm chủ sở hữu 52

Hình 28: Usecase Thống kê địa điểm 52

Hình 29:Usecase Xem danh sách địa điểm của vùng 53

Hình 30: Usecase Quản lý tài nguyên của User đăng lên 53

Hình 31: Usecase Thêm user là chủ sở hữu vật tư 54

Hình 32: Thiết kế giao diện trang chủ 55

Hình 33: Thiết kế giao diện trang Xem địa điểm theo loại 56

Hình 34: Thiết kế giao diện trang Hiển thị thông tin chi tiết địa điểm 56

Hình 35: Sơ đồ thực thể liên kết 57

Hình 36: Biểu đồ dữ liệu quan hệ 58

Hình 37: Kiến trúc phân tầng 63

Trang 10

Hình 38: Biểu đồ lớp 65

Hình 39: Package location.site 66

Hình 40: Package location.business.repositories 67

Hình 41: Sơ đồ thao tác thêm mới địa điểm 68

Hình 42: Sơ đồ thao tác Cập nhật thông tin địa điểm 69

Hình 43: Sơ đồ thao tác Tìm kiếm địa điểm 70

Hình 44: Sơ đồ thao tác xóa địa điểm 71

Hình 45: Sơ đồ kế hoạch triển khai thử nghiệm 72

Hình 46: Giao diện trang chủ 74

Hình 47: Giao diện trang Duyệt địa điểm theo loại 75

Hình 48: Giao diện của trang xem thông tin chi tiết địa điểm 76

Hình 49: Giao diện trang tìm kiếm địa điểm xung quang đường 77

Hình 50: Giao diện trang thêm địa điểm 78

Trang 11

DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ

1 Memcached Công nghệ cache đối tượng trên bộ nhớ phân

tán

2 MapReduce Mô hình xử lý dữ liệu lớn do Google đề xuất

dựa trên tính toán song song

3 Java Servlet Công nghệ phát triển ứng dụng web sử dụng

ngôn ngữ Java lần đầu tiên được Sun Microsystems giới thiệu vào năm 1996

4 JSP Java Servlet Pages-Là mở rộng của công

nghệ servlet

5 DNS Domain Name System-Hệ thống phân giải

tên miền

các phần tử để xóa khỏi bộ đệm (cache)

hướng dịch vụ.

ngữ đặc tả Web Service.

truy nhập đối tượng đơn giản

Integration- Là một nền tảng độc lập được thiết kế để tương tác với tin nhắn SOAP và cung cập sự truy cập tới các tài liệu WSDL

cho các thiết bị có cấu hình thấp

Trang 12

MỞ ĐẦU

Địa điểm đang dần trở nên quan trọng trong cuộc sống của chúng ta Một số hoạt động của con người luôn gắn liên với một địa điểm như mua sắm, du lịch, giải trí hay đơn giản chỉ là đi chơi với bạn bè Cùng với sự phát triển của Internet, sự ra đời của bản đồ số và các thiết bị di động thông minh tích hợp các bản đồ trực tuyến khiến việc tìm kiếm, tra cứu địa điểm ngày càng trở nên dễ dàng Ví dụ con người

có thể dễ dàng tìm một địa điểm mua sắm chỉ với một chiếc di động kết nối mạng hay đơn giản là dùng máy tính vào các web site như diadiem.com hoặc map.google.com để tra cứu Tuy nhiên, bên cạnh các hệ thống tra cứu địa điểm sẵn

có như vậy, các công ty, doanh nghiệp trong các ngành như du lịch, bất động sản hay các hệ thống nhà hàng, các hệ thống mua sắm… với vô số đại lý, cửa hàng phân

bố trên toàn quốc lại chưa có một dịch vụ tra cứu địa điểm lại để tích hợp vào hệ thống của mình

Vì vậy trong đồ án này, tác giả hướng tới phát triển một dịch vụ thông tin địa điểm có khả năng đáp ứng nhu cầu cá nhân hay các tổ chức…cũng như tích hợp vào các hệ thống khác Dịch vụ này phải đảm bảo khả năng mở rộng quy mô (scalability) khi cơ sở dữ liệu địa điểm là rất lớn, đồng thời hỗ trợ tốt việc hiển thị trên bản đồ trực tuyến Để xây dựng được một hệ thống như vậy, tác giả cũng giới thiệu một số công nghệ xử lý dữ liệu cực lớn, đã được áp dụng ở một số hệ thống lớn như Google Search, Yahoo, Facebook và ứng dụng chúng cho đề tài

Trong quá trình làm đồ án, tác giả có cơ hội tham gia phát triển dự án mạng địa xã hội Foloyu-mạng xã hội dựa địa điểm, dưới sự hướng dẫn tận tình của thầy

TS Nguyễn Khanh Văn.Tiến sĩ đã giúp tác giả thử nghiệm và hoàn thiện dịch vụ thông tin địa điểm tích hợp được trên nhiều hệ thống hoạt động trên nhiều nền tảng bao gồm cả thiết bị di động chạy hệ điều hành Android

Đồ án được bố cục gồm bốn phần chính:

 Phần mở đầu:

 Giới thiệu về đề tài tốt nghiệp

 Tóm tắt nội dung, môi trường thực hiện đồ án

 Phần một: Đặt vấn đề và định hướng giải pháp:

 Mô tả xuất phát cần xây dựng dịch vụ mạng quản lý địa điểm

 Trình bày chi tiết các nhiệm vụ được giao trong đồ án

 Định hướng, giải pháp lựa chọn để xây dựng đề tài

 Tóm tắt cơ sở lý thuyết và công nghệ được áp dụng trong các hệ thống xử lý dữ liệu lớn

 Phần hai: Xây dựng dịch vụ mạng quản lý địa điểm và hệ thống website thử nghiệm dịch vụ:

 Trình bày kết quả phân tích, yêu cầu chức năng của dịch vụ mạng và

hệ thống website thử nghiệm

Trang 13

 Đánh giá kết quả đạt được và so sánh với các hệ thống khác.

 Phần kết luận:

 Đánh giá lại toàn bộ quá trình thực hiện đề tài tốt nghiệm và đề xuất phát triển trong tương lai

Trang 14

PHẦN I: TỔNG QUAN VỀ ĐỀ TÀI ĐẶT VẤN ĐỀ VÀ PHƯƠNG PHÁP THỰC HIỆN

Nội dung của chương này sẽ trình bày các vấn đề sau:

 Đặt vấn đề về yêu cầu cần phát triển dịch vụ thông tin địa điểm

 Phương pháp tiếp cận và hướng thực hiện đề tài của tác giả

1.1 Đặt vấn đề

Ngày nay, cùng với sự phát triển mạnh mẽ của mạng Internet, việc tìm kiếm, tra cứu địa điểm ngày càng trở nên dễ dàng Cùng với đó, sự ra đời của các hệ thống bản đồ số, các thiết bị di động thông minh để định vị đang thay thế dần cách thức tra cứu truyền thống trên các tấm bản đồ giấy, giúp con người tiếp cận được với địa điểm nhanh chóng và tiện lợi Không chỉ có nhu cầu tra cứu, con người còn muốn giới thiệu, chia sẻ địa điểm của mình đến cộng đồng

Bên cạnh đó, địa điểm đang trở nên đặc biệt quan trọng đối với một số hệ thống trong các ngành như du lịch, bất động sản, quảng bá mua sắm, giải trí và mạng xã hội địa điểm-một mô hình mạng xã hội dựa địa điểm mới phát triển mạnh

ở Việt Nam từ năm 2010-2011 Với mong muốn đưa đến người dùng các thông tin địa điểm chính xác và trực quan, các hệ thống trên đã phát triên các hệ thống thông tin địa điểm của riêng mình Tuy nhiên các hệ thống chỉ phát triển đáp ứng được nhu cầu đặc thù, chuyên biệt của tổ chức đang sở hữu mà chưa hướng đến được nhu cầu sử dụng của cá nhân Ngoài ra dữ liệu địa điểm ở các hệ thống này mới chỉ có tính cục bộ phụ thuộc vào người sử dụng và từng hệ thống cung cấp mà chưa có sự chia sẻ, thống nhất tạo nên một cơ sở dữ liệu địa điểm lớn, phong phú

Vì vậy một giải pháp được đưa ra đó là một dịch vụ thông tin địa điểm có thể tích hợp được vào nhiều hệ thống khác và tập trung được dữ liệu địa điểm do các hệ thống này cung cấp Ví dụ với một hệ thống về giao dịch bất động sản trực tuyến, thông tin về các hạ tầng xã hội xung quanh như siêu thị, chợ, trường học là rất quan trọng và ảnh hưởng đến giá trị của chính một bất động sản Khi dịch vụ thông tin địa điểm được tích hợp vào, hệ thống sẽ có sẵn một cơ sở dữ liệu về hạ tầng xã hội với đầy đủ thông tin như vị trí, đánh giá, bình luận mà không cần xây dựng thêm một thành phần nào khác Ngoài ra, đối với những cá nhân, tổ chức nhỏ có nhu cầu xây dựng cho mình một hệ thống có liên quan đến địa điểm như hiển thị vị trí các đại lý, cửa hàng, các danh lam thắng cảnh hay đơn giản chỉ là chia sẻ các địa điểm

ưa thích của mình thì dịch vụ thông tin địa điểm cũng có thể đáp ứng

Với giải pháp trên, đồ án cần giải quyết được những vấn đề sau:

Trang 15

 Phát triển được dịch vụ thông tin đia điểm đảm bảo các chức năng cơ bản có thể đáp ứng được nhu cầu đa dạng cho nhiều hệ thống.

 Dịch vụ cần đảm bảo tính mở rộng quy mô về dữ liệu khi cơ sở dữ liệu địa điểm là rất lớn

 Dịch vụ phải sử dụng được cho các hệ thống sử dụng các nền tảng khác nhau

 Xây dựng hệ thống thử nghiệm nhằm đánh giá hiệu quả của dịch vụ được phát triển

Nhằm giải quyết nhưng vấn đề trên, tác giả đã xây dựng hệ thống thành 2 giai đoạn:

 Giai đoạn 1: Xây dựng dịch vụ quản lý địa điểm dưới dạng web service tích

hợp vào hệ thống website thử nghiệm theo mô hình client-server Giai đoạn này hoàn thiện trong khuôn khổ đồ án

 Giai đoạn 2: Xây dựng dịch quản lý địa điểm thành một engine cung cấp

không chỉ các API về phía server, mà còn các API cho client phục vụ cho việc hiển thị địa điểm trên bản đồ số Giai đoạn này là hướng phát triển sau tốt nghiệp

Ngoài ra, trong quá trình làm đồ án, tác giả có cơ hội được tham gia vào dự án

mạng địa xã hội Foloyu, một mạng xã hội dựa địa điểm, đã giúp tác giả hoàn thiện

được các chức năng của dịch vụ thông tin địa điểm trong quá trình tích hợp thử nghiệm dịch vụ vào mạng xã hội này, đặc biệt là thử nghiệm trên hệ thống chạy trên thiết bị di động cài hệ điều hành Android

Trên thế giới, mô hình mạng xã hội địa điểm (tiếng Anh là Geosocial networking) hình thành từ những năm 2005 và phát triển mạnh ở Việt Nam những năm gần đây 2010-2011 với sự ra đời của các mạng địa điểm như go.vn, kunkun.vn

hay Yoo! Khi tham gia mạng xã hội địa điểm, người dùng ngoài việc tìm kiếm

thông tin về địa điểm, có thể tạo ra một mạng kết nối với các người dùng khác

thông qua việc họ hiển thị đăng nhập và chia sẻ với nhau các địa điểm mình quan tâm Foloyu cũng là một trong mạng xã hội địa điểm như vậy, được phát triển với nhiều thành phần và cơ sở dữ liệu phân tán (Hình 1)

Trang 16

Hình 1: Mô hình mạng xã hội Foloyu

Mô hình hệ thống Foloyu được chia thành nhiều thành phần với server Foloyu là trung tâm và các engine khác hỗ trợ gồm:

 Location Engine: quản lý toàn bộ thông tin về các địa điểm, cung cấp các API dưới dạng webservice cho Foloyu server

 Feed Engine: quản lý các feed (cập nhật thông tin) từ người dùng rồi truyền tải các thông tin này cho người dùng khác

 Profile Engine: quản lý thông tin người dùng, bạn bè trong hệ thống

1.2 Phương pháp tiếp cận và hướng thực hiện đề tài

Như đã mô tả ở phần 1.1 Tổng quan đề tài, phần này sẽ đưa ra các hướng tiếp cận để giải quyết được những vấn đề đã nêu gồm:

 Xây dựng được dịch vụ quản lý đia điểm đảm bảo các chức năng cơ bản có thể đáp ứng được nhu cầu cho nhiều hệ thống => Cơ sở dữ liệu được thiết kế phân tán, với các quan hệ khóa lỏng lẻo

 Dịch vụ cần đảm bảo tính mở rộng quy mô về dữ liệu khi cơ sở dữ liệu địa điểm là rất lớn => Các công nghệ xử lý dữ liệu lớn đảm bảo tính mở rộng quy mô

 Dịch vụ phải sử dụng được cho các hệ thống sử dụng các nền tảng khác nhau

=> Các chức năng được xây dựng dưới dạng web service

Với những cách tiếp cận trên, một số công nghệ chuyên xử lý dữ liệu lớn như Memcached, MapReduce, kiến trúc Web Service, Google Map API được tác giả tìm

Dịch vụ quản lý địa điểm tích hợp vào hệ thống Foloyu

Trang 17

hiểu để áp dụng được trong đề tài sẽ được giới thiệu trong chương tiếp theo, chương 2: Cơ sở lý thuyết và công nghệ.

Trang 18

CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ

Nội dung của chương này sẽ trình bày các vấn đề sau:

 Công nghệ Memcached

 Mô hình MapReduce

 Kiến trúc Web Service

 Giới thiệu về Google Map API

Để phát triển được dịch thông tin địa điểm có tính dễ mở rộng quy mô (scalability), tác giả đã tập trung tìm hiểu các công nghệ xử lý dữ liệu cực lớn Các công nghệ này đã được áp dụng thành công ở các hệ thống lên đến hàng triệu người dùng với lượng dữ liệu cần xử lý hàng terabyte, petabyte như mô hình MapReduce

áp dụng trong bộ máy tìm kiếm của Google, Yahoo hay công nghệ Memcached áp dụng trong Facebook-mạng xã hội lớn nhất thế giới Ngoài ra, tác giả cũng trình bày

về kiến trúc của Web Service nhằm xây một hệ thống mềm dẻo linh hoạt có khả năng “nói chuyện” với nhiều hệ thống chạy trên các nền tảng khác nhau Cuối chương 2 này, tác giả cũng giới thiệu qua về Google Map API, một dịch vụ cung cấp các chức năng hiển thị bản đồ trực tuyến

1.3 Công nghệ Memcached

Các hệ thống khi thao tác với cơ sở dữ liệu đều xây dựng các chiến lược cache phù hợp Các hệ thống lớn như Facebook với số người dùng lên đến hàng triệu thì các hệ thống cache dữ liệu đóng vai trò rất quan trọng Được đánh giá là hiệu quả

và đã áp dụng thành công ở các hệ thống lớn là chiến lược cache dựa trên kiến trúc phân tán Có rất nhiều công nghệ để thực thi chiến lược này, nhưng nhờ những ưu điểm như dễ cài đặt, mã nguồn mở, thích hợp với nhiều nền tảng, Memcached là

sự lựa chọn hàng đầu cho các hệ thống hiện nay

1.3.1 Khái niệm

Memcached là hệ thống lưu trữ đối tượng trên bộ nhớ dựa trên kiến trúc phân tán (distributed memory object caching system) Memcached lần đầu tiên được ứng dụng cho trang web LiveJournal.com nhưng đến bây giờ đã được rất nhiều hệ thống áp dụng Công nghệ này thường được sử dụng để tăng tốc độ các hệ thống ứng dụng có nhiều các thao tác liên quan đến database bằng cách lưu trữ dữ liệu và các đối tượng trong bộ nhớ (thường là RAM hoặc các thiết bị có tốc độ truy suất cao) để giảm số lần phải truy cập dữ liệu bên ngoài (ví dụ như cơ sở dữ liệu hoặc các API) Memcached chạy được trên nhiều nền tảng như Unix, Windows và MacOS

Trang 19

Đặc biệt, Memcached cung cấp khả năng cached dữ liệu sử dụng nhiều máy kết hợp tạo thành một hệ thống caching phân tán, tăng khả năng lưu trữ và khả năng mở rộng hệ thống.

1.3.2 Kiến trúc hệ thống sử dụng công nghệ Memcached

Memcached được sử dụng ở các hệ thống website đòi hỏi khả năng mở rộng quy

mô về dữ liệu (scalability) Trong kiến trúc Client –Server thông thường, một request từ máy khách đến các máy chủ chứa ứng dụng và máy chủ ứng dụng tiếp tục đọc dữ liệu từ một máy chủ khác chứa database (Database cũng có thể đặt chung với máy chủ chứa ứng dụng) Các máy chủ này thường được thiết kế để có thể phân phối tải, sao lưu dữ liệu và chịu lỗi (Hình 2)

Hình 2: Kiến trúc client-server truyền thống

Tuy nhiên, việc truy cập cơ sở dữ liệu về bản chất là đọc đĩa cứng Đĩa cứng

là thành phần có tốc độ truy cấp chậm nhất trong kiến trúc này và khi nhu cầu đọc ghi lớn, nhiều request đến thì hiện tượng thắt cổ chai có thể xảy ra

Memcached thật sự rất mạnh bởi vì khả năng chạy được trên các hệ thống phân tán (tăng khả năng mở rộng) nhưng không giống như kiến trúc phân tán truyền thống (Hình 3), Memcached không có thành phần điều khiển trung tâm để phân phối dữ liệu Cũng vì vậy mà giữa các nút (có thể là máy chủ) chạy Memcached không có khả năng phân phối dữ liệu tự động, các nút là hoàn toàn độc lập không giao tiếp với nhau

Mạng Internet

Máy chủ ứng dụng

Máy chủ

dữ liệu

Trang 20

Hình 3: Kiến trúc phân tán thông thường

Để giảm tải việc đọc đĩa cứng hay truy cập cơ sở dữ liệu, thay vì chỉ có các máy chủ chứa ứng dụng thì sẽ có thêm các máy chủ làm nhiệm vụ caching dữ liệu đứng ở giữa Vì vậy kiến trúc mới khi có các máy chủ Memcached giờ được chia làm hai thành phần (Xét trong phạm vi chỉ gồm máy chủ chứa ứng dụng và máy chủ Memcached, máy chủ nào truy cập đến các máy chủ Memcached thì máy chủ đó đóng vai trò như là client-minh họa trong hình 4):

1 Client: Thường là một máy chủ chứa ứng dụng, lấy danh sách các máy chủ cài đặt Memcached và sử dụng các hàm băm lựa chọn máy chủ cache để thiết lập hoặc đọc dữ liệu

2 Server: Là các máy chủ cài đặt Memcached hỗ trợ các xử lý liên quan thiết lập, xóa và nhận dữ liệu

Hình 4: Kiến trúc client-server trong hệ thống sử dụng

Để có thể truy cập đến các máy chủ Memcached, bên client cần cài đặt thư viện memcached client (có các thư viện riêng cho các nên tảng ngôn ngữ khác nhau, với java là spymemcached - http://code.google.com/p/spymemcached/) cho phép giao tiếp, thực hiện các thao tác như chọn máy chủ đọc và ghi dữ liệu Các client sử

Các hệ thống phân tán thông thường Nhưng

memcached không

hoạt động giống như vậy

Trang 21

dụng một hàm băm sinh một hash dựa trên key truyền vào Từ key này client sẽ chọn một máy chủ để giao tiếp Với những đặc điểm trên, kiến trúc đặc trưng của một hệ thống sử dụng Memcached với khả năng sao lưu, cân bằng tải và chịu lỗi minh họa trong hình 5.

Hình 5: Kiến trúc đặc trưng đầy đủ của hệ thống sử dụng memcached

1.3.3 Đánh giá hiệu quả và khả năng ứng dụng

Qua quá trình cài đặt thử nghiệm, khi thử các thao tác cơ bản với dữ liệu đối với hệ thống có sử dụng Memcached và hệ thống chỉ cài đặt hệ quản trị cơ sở dữ liệu SQL Server 2008, tác giả nhận thấy có sự khác biệt rõ rệt về chi phí thời gian khi thực hiện cùng một thao tác giống nhau Thông tin chi tiết trong bảng số liệu bên dưới:

Rất nhanh, khoảng 2-3 giây

2 Lấy 1 bản ghi Rất nhanh, không phụ

thuộc vào số lượng bản ghi

Rất nhanh, phụ thuộc vào số lượng bản ghi

3 Khả năng tìm kiếm,

duyệt danh sách bản ghi

Gần như không có khả năng này Tùy chiến lược lưu trữ

Chùm máy chủ dữ liệu

Trang 22

Từ bảng trên chúng ta có thể thấy với hệ thống áp dụng Memcached cần phải có chiến lược lưu trữ key-value linh hoạt nhằm tận dụng những lợi thế từ công nghệ này Chi tiết cách thức làm việc và chiến lược cài đặt Memcached vào dịch vụ thông tin địa điểm sẽ được tác giả trình bày trong phần II của đồ án.

1.4 Mô hình MapReduce

Với sự rộng lớn của mạng Internet, các công cụ tìm kiếm trực tuyến trở thành một phần không thể thiếu cho người duyệt web Mỗi giây, các hệ thống tìm kiếm khổng lồ như Google, Yahoo tiếp nhận hàng triệu lượt truy vấn từ người dùng và trả lại kết quả trong thời gian chỉ vài mili giây Tại sao với số lượng hàng tỉ trang web, các hệ thống tìm kiếm lại có thể đáp ứng nhanh như vậy? Câu trả lời nằm ở mô hình lập trình MapReduce, một mô hình xử lý dữ liệu cực lớn

1.4.1 Khái niệm

MapReduce là một mô hình giúp cho các hệ thống xử lý lượng dữ liệu cực lớn lên đến hàng terabyte, petabyte phân bố trên hàng ngàn máy tính biệt lập mà vẫn đáp ứng được về mặt thời gian và tận dụng được khả năng phần cứng với cấu hình thấp

Về bản chất, MapReduce biểu diễn dữ liệu bằng các cặp key – value và quá trình xử lý dữ liệu bao gồm hai công việc chính được gọi là Map và Reduce Để có thể hiểu được các khái niệm trong mô hình này, tác giả bắt đầu từ một bài toán cơ

bản “Đếm số lần xuất hiện của các từ trong văn bản” Bài toán đặt ra là hết sức đơn

giản nhưng nếu số lượng văn bản là rất rất lớn thì việc lập trình thông thường sẽ không giải quyết được Nếu áp dụng mô hình MapReduce, chúng ta có luồng xử lý

dữ liệu của bài toán như sau (hình 6):

Hình 6: Luồng dữ liệu xử lý bài toán

Như trong sơ đồ hình 6, một văn bản đầu vào sẽ được chia ra làm 3 phần (Splitting) Công việc tiếp theo là đếm số lần xuất hiện các từ trong mỗi phần này,

Trang 23

ta có được thống kê về số là xuất hiện của từ trong mỗi phần (Mapping) Sau đó là công việc sắp xếp các kết quả thống kê này để tạo thành các nhóm có chung từ cần đếm (Sorting) Từ các nhóm này ta có được tổng số xuất hiện của mỗi từ trong văn bản lúc đầu (Reducing).

Dữ liệu biểu diễn bằng các cặp key – value trong quá trình này như sau (bảng 1):

Splitting Văn bản gốc được chia làm 3 phần, mỗi phần sẽ được

gắn key để thao tác với giá trị của key là nội dung tương ứng với phần đó VD:

“Phần 1” – “Nội dùng đoạn văn bản 1”

“Phần 2” – “Nội dung đoạn văn bản 2”

“Phần 3” – “Nội dung đoạn văn bản 3”

Mapping Mỗi phần sau khi được chia, qua quá trình Mapping,

các từ sẽ được đếm số lần xuất hiện, key ở quá trình chính là từ đó với giá trị tương ứng là số lần đếm được VD

Reducing Trong quá trình này, key vẫn là từ cần đếm nhưng value

là tổng só lần xuất hiện của từ đó trong cả 3 phần văn bản được chia ra Qua quá trình này, số lượng key – value đã giảm đi

Trang 24

1.4.2 Luồng dữ liệu xử lý khi áp dụng mô hình MapReduce

Hình 7: Luồn xử lý dữ liệu khi áp dụng mô hình MapReduce

Dữ liệu được dự trữ ở vùng lưu trữ ổn định thường là một distributed file system

Mỗi phần cùng với key của nó sẽ đi qua một

xử lý gọi là Map Đầu ra sẽ là một tập các các cặp key/value

Tập các cặp key/value từ pha xử lý Map trở thành đầu vào của pha tiếp theo gọi là Partition Pha này sẽ chia không gian key này thành R phần (ví dụ bằng hash (key) mod R)

Sau khi được chia thành R phần Mỗi phần này trở thành đầu vào của pha tiếp theo Pha Compare sắp xếp mỗi phần theo key tạo thành các nhóm có cùng key

Mỗi nhóm có cùng key (số nhóm < R) trở thành đầu vào của pha tiếp theo gọi là Reduce Pha này cho ra một cặp key/ value duy nhất

Sau pha Reduce, ta thu được các đầu ra Các đầu ra này được ghi lên một distributed file system

Distributed file system (Global Storge)

Trang 25

1.4.3 Thực thi mô hình MapReduce

Hình 8: Mô hình thực thi MapReduce

Về cơ bản đối với quá trình Map- Dữ liệu đầu vào được tự động phân tách thành một tập gồm M phần Trong mô hình MapReduce thì các phần có kích thước bằng nhau, có cùng một xử lý giống nhau trên mỗi phần này Việc xử lý này phải độc lập trong tính toán (ví dụ trong bài toán Fibonacci, tính toán song song là không thể vì mỗi giá trị đều phụ thuộc vào các giá trị đứng trước) và không yêu cầu giao tiếp giữa các nhiệm vụ Các phần dữ liệu này có thể được xử lý song song bằng cách phân phối đến vô số máy thực hiện

Sau quá trình này, quá trình Reduce cũng được phân phối đến các máy bằng việc phân vùng không gian key trung gian (Sinh ra sau quá trình Map) thành R mảnh sử dụng hàm partitioning (ví dụ như hash(key) mod R) Số mảng R và partitioning function được chỉ ra bởi người dùng như là các tham số

Trong thực tế thì M và R thường lớn hơn rất nhiều so với số lượng máy tham gia vào nhiệm vụ tính toán Phần tiếp theo sẽ chỉ luồng hoạt động của MapReduce Khi chương trình người dùng gọi chức năng MapReduce, tuần tự các hành động sau sẽ xảy ra:

1 Thư viện MapReduce trong chương trình đầu tiên cắt các file đầu vào thành

M miếng thường có kích thước từ 16 – 64 MB 1 mảnh (có thể điều khiển bởi người dùng thông qua một tham số tùy chọn) Sau đó nó sẽ khởi động rất nhiều phiên bản sao chép của chính chương trình đó ở một cluster các máy

Trang 26

2 Trong các phiên bản sao chép đó có một một phiên bản được định cư trên một “máy” – có thể là nhiều máy - đặc biệt gọi là master Phần còn lại là các worker sẽ được gán nhiệm vụ bởi master Có M nhiệm vụ map và R nhiệm

vụ reduce để gán Master sẽ nhặt các woker đang rảnh rỗi và gán cho mỗi chúng một nhiệm vụ map hoặc một nhiệm vụ reduce

3 Một worker nếu được gán nhiệm vụ map sẽ đọc nội dung của mảnh đầu vào tương ứng Nó sẽ parse các cặp key/value của dữ liệu đầu vào và truyền mỗi cạp này đến hàm Map() do người dùng định nghĩa Các cặp key/value trung gian được tạo ra bởi hàm Map() sẽ được ghi lên bộ nhớ trong

4 Định kỳ, các cặp key/value trên bộ nhớ sẽ được ghi vào ổ đĩa địa phương, được phân thành R vùng bởi partitioning function Vị trị của các cặp key/value trên ổ đĩa sẽ được truyền trở lại master, người có trách nhiệm chuyển tiếp các vị trí này đến các worker có nhiệm vụ reduce

5 Khi một woker làm nhiệm vụ reduce được thông báo bởi master về những

vị trí này, nó sẽ sử dụng phương thức đọc thủ tục từ xa (remote proceduce calls) để đọc các dữ liệu các dữ liệu này từ ổ đĩa của các worker làm nhiệm

vụ map Khi một reduce worker đọc được tất cả dữ liệu trung gian này, nó

sẽ sắp xếp dữ liệu theo các key trung gian cho ra các nhóm giá trị có cùng key Việc sắp xếp là cần thiết bởi vì thường có rất nhiều key khác nhau map đến cùng một cùng một nhiệm vụ reduce Nếu một lượng dữ liệu trung gian quá lớn để nạp vào bộ nhớ trong thì việc sắp xếp ngoài sẽ được sử dụng (external sort)

6 Đối với mỗi nhóm có cùng key, các máy worker làm nhiệm vụ reduce sẽ truyền key và tập giá trị trung gian tương ứng vào hàm Reduce cũng do user viết ra Đầu ra của hàm Reduce đươc nối lại cho ra file đầu ra cuối cùngSau khi thực hiện thành công, đầu ra của việc thực thi MapReduce là R file (tên file sẽ được chỉ ra bởi user) Thông thường, người dùng sẽ không cần kết hợp tất cả R file này thành 1 file duy nhất mà học chỉ cần truyền những file như là đầu vào một xử lý gọi MapReduce khác, hoặc sử dụng một ứng dụng phân phối khác (distributed application) có khả năng xử lý đầu vào đã được phân tách thành các file

1.4.4 Đánh giá và khả năng ứng dụng

Tuy Google và MapReduce framework của họ có thể đã rất mạnh trong việc

xử lý dữ liệu cực lớn, nhưng vẫn còn một nền tảng khác cũng mạnh mẽ không kém

đó chính là Hadoop, một dự án mã nguồn mã của Apace Trong khi MapReduce là một công nghệ độc quyền của Google thì Apache Foundation đã có cách đi riêng của họ là tạo ra một framework map-reduce mã nguồn mở của riêng mình được gọi

là Hadoop Hadoop được Yahoo và rất nhiều các dịch vụ tìm kiếm khác sử dụng thành công khi phải xử lý một lượng dữ liệu cực kì lớn

Trang 27

Trong quá trình thử nghiệm, tác giả đã thử nghiệm Hadoop trên hệ điều hành Window 7 có cài đặt môi trường giả lập lệnh Linux Cygwin thực hiện giải quyết bài

toán “Đếm số lần xuất hiện của từ trong văn bản” Thử nghiệm với đầu vào là 1 tệp

văn bản 18MB text, xử lý kết quả ra trong 1 phút 40 giấy Khi chia tệp văn bản thành 4 phần, mỗi phần khoảng hơn 4MB, kết quả ra trong khoảng 35 giây

Tuy nhiên qua việc tìm hiểu, thử nghiệm, tác giả nhận thấy mô hình MapReduce thích hợp xử lý các bài toán mang tính thống kê dữ liệu nên hiện tại trong đồ án chưa thể áp dụng mô hình này Trong tương lai, tác giả sẽ tiếp tục tìm hiểu để thực thi mô hình cho dịch vụ thông tin địa điểm

1.5 Web Service

Nhằm xây dựng một dịch vụ quản lý địa điểm có thể dùng cho nhiều hệ thống trên nhiều nền tảng, tác giả đã phát triển hệ thống với kiến trúc Web Service

do tính mềm dẻo linh hoạt (một ứng dụng có thể nói chuyện với một ứng dụng khác

mà không cần biết chi tiết kỹ thuật bên trong), các giao tiếp được định nghĩa rõ ràng

và độc lập với nền tảng hệ thống và có thể tái sử dụng

1.5.1 Khái niệm

Web service là một cách thức giao tiếp giữa hai thiết bị điện tử thông qua mạng Theo định nghĩa của W3C thì Web service như là một hệ thống phần phần mềm được thiết kế để hỗ trợ tương tác giữa các máy tính khác nhau thông qua mạng Internet Nó có giao diện được miêu tả theo định dạng mà máy tính có thể xử lý (WSDL-Web Service Description Language- tạm dịch là ngôn ngữ đặc tả dịch vụ web) Các hệ thống khác sẽ tương tác với Web Service sử dụng các tin nhắn SOAP

và được truyền qua mạng sử dụng giao thức HTTP

Trang 28

1.5.2 Kiến trúc Web Service

Hình 9: Kiến trúc Web Service

Các thành phần trong kiến trúc của Web Service:

trữ và cung cấp Web Service

tiếp hay tích phối các dịch vụ

gian: giúp nhà cung cấp quảng bá sản phẩm, giúp người sử dụng tìm kiếm và lựa chọn dịch vụ phù hợp với nhu cầu của mình

Các thao tác trong kiến trúc Web Service

requestor có thể tìm thấy chúng

truy vấn đến Service Registry để yêu cầu dịch vụ

1.5.3 Quy trình công bố và sử dụng Web Service

1 Service Provider phát triển, lưu trữ và tạo tài liệu đặc tả dịch vụ theo chuẩn

WSDL.

2 Service Provider công bố các thông tin và đặc tả cho Service Registry

Service Registry tạo ra các văn bản UDDI để mô tả và quản lý Web Service.

Trang 29

3 Service Requester tìm kiếm Web Service phù hợp với mình, thông qua Service registry.

4 Service Registry trả về danh sách và thông tin của các Web Service phù hợp, đặc biệt là đặc tả WSDL Từ đó Service requestor lựa chọn Web Service phù hợp với mình

5 Service Requestor phát triển ứng dụng, sử dụng hay tích phối dịch vụ, dựa trên đặc tả WSDL

6 Trong quá trình hoạt động, ứng dụng sử dụng dịch vụ: ứng dụng tạo thông

điệp SOAP Request gửi cho Service Provider Service Provider xử lý và gửi trả kết quả bằng thông điệp SOAP Response.

1.5.4 Các chuẩn dùng trong Web service

1.5.4.1 Simple Object Access Protocol (SOAP)

SOAP là một giao thức giao tiếp giữa các ứng dụng, định dạng các tin nhắn gửi

đi dựa trên XML Cấu trúc tin nhắn trong SOAP gồm 2 thành phần:

• Các tin nhắn Request và Response: Request chỉ đến phương thức được gọi

và response trả lại kết quả khi chạy phương thức đó (Minh họa các Request message và Response message trong hình 10 và hình 11)

• Các định nghĩa đặc tả (envelop): gồm các tin nhắn về chính bản thân nó, các namespace

Hình 10: Minh họa một Request message

Trang 30

Hình 11: Minh họa một Response message

1.5.4.2 Web Service Description Language (WSDL)

WSDL là tài liệu được viết theo chuẩn XML nhằm miêu tả và chỉ ra vị trí của web service Các thông tin miêu tả gồm vị trí của web service, giao diện dịch

vụ, chi tiết thực thi giao diện đó Minh họa về một tài liệu WSDL có trong hình 12.Cấu trúc của tài liệu WSDL

 Thẻ <portType>: Định nghĩa một web service, các thao tác có thể được thực

hiện và các tin nhắn

 Thẻ <message>: Định các dữ liệu cho một thao tác Phần này có thể so sánh

như các tham số của một hàm gọi trong ngôn ngữ lập trình truyền thống

Thẻ <types>: Định nghĩa loại dữ liệu được sử dụng bởi web service

Thẻ <binding>: Định nghĩa định dạng tin nhắn và các giao thức giao tiếp

được sử dụng bởi web service

Hình 12: Minh họa một WSDL

Trang 31

1.5.4.3 Universal Description, Discovery and Integration (UDDI)

UDDI các chuẩn kỹ thuật theo các tiêu chuẩn cho việc mô tả và khám phá, cũng như tập hợp các cài đặt dựa trên Internet

1.6 Google Map API

Tuy công nghệ Google Map và các dịch vụ của Google không áp dụng nhiều trong việc phát triển phía server là dịch vụ thông tin địa điểm nhưng lại đặc biệt quan trọng khi xây dựng một ứng dụng hoàn chỉnh về địa điểm nhất là khi xây dựng phía client Một điều quan trọng nữa đó là dịch vụ quản lý địa điểm cung cấp một số API gắn liên với tọa độ vệ tinh của Google

Google Maps Javascript API cho phép nhúng Google Map vào trong một web site sử dụng javascript Phiên bản mới nhất là 3 với các API được thiết kết nhanh hơn, nhiều ứng dụng hơn cho các thiết bị di động cũng như các ứng dụng trên trình duyệt desktop truyền thống Các API này cung cấp các tiện ích để thao tác với bản đồ và thêm các nội dung vào bản đồ thông qua một số dịch vụ Javascript Maps API là dịch vụ hoàn toàn miễn phí và khả dụng cho bất kỳ website nào

Để có thể sử dụng Google Maps API, một trang web đơn giản chỉ cần sử dụng đoạn mã HTML sau:

Đường dẫn http://maps.google.com/maps/api/js chỉ đến vị trí của file

javascript chứa các ký tự và các định nghĩa cho phép gọi các API của Google Map Tham số sensor cho biết liệu ứng dụng có sử dụng một sensor để định vị vị trí của người dùng không Giá trị của nó là true hoặc false

Thẻ <meta> bên trong thẻ header cho biết bản đồ có thể được hiển thị toàn

màn hình và có cho người dùng thay đổi kích thước không

Chi tiết các API và cách sử dụng có thể tham khảo tại địa chỉ

http://code.google.com/apis/maps/documentation/javascript/reference.html

Trang 32

PHẦN II: CÁC KẾT QUẢ ĐẠT ĐƯỢC

Phần I đã trình bày một cách tổng quan về đồ án và lý thuyết các công nghệ mà tác giả đã tìm hiểu Trong phần II, tác giả sẽ tập trung đi sâu vào các chiến lược áp dụng công nghệ Memcached và phân tích các chức năng của dịch vụ thông tin địa điểm Cuối phần II, tác giả cũng nêu rõ các kết quả đã đạt được trong quá trình thử nghiệm và tích hợp dịch vụ Những kết quả này sẽ là cơ sở để đánh giá những ưu điểm đạt được, những hạn chế, thiếu sót và phương hướng phát triển giai đoạn 2 của dịch vụ thông tin địa điểm trong tương lai gần Bố cục của phần II bao gồm ba chương chính:

- Chương 3 sẽ trình bày chi tiết hơn về cách thức làm việc của Memcached Từ

đó tác giả sẽ phân tích các chiến lược nhằm áp dụng công nghệ này vào dịch vụ thông tin địa điểm

- Chương 4, tác giả tập trung phân tích các yêu cầu chức năng của dịch vụ thông

tin địa điểm và hệ thống website thử nghiệm Chương này sẽ bao gồm các biểu

đồ usecase, thiết kế giao diện và dữ liệu

Trang 33

CÀI ĐẶT MEMCACHED TRONG HỆ THỐNG

Nội dung của chương này sẽ trình bày các vấn đề sau:

 Cách thức Memcached làm việc.

 Các chiến lược áp dụng Memcached vào hệ thống.

Tại sao các ứng dụng lại cần cache dữ liệu thay vì lấy toàn bộ từ database? Một ứng dụng sử dụng cơ sở dữ liệu đều phải thực hiện các thao tác cơ bản như INSERT, UPDATE, DELETE, SELECT dữ liệu Tùy với mỗi hệ thống mà tần suất

sử dụng các thao tác là nhiều hay ít Đối với hệ thống dịch vụ thông tin địa điểm, thì thao tác được thực hiện nhiều nhất là lấy dữ liệu (SELECT) từ cơ sở dư liệu để hiển thị như lấy danh sách địa điểm, thông tin địa điểm, các bình luận liên quan đến địa điểm…Theo thời gian cơ sở dữ liệu sẽ ngày càng nhiều hơn chính vì vậy các thao tác trên sẽ mất chi phí nhiều hơn Trong khi việc đọc cơ sở dữ liệu thuần túy là đọc

ổ cứng thì việc đọc dữ liệu từ cache thường là đọc từ bộ nhớ trong, rõ ràng tốc độ đọc ghi từ cache lớn hơn rất nhiều

Nhằm tăng khả năng mở rộng quy mô về dữ liệu (dữ liệu lớn theo thời gian), dịch vụ thông tin địa điểm cần một giải pháp cache dữ liệu hiệu quả Việc sử dụng các giải pháp cache của một số nền tảng lập trình như sử dụng session chỉ có thể cache dữ liệu dung lượng nhỏ, không linh hoạt khi thao tác, khó mở rộng về phần cứng Có rất nhiều công nghệ có thể khắc phục các vấn đề này như Sharedcache, Appfabric, Ncache, StateServer, Memcached…, trong đó Memcached được sử dụng phổ biến (Facebook cũng sử dụng công nghệ này với khoảng 800 máy chủ cache dữ liệu) với khả năng cache phân tán, hiệu năng cao, dễ thao tác và linh hoạt Chính vì những lý do này, tác giả đã chọn Memcached cài đặt cho dịch vụ thông tin địa điểm

1.7 Cách thức Memcached làm việc.

Như đã đề cập ở Phần một trong đồ án, hệ thống sử dụng memcached tuân theo kiến trúc client-server (Hình 13)

Trang 34

Hình 13: Kiến trúc client-server khi áp dụng Memcached

Chú ý: các thuật ngữ server sử dụng trong phần này tham chiếu đến máy chủ memcached, còn thuật ngữ client tham chiếu đến các máy chủ ứng dụng

Các servers duy trì trong bộ nhớ một mảng liên kết khổng lồ các cặp value, các clients sẽ truy vấn nó Key có độ dài 250 bytes và lưu trữ value có thể lớn nhất là 1 megabyte

key-Các clients sử dụng thư viện memcached client để giao tiếp với memcached server, mặc định sẽ kết nối qua cổng 11211 Mỗi client biết được danh sách các memcached server trong khi đó bản thân các memcached server không nhận biết được các memcached server khác Nếu một client muốn thiết lập hoặc đọc các giá trị tương ứng với một key nhất định, đầu tiên client sẽ lấy giá trị hàm băm của key

để quyết định memcahed server nào sẽ được sử dụng Sau đó, nó sẽ liên lạc với server đó Server này sẽ tính giá trị hàm băm của key lần 2 để quyết định nơi sẽ đọc các value tương ứng

Các servers sẽ giữ các giá trị trong RAM, nếu RAM hết nó sẽ xóa các giá trị

ít được sử dụng nhất (LRU-Least Recently Used) Vì vậy client phải coi

Memcached như một bộ đệm tạm thời, do dữ liệu dự trữ trong đó không phải bao giờ cũng khả dụng ngay khi chúng cần đến

Ví dụ, nếu chúng ta có các client 1, 2, 3 và các memcached server A, B, C.

Client 1 muốn thiết lập key “foo” với giá trị “barbaz” Client 1 sẽ lấy tất

cả danh sách đầy đủ các server (A, B, C), tính giá trị hàm băm của key (hàm băm này luôn cho giá trị duy nhất) và lấy mod với số lượng server ở đây là 3

từ đó nhặt được một server để truy cập, ví dụ server B Client 1 sau đó sẽ kết nối trực tiếp đến server B, và thiết lập key “foo” với giá trị là “barbaz” Tiếp theo, nếu client 2 muốn lấy giá trị của key “foo” Client 2 sẽ chạy một thư viện memcached client như ở client 1 và cũng truy cập danh sách server giống như client 1 là (A, B, C), và sử dụng cùng một hàm băm như client 1

để lấy được giá trị của key “foo” ở server B.

Trang 35

Nếu tất cả các clients đều sử dụng cùng một hàm băm để quyết định chọn server thì các clients có thể đọc các dữ liệu cached ở mỗi server khác nhau Tuy nhiên khi thêm một server vào danh sách memcached server thì hàm băm trong ví

dụ trên lại không đáp ứng được điều này (Việc đọc ghi dữ liệu lên các server sẽ khác với cùng một key)

1.8 Chiến lược áp dụng Memcached trong hệ thống dịch vụ thông tin địa điểm

1.8.1 Chiến lược lựa chọn dữ liệu cache

• Cache các dữ liệu cố định, không bị thay đổi nhiều nhưng thường xuyên được lấy ra gồm

 Danh sách các loại địa điểm

 Danh sách các tỉnh thành, quận/huyện, phường xã

• Cache các dữ liệu bị thay đổi nhiều nhưng thường xuyên được lấy ra gồm

 Danh sách các địa điểm mới nhất

 Danh sách các loại địa điểm được quan tâm nhất

 Danh sách các địa điểm được quan tâm nhất

• Cache các đối tượng được thao tác nhiều đặc biệt là thao tác lấy ra gồm

 Đối tượng địa điểm

 Các tài nguyên liên quan đến địa điểm

1.8.2 Chiến lược đồng bộ cache và cơ sở dư liệu

• Các thao tác lấy ra (SELECT): Ở mỗi thao tác lấy ra, luôn kiểm tra đã tồn tại trong cache chưa nếu chưa thì truy cập vào cơ sở dữ liệu và đồng bộ dữ liệu vừa lấy ra với cache

• Các thao tác cập nhật (UPDATE, INSERT): Ở mỗi thao tác, sau khi update, insert thành công luôn update lại cache để được dữ liệu mới nhất

• Các thao tác xóa (DELETE): sau khi xóa thành công, phải kiểm trong cache

có dữ liệu đó không để xóa đi

• Đối với một số dữ liệu cache đặc biệt như các danh sách địa điểm mới nhất thì mỗi khi thao tác thêm địa điểm thành công cần cập nhật lại danh sách này trong cache Nói chung, cache dữ liệu gì và đồng bộ thế nào toàn bộ do người phát triển ứng dụng kiểm soát và phải luôn nhớ quy tác thay đổi bất cứ

dữ liệu mà dữ liệu đó đã được cached thì phải cập nhật lại cache

1.8.3 Chiến lược đảm bảo an toàn cho hệ thống cache

Do các memcached server hoàn toàn không có cơ chế chứng thực khi các clients gọi memcached server (Bất cứ clients nào có kết nối cũng có thể lấy được giá trị của một key bất kỳ đã lưu) nên mỗi ứng dụng sẽ sử dụng một định dạng key riêng để lưu và đọc cache bằng cách thêm các tiền tố Các tiền tố này được giữ kín

Trang 36

đảm bảo không cho các ứng dụng có thể đọc được Tiền tố có thể là một chuỗi

random như sau: FOLOYU:5d41402abc4b2a76b9719d91101, như vậy định dạng

key sẽ như sau:

FOLOYU:5d41402abc4b2a76b9719d91101 + key

Cụ thể trong hệ thống, các phần còn lại của key sẽ là các locationID tương ứng với dữ liệu là thông tin của địa điểm có locationID đó Các tài nguyên sẽ của địa điểm sẽ được lưu như sau: locationID:tainguyenID Ngoài ra do mỗi key chỉ lưu được nhiều nhất 1MB dữ liệu nên các bình luận của địa điểm sẽ được lưu thành một dãy các binhluanID Ta có bảng sau:

:locationID Thông tin cơ bản của địa

điểm:locationID:list_reviews: Danh sách id bình luận

của địa điểm cách nhau bởi dấu phẩy

:locationID:reviewID: Thông tin các bình luận

:categories: Danh sách các loại địa

điểm:provinces: Danh sách các tỉnh thành

:provinceID:list_districts: Danh sách các quận của

tỉnh thành:districtID:list_blocks: Danh sách các phố

phường của tỉnh thành:newestlocations: 10 địa điểm mới nhất

Bảng 2: Chiến lưu trữ key-value với memcacehd trong hệ thống

1.9 Cài đặt Memcached cho Server

Phiên bản memcached cho Window 32 có thể tại trang web

http://code.jellycan.com/memcached/

Sau khi tải về máy được một tệp nén, giải nén tệp này vào thư mục với tên là memcached trên ổ C (tùy chọn ổ giải nén) Để cài đặt Memcached như một dịch vụ thường trực của Window, tác giả tiến hành thực hiện những bước sau:

1 Chạy file memcached.exe với quyền Administrator

2 Sau đó chạy lệnh sau: C:/memcached/memcached.exe –d install

3 Khởi động dịch vụ của memcached bằng lệnh sau:

C:/memcached/memcached.exe –d start

Trang 37

1.10 Cài đặt Spymemcached cho Client

SpyMemcached là một thư viện memcached cho client sử dụng ngôn ngữ lập trình Java SpyMemcached cung cấp các API để client kết nối tới các Memcached Server

Ví dụ để kết nối tới một cụm máy memcached server bao gồm server1, server2, server3 (tên server có thể là tên miền hoặc IP trỏ đến server đó)

MemcachedClient c=new MemcachedClient(new BinaryConnectionFactory(), AddrUtil.getAddresses(“server1:11211 server2:11211 server3:11211”);

Trong đó 11211 là cổng kết nối mặc định được mở trên memcached server

Tuy nhiên, trong hệ thống dịch vụ thông tin địa điểm, thư viện Spymemcached

sẽ không được sử dụng trực tiếp mà sẽ thông qua một lớp wrapper nhằm quản lý các kết nối và chỉ gồm các thao tác cơ bản Lớp này được gọi là MyCache Chi tiết của lớp này có trong phần phụ lục của đồ án

Trang 38

PHÂN TÍCH HỆ THỐNG THỬ NGHIỆM TÍCH HỢP DỊCH VỤ

THÔNG TIN ĐỊA ĐIỂM

Nội dung của chương này sẽ trình bày các vấn đề sau:

 Kiến trúc hệ thống thử nghiệm dịch vụ thông tin địa điểm

 Yêu cầu chức năng của dịch vụ thông tin địa điểm

 Yêu cầu phi chức năng, các thiết kế về giao diện và kịch bản sử dụng.

 Thiết kế dữ liệu, thiết kế lớp.

1.11 Kiến trúc hệ thống

Hình 14: Kiến trúc hệ thống

Hệ thống được được xây dựng với kiến trúc truyền thống Client-Server Trong

đó phía server được kiến trúc thành 2 phần:

 Thành phần server: nhận các request từ trình duyệt, trả lại các response để

hiển thị cho người dùng cuối Kiến trúc thành phần này được xây dựng theo

mô hình Model-View-Controller (MVC) nhằm phân tách phần nội dung và phần hiển thị nói chung Với mô hình này một controller servlet được đặt giữa trình duyệt phía client (Client Browser) và các trang JSP Controller servlet sẽ nhận các request từ client và hiện thị tương ứng các trang JSP dựa trên thông tin của request như các tham số đầu vào,… Mỗi trang JSP page sẽ

có các model tương ứng là các lớp JavaBean chịu trách nhiệm lấy dữ liệu bind vào các trang này Kiến trúc này linh hoạt và dễ bảo trì, dễ mở rộng bởi

vì các trang view không được gọi một cách trực tiếp như thông thường do các request được nhận ở một điểm duy nhất (controller servlet) điều khiển,

Servlet (Controller)

JavaBea

n (Model)

Business Object

Request

Response

Server

Trang 39

điều này cũng tăng khả năng bảo mật, chứng thực người dùng trước mỗi response.

 Phần location web service: Phần lõi của hệ thống được xây dựng thành web

service cung cấp các dịch vụ cho server gọi

1.12 Yêu cầu chức năng

1.12.1 Usecase tổng quát (top-level)

Gồm các user đã có tài khoản trong hệ thống

3 User là chủ sở hữu vật tư Là các user đã có tài khoản nhưng là chủ sở hữu thục

sự của một địa điểm, tuy nhiên họ không phải là người đăng địa điểm lên hệ thống

Trang 40

uc Tong quan

Cac API khac Location API

Location Admin Location Enduser

1 Xem danh sach dia diem

6 Tim duong di

8 Cap nhat thong tin dia diem

7 Dang dia diem

9 Quan ly binh luan

3 Tim kiem dia diem

User chua dang ky

(Guest)

User la chu so huu vat

tu

12 Dang ky la chu so hua dia diem

User quan ly mot vung dia ly

Administrator

Location Client Application

14 Xem danh sach dia diem cua vung

15 Xem thong tin lien quan den dia diem

18 Quan ly User cua 1 vung (*)

16 Quan ly cac tai nguyen cua User dang len

Administrator la use

co quyen cao nhat trong he thong, quan ly cac user la quan ly mot vung dia ly

Services Cung cap cac api

cho he thong foloyu

Goi cac api tu cac engine khac

17 Them user

la chu so hua vat tu

10 Quan ly tai nguyen lien quan den dia diem

2 Xem ban do

4 Xem loai dia diem

5 Xem thong tin chi tiet dia diem

User da dang ky (Member)

User da dang ky

(Member)

11 Danh gia dia diem

13 Thong ke dia diem

Hình 15: Usecase tổng quan hệ thống

Ngày đăng: 22/11/2014, 08:41

HÌNH ẢNH LIÊN QUAN

Hình 1: Mô hình mạng xã hội Foloyu - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 1 Mô hình mạng xã hội Foloyu (Trang 16)
Hình 2: Kiến trúc client-server truyền thống - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 2 Kiến trúc client-server truyền thống (Trang 19)
Hình 5: Kiến trúc đặc trưng đầy đủ của hệ thống sử dụng memcached - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 5 Kiến trúc đặc trưng đầy đủ của hệ thống sử dụng memcached (Trang 21)
Hình 8: Mô hình thực thi MapReduce - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 8 Mô hình thực thi MapReduce (Trang 25)
Hình 9: Kiến trúc Web Service - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 9 Kiến trúc Web Service (Trang 28)
Hình 13: Kiến trúc client-server khi áp dụng Memcached - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 13 Kiến trúc client-server khi áp dụng Memcached (Trang 34)
Hình 14: Kiến trúc hệ thống - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 14 Kiến trúc hệ thống (Trang 38)
Hình 15: Usecase tổng quan hệ thống - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 15 Usecase tổng quan hệ thống (Trang 40)
Hình 16: Usecase Xem danh sách địa điểm - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 16 Usecase Xem danh sách địa điểm (Trang 41)
Hình 19: Usecase Xem loại địa điểm - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 19 Usecase Xem loại địa điểm (Trang 45)
Hình 20: Usecase Xem thông tin chi tiết địa điểm - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 20 Usecase Xem thông tin chi tiết địa điểm (Trang 46)
Hình 23: Usecase Cập nhật địa điểm - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 23 Usecase Cập nhật địa điểm (Trang 49)
Hình 24:Usecase Quản lý địa điểm - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 24 Usecase Quản lý địa điểm (Trang 50)
Hình 25:Usecase Quản lý tài nguyên liên quan đến địa điểm - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 25 Usecase Quản lý tài nguyên liên quan đến địa điểm (Trang 50)
Hình 32: Thiết kế giao diện trang chủ - phát triển dịch vụ thông tin địa điểm dễ mở rộng quy mô lớn
Hình 32 Thiết kế giao diện trang chủ (Trang 55)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w