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: