Tải bản đầy đủ (.pdf) (11 trang)

Nghiên cứu xây dựng hệ thống nền IoT dựa trên mã nguồn mở (tt)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (654.98 KB, 11 trang )

1
MỞ ĐẦU

1
CHƯƠNG 1: GIỚI THIỆU VẤN ĐỀ NGHIÊN CỨU
1.1. Giới thiệu hệ thống nền IoT

Hệ thống nền IoT (IoT Platform) là một thành phần cốt lõi

1.1.1. Giới thiệu về IoT

trong kiến trúc tổng thể IoT. Hệ thống nền IoT cung cấp các công cụ

Khái niệm IoT:

phát triển các sản phẩm, ứng dụng IoT một cách thuận tiện và nhanh

Những ý tưởng ban đầu về Internet of Things (IoT) đã xuất

chóng. Hệ thống nền IoT đóng vai trò kết nối các thiết bị, cảm biến,

hiện ngay từ thời kỳ sơ khai của Internet, khi các nhà phát minh

IoT gateway và cho phép chúng trao đổi dữ liệu với nhau một cách

mong muốn kết nối tất cả mọi thứ qua một mạng lưới đồng nhất để

an toàn theo thời gian thực; quản lý số lượng lớn các thiết bị kết nối;

có thể điều khiển chúng để phục vụ cho mục đích của con người.


thu thập và phân tích dữ liệu; thiết lập khả năng liên động giữa các

Trong các tư liệu về IoT, người ta thường nhắc đến một chiếc

thiết bị; tạo các dịch vụ đám mây cho các ứng dụng IoT… Việc

máy bán nước giải khát tự động tại trường Đại học Carnegie Melon

nghiên cứu, lựa chọn, làm chủ giải pháp mã nguồn mở cho hệ thống

(Mỹ) vào đầu những năm 1980 như là một thiết bị đầu tiên mở màn

nền IoT đóng vai trò sống còn trong xây dựng, triển khai các ứng

cho xu hướng này. Chiếc máy được lập trình để có thể kết nối với

dụng IoT.

người điều khiển qua Internet, nhằm kiểm tra tình trạng của máy và

Đề tài tập trung nghiên cứu xây dựng một hệ thống nền IoT

bổ sung nước khi cần thiết mà không cần có sự tiếp xúc kiểm tra trực

dựa trên các giải pháp mã nguồn mở, với kết quả là hệ thống nền IoT

tiếp. IoT là thuật ngữ dùng để chỉ các đối tượng có thể được nhận biết

được triển khai thử nghiệm để xây dựng một ứng dụng IoT


cũng như chỉ sự tồn tại của chúng trong một kiến trúc mang tính kết

Nội dung nghiên cứu và bố cục của đề tài:
- Phần Mở Đầu

nối. Cụm từ này được đưa ra bởi Kevin Ashton vào năm 1999
Như vậy có thể hiểu Internet of Things là tất cả mọi thứ được

- Chương 1: Giới thiệu vấn đề nghiên cứu

kết nối với nhau qua mạng Internet, người dùng có thể kiểm soát mọi

- Chương 2: Thiết kế hệ thống nền IoT

đồ vật của mình qua mạng mà chỉ bằng một chiếc smartwatch nhỏ bé

- Chương 3: Thử nghiệm hệ thống nền cho bài toán giám

trên tay. Gần đây, Internet of Things còn bao gồm cả những giao tiếp

sát môi trường trồng trọt nông nghiệp.
- Kết luận

kiểu máy với máy (M2M), giúp hạn chế sự tác động của con người
trong sản xuất năng lượng hay các ngành công nghiệp nặng. Viễn
cảnh này đã dần trở thành hiện thực trên thực tế, với sự phát triển của
nhà thông minh, TV thông minh, tủ lạnh thông minh,… và cũng
không thể kể tới sự mở rộng không gian địa chỉ từ IPv4 lên IPv6 như
hiện nay.



2
Kiến trúc tổng quát của IoT

3
Gateway và cho phép chúng trao đổi dữ liệu với nhau một cách an
toàn theo thời gian thực, quản lý số lượng lớn các thiết bị kết nối, thu
thập và phân tích dữ liệu, tạo các ứng dụng đám mây cho các ứng
dụng IoT.
Thông qua bảng hiện thị trực quan (Dashboards), các API, các
công cụ dữ liệu và các thuật toán, một nền tảng (Platform) cho phép
các thành phần và các vùng mạng lưới nghiệp vụ để kết nối, theo dõi,
và giao tiếp với nhau với tốc độ cao hơn và linh hoạt hơn mà chúng
ta chưa từng được thấy.
1.2. Nghiên cứu tổng quan về yêu cầu đối với hệ thống nền
1.2.1. Quản lý thiết bị
Các thiết bị không phải lúc nào cũng hoạt động trong một tình
trạng ổn định. Chúng cần được liên tục quản lý, cấu hình lại, cập nhật

Hình 1.1: Kiến trúc IoT theo khuyến nghị ITU-T Y.2060

cũng như điểu khiển cài đặt.

Hình 1.1 mô tả kiến trúc IoT theo ITU-T Y.2060, bao gồm bốn

Kiến trúc quản lý thiết bị phải có 2 chiều (chiều nhận thông tin

lớp cũng như các khả năng quản lý và các khả năng bảo mật áp dụng

từ các thiết bị IoT và gửi các thông điệp điều khiển đến các thiết bị)


qua các lớp. Như ở trên chúng ta đã mô tả lớp thiết bị. Theo thuật

và linh hoạt để cho phép tất cả các thành phần trong mạng được kết

ngữ chức năng truyền thông, lớp thiết bị bao gồm các lớp vật lý và

nối với nhau, giám sát và có khả năng giao tiếp. Trong trường hợp bị

liên kết dữ liệu OSI

lỗi thời, hư hỏng hoặc vi phạm an ninh thì hệ thống quản lý của

- Lớp mạng

platform có thể loại bỏ hoặc đưa thiết bị đó vào danh sách cần phải

- Lớp hỗ trợ dịch vụ và ứng dụng

xem xét.

- Lớp ứng dụng

1.2.2. Khả năng kết nối hai chiều linh hoạt

- Lớp các khả năng quản lý:

Kết nối hai chiều giúp kiểm soát tốt hơn các sản phẩm, phân

1.1.2. Giới thiệu hệ thống nền IoT


phối các bản cập nhật liên tục, và đưa ra phản hồi nhanh hơn cho các

Hệ thống nền IoT (IoT Platform) là một thành phần cốt lõi

vấn đề cần phải xử lý.

trong kiến trúc tổng thể IoT. Hệ thống nền IoT cung cấp công cụ phát

Về góc độ người dùng thông thường, việc kết nối 2 chiều này

triển sản phẩm, ứng dụng IoT một cách thuận tiện, nhanh chóng và

là một điều tất yếu cần phải có. Các thiết bị IoT sẽ truyền thông tin

đáp ứng các yêu cầu đối với một hệ thống nền IoT cần phải có. Hệ

đến hệ thống nền để hiển thị trên các màn hình trực tuyến, giúp người

thống nền IoT đóng vai trò kết nối với các thiết bị, cảm biến, IoT

dùng quan sát và quản lý thiết bị của mình. Ngược lại, các thiết bị


4

5

IoT cũng có thể nhận được lệnh từ người dùng, giúp ra quyết định để


các kết nối đó được đặt lên hàng đầu. Các IoT Gateway và các thiết

cập nhật các trạng thái, cấu hình, cập nhật phần mềm.

bị Edge cần phải tinh vi và linh hoạt, đủ để thích ứng với các phương

1.2.3. Phân tích dữ liệu

pháp bảo mật mới. Lớp thiết bị nên hỗ trợ mức cao của mã hóa để

Dữ liệu sau khi được thu thập từ các thiết bị IoT, thì chúng cần

gửi cũng như nhận thông điệp. Hệ thống nền cần phải cung cấp các

được phân tích cũng như sàng lọc để đem lại những thứ giá trị cao

phương thức xác thực khi kết nối với các Gateway cũng như các thiết

trong việc quản lý cũng như giải quyết các vấn đề cấp bách cho các

bị khác. Có thể sử dụng các cơ chế đã được kiểm chứng như

thành phần trong hệ thống IoT. Một nền tảng IoT cần cung cấp đầy

TLS/SSL để mã hóa các thông tin trong truyền thông tin.

đủ các phương tiện phân tích, từ đó đưa ra các giá trị. Mục tiêu là để

Mỗi người dùng tham gia giải pháp IoT phải được chứng thực


nâng cao khả năng chuẩn đoán của hệ thống, tinh lọc các chức năng

bằng cách sử dụng cơ chế xác thực đa yếu tố. Nền tảng IoT nên hỗ

và giải quyết vấn đề, đồng thời có khả năng đáp ứng thời gian thực

trợ chứng thực và ủy quyền được tích hợp chặt chẽ với một nền tảng

với các tình huống khẩn cấp.

nhận dạng hiện có như một thư mục của công ty. Kiểm soát truy cập

Không phải tất cả các dữ liệu nhận được từ các thiết bị đều cần

dựa vào vai trò (RBAC) nên được sử dụng để thực hiện ủy quyền ở

được xử lý theo thời gian thực. Một giải pháp IoT cần phải tạo ra

cấp độ nhóm.

được sự tách biệt rõ ràng giữa những luồng dữ liệu nào cần được xử

1.3. Nghiên cứu, khảo sát, đánh giá các hệ thống nền IoT trên thị

lý thời gian thực và luồng dữ liệu nào sẽ được xử lý và có giá trị

trường

trong thời gian dài sau đó.


1.3.1. Kaa

1.2.4. Tính sẵn sàng, khả năng mở rộng và độ tin cậy

Kaa cho phép quản lý dữ liệu cho các đối tượng được kết nối

Đó là những vấn đề luôn được đặt ra với bất kỳ giải pháp công

và hạ tầng back-end bằng cách cung cấp server và các phần từ SDK

nghệ nào. Hệ thống nền phải được thiết kế theo cách tăng cường khả

đầu cuối. Các SDK được nhúng vào thiết bị được kết nối và thực hiện

năng thích ứng, độ linh hoạt và linh động của môi trường công nghệ

trao đổi dữ liệu song hướng với server. Các SDK của Kaa có khả

nhằm cung cấp khả năng tái cấu hình và tái sắp xếp để thích ứng

năng tích hợp với hầu hết các kiểu thiết bị hoặc microchip được kết

những thay đổi trong các mục tiêu và phương hướng nghiệp vụ một

nối

cách hiệu quả về chi phí và kịp thời.
Các công nghệ và giải pháp về phân tán và mở rộng luôn sẵn

Kaa server cung cấp tất cả các chức năng back-end cần thiết để

hoạt động trên quy mô rộng và trong các giải pháp IoT quan trọng.

sàng về các khía cạnh sau: Lưu trữ dữ liệu, năng lực tính toán

Nó điều khiển tất cả các truyền thông giữa các đối tượng được kết

1.2.5. An ninh và bảo mật dữ liệu

nối, bao gồm tính nhất quán và bảo mật dữ liệu, liên kết hoạt động

Đây là một vấn đề thách thức lớn nhất đối với một hệ thống
nền IoT. Hệ thống nền IoT kết nối tới hàng triệu các thiết bị cũng như
các IoT Gateway, vì vậy việc an toàn cũng như bảo mật dữ liệu của

của thiết bị và kết nối không bị thất bại.


6
Để tích hợp các thiết bị IoT với nhau, platform cung cấp các
thư viện gồm Intel Edison, beaglebone, RasberryPi… Kaa hỗ trợ các

7
lượng lớn dữ liệu từ các thiết bị vật lý, khởi sự các sự kiện hoặc các
cảnh báo hoặc thực hiện các phân tích phức tạp.

hệ điều hành Android, iOS, Linux, Ubuntu, Snappy và QNX

Các đặc tính chính của Nimbits platform gồm.

1.3.2. OpenIoT


- Tải các Nimbits server on chips, các server trên đám mây.

OpenIoT khả dụng như một Kit phát triển ảo, cung cấp giải

- Là một platform mã nguồn mở.

pháp đám mây toàn diện cho IoT, cho phép người sử dụng dễ dàng

- Làm thuận tiện việc khởi sự sự kiện và các cảnh báo.

kích hoạt, vận hành và nhận thông tin từ các đám mây cảm biến và

- Xử lý dữ liệu được gắn nhãn không gian và thời gian.

kết nối thông tin này với các dịch vụ Web mà không cần quan tâm

- Được xây dựng cung cấp cho Google App Engine và các hệ

đến các loại cảm biến khác nhau được sử dụng.
Hạ tầng OpenIoT cung cấp các phương thức để:
- Thu thập các xử lý dữ liệu từ hầu hết các cảm biến, bao gồm
các thiết bị vật lý, các thuật toán xử lý cảm biến, các thuật toán xử lý
phương tiện xã hội.
- Truyền tải dòng dữ liệu từ các cảm biến khác nhau với hạ
tầng điện toán đám mây.

thống Linux để phát triển.
- Tương thích hầu hết các J2EE server
1.3.4 Eclipse IoT

Eclipse Smart Home (ESH) là một platform mã nguồn mở, bao
gồm mã chương trình và các cấu trúc dữ liệu cần thiết trong server tự
động ngôi nhà. ESH được phát triển bởi cộng đồng Eclipse Java.
ESH dựa trên Java CSGI và chạy trên các thực thi Java có khả năng

- Khám phá/truy vấn động các cảm biến và dữ liệu của chúng.

như vậy. Nó tập trung chủ yếu vào các môi trường đồng nhất, tức là

- Soạn và phân phát các dịch vụ IoT bao gồm dữ liệu từ nhiều

các giải pháp liên quan đến việc tích hợp các giao thức và các tiêu

cảm biến.
- Ảo hoá dữ liệu IoT dựa trên các mashup phù hợp (các biểu
đồ, đồ thị, bản đồ…).
- Tối ưu hoá các tài nguyên trong OpenIoT middleware và hạ

chuẩn khác nhau. Mục đích của ESH là cung cấp truy nhập đồng nhất
tới các thiết bị và thông tin và làm thuận tiện các thể loại tương tác
khác nhau với chúng.
Các nhà phát triển có thể dễ dàng xây dựng giải pháp ngôi nhà

tầng điện toán đám mây.

thông minh riêng lẻ bằng cách bổ sung các mở rộng của chính mình

1.3.3. Nimbits

vào framework này – kết quả có thể được triển khai trên các thiết bị


Nimbits là một platform mã nguồn mở được xây dựng dựa trên

nhúng, có thể chạy JVM như Raspberry Pi.

kiến trúc điện toán đám mây PaaS, có thể tài về từ Raspberry Pi, Web

Eclipse Smart Home là một framework để xây dựng các giải

server, Amazone EC2, hoặc Google App Engine. Platform được sử

pháp thông minh với việc tích hợp các giao thức hoặc các tiêu chuẩn

dụng để phát triển các giải pháp phần cứng và phần mềm có thể kết

khác nhau. ESH được sử dụng như là cơ sở của openHAB và

nối tới đám mây hoặc tới nhau và cho phép logging và nhận được

QIVICON bởi Deutsche Telecom.


8

9

ESH là một platform mã nguồn mở với hơn 2000 công cụ, ứng

- Sự thực hiện cụ thể API được thực hiện bởi Bộ cho phép


dụng, dự án… khả dụng trên thị trường dưới các kiểu giấy phép khác

tổng quát (GE) có thể hỗ trợ nhiều sơ đồ xác thực (Oauth, Basic

nhau.

Auth, Token) được xác định bởi nhà cung cấp cụ thể thực hiện GE.

1.3.5 OpenRemote
OpenRemote là một platform tích hợp phần mềm mã nguồn
mở cho tự động hoá toà nhà thương mại và dân cư. OpenRemote là
dự án mã nguồn mở với mục tiêu là khắc phục các thách thức của
việc tích hợp giữa nhiều giao thức và các giải pháp khác nhau khả
dụng cho tự động hoá ngôi nhà, và cung cấp các công cụ ảo hoá. Các
đặc tính chính của OpenRemote là:
- Tích hợp nhiều giao thức khác nhau.
- Tuỳ biến các giải pháp để phù hợp với nhu cầu.
- Từ các tài khoản đơn lẻ đến các giải pháp có thương hiệu đầy
đủ.
- Các công cụ thiết kế dựa trên đám mây.
- Sử dụng các công cụ thiết kế dựa trên đám mây của
OpenRemote để phát triển các giải pháp tuỳ biến toàn diện, nâng cấp
được thực hiện hợp lý.
1.3.6 FIWARE
Platform cung cấp các khả năng đám mây dựa trên OpenStack
và tập các công cụ và các thư viện được gọi là Generic Enablers
(Ges) với các đặc tả và giao diện công cộng và nguồn mở. Các
FIWARE GE được phân phối ở các chương khác nhau và cung cấp
các khả năng khác nhau.
Các giao thức IoT và các API:

- Mỗi yêu cầu của HTTP trong một FIWARE RESTful API có
thể yêu cầu bao gồm các uỷ nhiệm xác thực cụ thể.

- Việc biể diễn tài nguyên được phát giữa client và server bằng
cách sử dụng giao thức HTTP 1.1, được định nghĩa bởi IETF RFC2616.
- Các FIWARE RESTful API có thể hỗ trợ XML hoặc JSON
như là định dạng biểu diễn cho các tham số yêu cầu và đáp ứng.


10
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG NỀN IoT

11
cùng nhau một cách hiệu quả và có khả năng mở rộng thông qua hỗ
trợ cơ chế tích hợp ứng dụng.

2.1. Yêu cầu kiến trúc đối với hệ thống nền IoT:

Các dịch vụ bảo mật: Thành phần này cung cấp các giải pháp

a. Yêu cầu về tích hợp ứng dụng IoT

nhận diện và bảo mật đối với việc chứng thực, cấp phép và quản lý

b. Yêu cầu về các dịch vụ kết nối dữ liệu

an toàn các ứng dụng và quy trình nghiệp vụ.

c. Yêu cầu về tích hợp dữ liệu IoT


Đăng ký dịch vụ: Thành phần này cho phép công bố, quản lý

d. Yêu cầu về bảo mật

các dịch vụ tại nơi chúng có thể được tìm kiếm và sử dụng một cách

e. Yêu cầu về khả năng mở rộng và độ sẵn sàng

an toàn.

f. Yêu cầu về khả năng thích ứng, độ linh hoạt và linh động
2.2. Thiết kế kiến trúc hệ thống nền IoT
Hệ thống nền IoT đề xuất được được hiện thực hóa theo hướng
tiếp cận hướng dịch vụ dưới dạng Hạ tầng dịch vụ IoT.
Các dịch vụ kết nối IoT: Thành phần này cung cấp các giao
thức dữ liệu chuẩn hóa phục vụ truyền thông trao đổi dữ liệu với các
thành phần kết nối biên IoT.
Các dịch vụ thông tin/dữ liệu: Các dịch vụ thông tin cung cấp
phương pháp nhất quán trong biểu diễn, truy cập, duy trì, quản lý và
phân tích dữ liệu có cấu trúc và các nội dung (dữ liệu phi cấu trúc) từ
các nguồn thông tin không đồng nhất.
Các dịch vụ nghiệp vụ IoT: Thành phần này cho phép từ các
hoạt động nghiệp vụ cơ bản tạo ra các dịch vụ lõi hợp chuẩn có thể
được chia sẻ và sử dụng bởi các ứng dụng trong hoặc ngoài tổ chức.
Các dịch vụ quy trình nghiệp vụ: Thành phần này cho phép
tạo ra, triển khai và quản lý các quy trình nghiệp vụ giao nhau theo
theo một cách tiêu chuẩn.
Hạ tầng tích hợp: Thành phần này cho phép các ứng dụng IoT
khác nhau được xây dựng bởi các công nghệ khác nhau hoạt động


Các dịch vụ chung: Các dịch vụ này là các dịch vụ tiện ích
thường được sử dụng trong chung cho các ứng dụng IoT
2.3. Một số vấn đề và giải pháp trong hiện thực hóa kiến trúc hệ
thống IoT
Thực tế khi hiện thực hóa hạ tầng dịch vụ IoT trong kiến trúc
đề xuất cho thấy một số khó khăn cơ bản: 1) đảm bảo thu thập dữ liệu
đồng thời từ số lượng lớn các thiết bị IoT một cách tin cậy; 2) xử lý
dữ liệu lớn cho bài toán đòi hỏi xử lý luồng dữ liệu chuỗi thời gian
theo thời gian thực; 3) cơ chế phát hiện lỗi và hồi phục đối với các
thành phần thu thập và xử lý dữ liệu IoT.
Hệ thống truyền thông điệp phân tán (Distributed Messaging
System - DMS) được thiết kế như là một hệ thống phân tán nhằm
đảm bảo khả năng mở rộng hoạt động với thông lượng lớn theo mô
hình publish/subscribe. Một giao thức phổ biến trong ứng dụng IoT
hoạt động theo mô hình publish/subscribe là MQTT. Hệ thống hỗ trợ
nhiều thành phần đăng kỹ và tự động cân bằng tải khi xay ra lỗi.
Trong hệ thống DMS, một luồng các thông điệp cùng loại được định
nghĩa là một chủ đề (topic) ở đó các thông điệp được xuất bản đến.
Một Publisher là một thực thể thực hiện xuất bản thông điệp đến một
chủ đề nào đó. Một Consumer có thể đăng ký một hoặc nhiều chủ đề
và sử dụng các thông điệp được xuất bản bằng cách lấy dữ liệu từ


12

13

phân cụm DMS. Một phân cụm DMS bao gồm nhiều thể hiện DMS
chạy song song.


Hệ thống điều phối phân tán (Distributed Coordination System
– DCS) đóng vai trò đàm bảo cân bằng tải và khả năng phát hiện lỗi,

Nhằm mục đích cân bằng tải, mỗi chủ đề được chia thành

khôi phục lỗi nhằm đảm bảo tăng độ tin cậy của hệ thống. Hệ thống

nhiều phân vùng và mỗi thể hiện DMS xử lý một hoặc nhiều phân

DCS sẽ theo dõi liên tục các thể hiện trong các phân cụm DMS hoặc

vùng của một chủ đề. Do đó nhiều Producer và Consumer có thể

RDPS để phát hiện thể hiện nào bị lỗi hoặc các thể hiện mới và thông

đồng thời xuất bản và sử dụng dữ liệu. Trong ứng dụng IoT, các thiết

báo đến các thành phần sử dụng các thể hiện này để thực hiện các xử

bị đầu cuối IoT hoặc ứng dụng kết nối biên chạy trên IoT gateway có

lý phù hợp như khôi phục từ lỗi, dịch chuyển kết nối đến các thể hiện

thể đóng vai trò Producer để gửi dữ liệu lên ứng dụng IoT chạy trên

khác.

hệ thống nền hoặc đóng va trò Consumer để nhận dữ liệu từ ứng
dụng IoT.


Trong mô hình mô hình triển khai DCS với DMS này các
Producer và Consumer được hệ thống DCS gửi thông báo về sự xuất

Hệ thống xử lý dữ liệu lớn thời gian thực (Realtime Bigdata

hiện của một thể hiện DMS hoặc về sự cố gây lỗi của một thể hiện

Processing System– RBPS) thực hiện xử lý tức thời luồng dữ liệu lớn

DCS. Khi nhận được các thông báo từ hệ thống DCS, các Producer

từ các thiết bị IoT được thu nhận qua hệ thống DMS. Đối với ứng

và Consumer ra quyết định bắt đầu điều phối hoạt động đến một thể

dụng IoT, dữ liệu hướng luồng là một nhóm liên tục các bản ghi dữ

hiện DMS khác.

liệu được tạo từ các thiết bị IoT. Xử lý dữ liệu hướng luồng theo thời

Chương này trình bày về một hướng tiếp cận trong xây dựng

gian thực đóng vai trò quan trọng trong các ứng dụng như bản tin

và hiện thức hóa kiến trúc hệ thống IoT. Một số vấn đề và giải pháp

trực tiếp, hệ thống tư vấn thời gian thực hoặc các hệ thống chẩn đoán

trong hiện thực hóa kiến trúc IoT như vấn đề thu thập dữ liệu lớn và


lỗi tức thời. Hệ thống RBPS hoạt động theo cơ chế chia luồng dữ liệu

vấn đề xử lý dữ liệu lớn theo thời gian thực đã được thảo luận. Một

thành các khoảng có độ dài cho trước và thực hiện các hoạt động xử

số vấn đề còn để ngỏ hướng nghiên cứu triển khai như vấn để về bảo

lý như map, reduce, join… và lưu phần kết quả vào cơ sơ dữ liệu để

mật, các mô hình dịch vụ. Vấn đề xử lý thời gian thực đề cập trong

thực hiện các phân tích sâu hơn hoặc tạo các báo cáo, bảng tin trực

bài báo này chỉ giới hạn ở việc tiền xử lý dữ liệu lớn với các tính toán

tiếp hoặc gửi các cảnh báo dựa trên sự kiện.

tất định. Các vấn đề phân tích dữ liệu chuyên sâu dựa trên các kỹ

Thành phần lưu trữ dữ liệu có vai trò lưu trữ dữ liệu lớn sử
dụng hệ thống tệp tin HDFS. Thành phần này làm việc tương thích
Hadoop. Giao diện lập trình ứng dụng cung cấp công cụ cho các lập
trình viên trong phát triển các module xử lý phân tán. Hệ thống
RBPS có thể được triển khai dưới dạng ứng dụng độc lập hoặc dưới
dạng mô hình tính toán phân tán với các phân cụm RBPS.

thuật học máy hay khai phá dữ liệu chưa được xem xét trong nghiên
cứu này.



14
CHƯƠNG 3: THỬ NGHIỆM HỆ THỐNG NỀN CHO
BÀI TOÁN GIÁM SÁT MÔI TRƯỜNG
TRỒNG TRỌT NÔNG NGHIỆP

15
3.2. Thiết kế giải pháp hiện thực hóa hệ thống nền IoT trên nền
tảng ảo hóa
Phần này chúng ta sẽ thiết kế giải pháp triển khai cụ của hệ
thống nền IoT, như đã trình bày ở trên hệ thống nền chúng ta sẽ xây

3.1. Mô tả bài toán thử nghiệm
Luận văn thử nghiệm kịch bản giám sát môi trường sinh
trưởng của cây trồng từ xa với 3 tham số giám sát cơ bản: nhiệt độ,

dựng sẽ có những thành phần sau:
- Sử dụng giao thức MQTT để giao tiếp với các thiết bị IoT
hoặc các IoT Gateway.

độ ẩm đất và ánh sáng. Đây là 3 tham số cơ bản ảnh hưởng đến quá

- Hệ thống truyền thông điệp phân tán.

trình sinh trưởng của cây trồng cả trong môi trường nuôi cấy mô

- Hệ thống điều phối phân tán.

trong nhà lẫn môi trường ngoài trời. Mục đích của thử nghiệm kịch


- Hệ thống xử lý dữ liệu lớn theo thời gian thực.

bản để kiểm thử khả năng hoạt động tùy biến của IoT Platform. Các

Đối với mô hình triển khai này chúng ta có các thành phần mã

phần sau sẽ hiện thực hóa hệ thống IoT bao gồm kiến trúc hệ thống
nền được thiết kế ở chương 2. Mô hình tổng quan hệ thống như sau:

nguồn mở đáp ứng như sau:
- MQTT Server: Mosquitto
- Hệ thống xử lý phân tán: Apache Kafka
- Hệ thống lưu trữ và xử lý dữ liệu lớn: Apache Spark
3.2.1 Eclipse Mosquitto
Mosquitto là một dự án của iot.eclipse.org chuyên cung cấp
các công cụ, giải pháp mã nguồn mở để xây dựng hệ thống IoT.
Mosquitto sẽ nhận thông tin từ những IoT Gateway hoặc các
thiết bị IoT để nhận thông điệp và publish lên một topic nào đó của
Mosquitto server. Các MQTT Client sẽ subscribe topic để nhận các
thông tin gửi vào topic đó.
3.2.2 Apache Kafka
Apache Kafka là hệ thống truyền thông điệp phân tán, độ tin
cậy cao, dễ dàng mở rộng và có thông lượng cao. Kafka cung cấp cơ
chế offset (có thể hiểu như tương tự như chỉ số của một mảng) để lấy

Hình 3.1. Mô hình tổng quan hệ thống thử nghiệm

thông điệp một cách linh hoạt, cho phép các ứng dụng xử lý có thể xử
lý lại dữ liệu nếu việc xử lý trước đó bị lỗi. Ngoài ra, cơ chế “đăng

kí” theo dõi cho phép việc lấy thông điệp ra gần như tức thời ngay


16

17

khi dữ liệu đi vào hàng đợi. Kafka được thiết kế hỗ trợ tốt cho việc

nhiệm vụ đẩy dữ liệu vào một hoặc nhiều topic. Người dùng có thể

thu thập dữ liệu thời gian thực.

quyết định liệu những thông điệp (mỗi dòng của dữ liệu) nào sẽ cùng

Apache Kafka là hệ thống lưu trữ thông điệp được phát triển
tại LinkedIn. Kafka có những đặc điểm sau đây :
- Tốc độ nhanh
- Khả năng mở rộng

thuộc vào một partition thông qua một chuỗi khóa đính kèm với
thông điệp. Nếu không producer sẽ gán một khóa ngẫu nhiên và
quyết định đích đến của thông điệp dựa trên giá trị băm của khóa.
Consumer: sẽ đọc dữ liệu từ broker. Kafka là hệ thống sử

- Độ tin cậy

dụng mô hình truyền thông public-subscribe nên mỗi một topic có

Các thành phần chính của Kafka như sau:


thể đc xử lý bởi nhiều consumer khác nhau, miễn là consumer đấy

Topic: thông thường các dữ liệu liên quan hoặc tương tự được

subcribe topic đấy. Consumer có nhiệm vụ kéo dữ liệu từ một topic

nhóm trong các chủ đề. Mỗi chủ đề có thể được coi là một nguồn dữ

chỉ định về.

liệu riêng biệt. Dữ liệu được truyền trong kafka theo topic, khi muốn

Trong mô hình triển khai của IoT Platform mà ta xây dựng,

truyền dữ liệu khác nhau hay truyền dữ liệu cho các ứng dụng khác

Kafka sẽ nhận thông điệp từ MQTT Server (Mosquitto) để xử lý

nhau ta sẽ tạo ra các topic.

phân tán. Vì vậy để kết nối Kafka và MQTT Server chúng ta sẽ sử

Mỗi topic sẽ có tên do người dùng đặt và có thể coi mỗi topic

dụng một Connecter theo mô hình sau:

như là một hàng đợi của thông điệp (mỗi dòng dữ liệu). Các thông
điệp mới do một hoặc nhiều producer đẩy vào, sẽ luôn luôn được
thêm vào cuối hàng đợi.

Partition: mỗi topic sẽ được phân chia thành nhiều partition.
Partition là nơi lưu trữ dữ liệu cho 1 topic, trên mỗi partition, dữ liệu
sẽ được lưu theo một thứ tự bất biến và được gán cho một id gọi là
offset, được hiểu như chỉ số của một mảng. Offset trên mỗi partition
là độc lâp. Một partition có thể được sao chép trên hiều máy khác

Hình 3.7 Mô hình Apache Kafka kết nối tới

nhau trong một cụm Kafka

nguồn là MQTT server

Broker: Kafka chạy trên một cụm bao gồm một hoặc nhiều

Các thông điệp được publish đến một topic trên MQTT Server

máy (node), mỗi máy được gọi là một broker. Broker là nơi lưu trữ

sẽ được mapping tới một topic trên Kafka server, từ đó khi một

các partition, một broker có thể lưu trữ nhiều partition.

Consumer subscribe topic này của Kafka server cũng sẽ đọc được

Producer: sẽ viết dữ liệu tới broker. Cụ thể hơn, producer có
nhiệm vụ chọn message nào để đưa vào topic nào, nhiệm vụ này rất
quan trọng giúp cho Kafka có khả năng mở rộng tốt. Producer có

thông tin các thông tin mà được publish tới một topic trên MQTT
server ban đầu.



18

19

3.2.2 Apache Spark
Apache Spark là một open source cluster computing
framework được phát triển sơ khởi vào năm 2009 bởi AMPLab tại
đại học California. Sau này, Spark đã được trao cho Apache Software
Foundation vào năm 2013 và được phát triển cho đến nay. Nó cho
phép xây dựng các mô hình dự đoán nhanh chóng với việc tính toán
được thực hiện trên một nhóm các máy tính, có có thể tính toán cùng
lúc trên toàn bộ tập dữ liệu mà không cần phải trích xuất mẫu tính
toán thử nghiệm.
Thành phần trung của Spark là Spark Core: cung cấp những
chức năng cơ bản nhất của Spark như lập lịch cho các tác vụ, quản lý
bộ nhớ, fault recovery, tương tác với các hệ thống lưu trữ…Đặc biệt,

Hình 3.9 Mô hình tổng quan của Spark Streaming
Spark streaming xử lý dữ liệu với các tính năng cấp cao như
map, reduce, join, và window. Sau khi xử lý, các dữ liệu sẽ được lưu
trữ vào các hệ thống như HDFS, HBase, Solr, và kết nối đến các hệ
thống hiển thị trên giao diện quả lý hoặc được điều khiển đến một hệ
thống Kafka khác cho việc xử lý tiếp theo.

Spark Core cung cấp API để định nghĩa RDD (Resilient Distributed
DataSet) là tập hợp của các item được phân tán trên các node của
cluster và có thể được xử lý song song.
Spark có thể chạy trên nhiều loại Cluster Managers như

Hadoop YARN, Apache Mesos hoặc trên chính cluster manager được
cung cấp bởi Spark được gọi là Standalone Scheduler.

Hình 3.10 Mô hình xử lý luồng dữ liệu của Spark Streaming
Spark Streaming nhận dữ luồng dữ liệu trực tiếp từ Kafka, sau
đó nó sẽ chia nhỏ luồng dữ liệu thành các batch, sau đó các batch

- Spark SQL cho phép truy vấn dữ liệu cấu trúc qua các câu

được sử lý dữ liệu bởi Spark Engine và đưa ra kết quả của dữ liệu đã

lệnh SQL. Spark SQL có thể thao tác với nhiều nguồn dữ liệu như

qua xử lý với các batch tương ứng. Mỗi batch được xem như là một

Hive tables, Parquet, và JSON.

tập các RDD (Resilient Distributed Dataset) và một dãy các RDD thì

- Spark Streaming cung cấp API để dễ dàng xử lý dữ liệu

Spark gọi đó là DStream.

stream
- MLlib Cung cấp rất nhiều thuật toán của học máy như:
classification, regression, clustering, collaborative filtering…
- GraphX là thư viện để xử lý đồ thị.
Đối với hệ thống nền IoT, Spark Streaming đóng vai trò quan
trọng trong việc xử lý luồng dữ liệu và lưu trữ dữ liệu.


Hình 3.11 Mô hình của một Dstream


20

21

Trong mỗi RDD là dữ liệu tuần tự được đọc từ một khoảng

KẾT LUẬN

thời gian nhất định, và được cấu hình trong Spark Streaming. Các

Nối tiếp sự thành công của các cuộc cách mạng công nghiệp

thao tác xử lý bất kỳ đối với luồng dữ liệu DStream được chuyển

trước đây, chúng ta đang bước vào thời kỳ cách mạng công nghiệp

thành các thao tác đối với mỗi RDD.

mới mang tên : "Cách mạng công nghiệp lần thứ 4". Và IoT được coi
là một trong những yếu tố cốt lõi của kỹ thuật số trong cách mạng
công nghiệp lần thứ 4 này.
Luận văn đã tập trung nghiên cứu và đưa ra giải pháp thiết kế
và xây dựng một hệ thống nền IoT – Thành phần cốt lõi của kiến trúc
tổng thể IoT, đáp ứng những yêu cầu cần thiết của một hệ thống. Và
đã thử nghiệm chạy thử thành công với kịch bản áp dụng với nông

Hình 3.12 Cách xử lí dữ liệu trên Dstream


nghiệp thông minh. Từ đó giúp chúng ta có cơ sở để có thể dễ dàng

Dữ liệu sau khi xử lý sẽ được trả lại bằng một Dstream mới với

xây dựng cũng như triển khai một ứng dựng IoT một cách nhanh

giá trị của mỗi RDD là kết quả đã được xử lý tương ứng. Như hình

chóng.

24 là một ví dụ minh họa cho chúng ta thấy rằng dữ liệu sau khi xử lý

Tùy với từng ứng dụng IoT cụ thể, ta có thể mở rộng hệ thống

sẽ được lưu tại một DStream mới với các RDD là các kết quả xử lý

nền này phù hợp theo yêu cầu ứng dụng. Do có những hạn chế nhất

của DStream ban đầu. Từ đó chúng ta sẽ sử dụng DStream mới này

định về mặt thời gian của luận văn, thì luận văn mới đưa ra một kịch

để truyền lên màn hình điều khiển trực tiếp (DashBoard) hoặc lưu trữ

bản thử nghiệm chạy thử hệ thống nền với những tính năng cơ bản

xuống dưới cơ sở dữ liệu tùy vào nghiệp vụ cũng như yêu cầu của

trong nông nghiệp thông minh. Nghiên cứu tiếp theo đó là sẽ tích hợp


từng hệ thống IoT.

thêm vào hệ thống nền những thành phần mới giúp nâng cao hiệu

3.3 Cài đặt, cấu hình tùy biến các thành phần của hệ thống nền

năng, khả năng mở rộng cũng như khả năng bảo mật của hệ thống

IoT

nền.
Máy chủ cài trên nền tảng IoT chạy hệ điều hành Ubuntu 64-

bit. Ở phàn này sẽ là các bước cài đặt các thành phần của IoT
Platform bao gồm:
- Mosquitto Server
- Apache Kafka
- Apache Spark.
3.4 Kết luận:



×