Thử nghiệm các chức năng chính của hệ thống

Một phần của tài liệu Nghiên cứu và phát triển giải pháp tự động triển khai giao thức đồng thuận cho mạng chuỗi khối riêng tư trong nền tảng v chain (Trang 49)

Với kiến trúc hệ thống thử nghiệm tại Hình 4.1, luận văn sẽ trình bày một số kịch bản kiểm thử tại bảng Bảng 4.1 nhằm kiểm tra các chức năng chính của hệ thống liên quan đến việc tạo, xoá các mạng chuỗi khối và giao thức đồng thuận tương ứng có hoạt động chính xác hay không.

50

Bảng 4.1 Kịch bản và kết quả thử nghiệm các chức năng chính của hệ thống

STT Kịch bản Kết quả mong muốn Kết quả thực tế

1

Triển khai mạng Hyperledger Fabric với giao thức đồng thuận PBFT

Mạng chuỗi khối và giao thức đồng thuận tương ứng được triển khai

Đạt

2

Triển khai mạng Hyperledger Fabric với giao thức đồng thuận RAFT

Mạng chuỗi khối và giao thức đồng thuận tương ứng được triển khai

Đạt

3

Triển khai mạng Hyperledger Sawtooth với giao thức đồng thuận PBFT

Mạng chuỗi khối và giao thức đồng thuận tương ứng được triển khai

Đạt

4

Triển khai mạng Hyperledger Sawtooth với giao thức đồng thuận PoET

Mạng chuỗi khối và giao thức đồng thuận tương ứng được triển khai

Đạt

5 Xoá mạng chuỗi khối đã được triển khai

Mạng chuỗi khối và các tài

nguyên được giải phóng Đạt

Dưới đây là các bước người dùng sử dụng hệ thống thử nghiệm để tạo một mạng chuỗi khối và giao thức đồng thuận tương ứng.

51

Hình 4.3 Màn hình lựa chọn giao thức đồng thuận và mạng chuỗi khối

Hình 4.4 Màn hình cấu hình thông tin các nút trong chuỗi khối và hạ tầng triển khai

52

Hình 4.5 Màn hình kết thúc bước cài đặt

53

Hình 4.7 Màn hình kiểm tra trạng thái hạ tầng trên Digital Ocean

Hình 4.8 Màn hình kiểm tra các nút chuỗi khối trên Kubernetes

4.3 Thử nghiệm tốc độ xử lý giao dịch

Mục tiêu của thử nghiệm này để đánh giá tốc độ xử lý các giao dịch của mạng chuỗi khối và giao thức đồng thuận được triển khai có đáp ứng được nhu cầu về tốc độ xử lý giao dịch của các ứng dụng phi tập trung hay không. Hệ thống yêu cầu phải đáp ứng tối thiểu 15 giao dịch/giây với các ứng dụng phi tập trung liên quan đến lĩnh vực quản lý đất đai của Trung tâm Thông tin Lưu trữ và Thư viện

54 tài nguyên môi trường quốc gia, Cục Công nghệ thông tin và Dữ liệu tài nguyên môi trường, Bộ Tài nguyên và Môi trường.

Các bước tiến hành như sau:

 Xây dựng và triển khai một số ứng dụng phi tập trung (DAPP) trên mạng chuỗi khối được tự động triển khai bằng hệ thống đề xuất tại Hình 4.1. Ta có thể kể đến một số các ứng dụng như: dịch vụ công quản lý chứng chỉ định giá đất (dvcchungchidgd), dịch vụ công quản lý hồ sơ (dvchoso), dịch vụ công quản lý quá trình xử lý hồ sơ (dvcquatrinhxulyhs), dịch vụ quản lý tài liệu (dvctailieu), dịch vụ quản lý giấy chứng giấy (dvcttgiaychungnhan).

 Phát triển một module để đánh giá tốc độ xử lý giao dịch của mạng chuỗi khối (Benchmark Engine) dựa trên công cụ wrk [25]. Benchmark Engine sẽ tạo nhiều luồng xử lý, mô tả quá trình người dùng tương tác với các ứng dụng phi tập trung. Từ đó tính toán ra tốc độ xử lý của nền tảng vừa triển khai. Minh hoạ tại Hình 4.9.

55

Bảng 4.2 Testcase TC01-01

Testcase ID TC01-01

Tác vụ Thêm mới

Mô tả Thực hiện kiểm thử tác vụ Thêm mới và đo số giao dịch được xử lý trên một đơn vị thời gian

Dữ liệu kiểm thử { “MaHoSo”: “mahoso01”, “SoChungChi”: “2020”,

“NgayCoHieuLuc”: “01/01/2020”, “NgayHetHieuLuc”: “31/12/2020”, “CoQuanCap”: “UBND Ha Noi”, “ChuSoHuu”: “Nguyen Van A”, “QuocTich”: “VietNam”,

“SoCMND”: “012345678”,

“NgayCapCMND”: “01/01/1978”, “NguoiKy”: “Tran Van B”,

“NgaySinh”: “01/01/1960”, “ChungChi”: chungchidgd.doc “CreatedDate”: “09/09/2020”, “CreatedBy”: “UserTest”, “ModifitedDate”: “09/09/2020”, “ModifitedBy”: “UserTest” } Điều kiện tiền đề Xác thực người dùng thành công

Các bước thực hiện Bước 1: Tạo người dùng và xác thực người dùng Bước 2: Chạy mô-đun và kiểm thử với dữ liệu kiểm thử Bước 3: Lưu kết quả kiểm thử

Kết quả mong muốn 15 giao dịch được xử lý trên 1 giây

Kết quả thực tế ●

TPS: 15.28 giao dịch/giây

Tổng số yêu cầu: 3669 yêu cầu

● Lỗi kết nối: 0

● Lỗi quá thời gian chờ: 0

56

Bảng 4.3 Testcase TC01-02

Testcase ID TC01-02

Tác vụ Cập nhật

Mô tả Thực hiện kiểm thử tác vụ Cập nhật và đo số giao dịch được xử lý trên một đơn vị thời gian

Dữ liệu kiểm thử { “NgayCoHieuLuc”: “01/01/2020”, “NgayHetHieuLuc”: “31/12/2020”, “ChungChi”: dvcchungchidgd.doc “ModifitedDate”: “09/09/2020”, “ModifitedBy”: “UserTest”, “ID”: “3f3492af-12d3-49d3-a649- ed585d47fb76” }

Điều kiện tiền đề Đã xác thực người dùng

Các bước thực hiện Bước 1: Tạo người dùng và xác thực người dùng

Bước 2: Chạy mô-đun và kiểm thử với dữ liệu kiểm thử Bước 3: Lưu kết quả kiểm thử

Kết quả mong muốn 15 giao dịch được xử lý trên 1 giây Kết quả thực tế ●

TPS: 26.02 giao dịch/giây

Tổng số yêu cầu: 6248 yêu cầu

● Lỗi kết nối: 0

● Lỗi quá thời gian chờ: 0

57

Bảng 4.4 Testcase TC01-03

Testcase ID TC01-03

Tác vụ Cập nhật tất cả

Mô tả Thực hiện kiểm thử tác vụ Cập nhật tất cả và đo số giao dịch được xử lý trên một đơn vị thời gian

Dữ liệu kiểm thử { “MaHoSo”: “mahoso01”, “SoChungChi”: “2020”,

“NgayCoHieuLuc”: “01/01/2020”, “NgayHetHieuLuc”: “31/12/2020”, “CoQuanCap”: “UBND Ha Noi”, “ChuSoHuu”: “Nguyen Van A”, “QuocTich”: “VietNam”,

“SoCMND”: “012345678”,

“NgayCapCMND”: “01/01/1978”, “NguoiKy”: “Tran Van B”,

“NgaySinh”: “01/01/1960”, “ChungChi”: dvcchungchidgd.doc “CreatedDate”: “09/09/2020”, “CreatedBy”: “UserTest”, “ModifitedDate”: “09/09/2020”, “ModifitedBy”: “UserTest”, “SoChungChiCu”: “2019”, “ID”:“3f3492af-12d3-49d3-a649-ed585d47fb76”} Điều kiện tiền đề Đã xác thực người dùng

Các bước thực hiện Bước 1: Tạo người dùng và xác thực người dùng

Bước 2: Chạy mô-đun và kiểm thử với dữ liệu kiểm thử Bước 3: Lưu kết quả kiểm thử

Kết quả mong muốn 15 giao dịch được xử lý trên 1 giây Kết quả thực tế

TPS: 25.52 giao dịch/giây

Tổng số yêu cầu: 6128 yêu cầu

● Lỗi kết nối: 0

58

Bảng 4.5 Testcase TC01-04

Testcase ID TC01-04

Tác vụ Lấy theo mã hồ sơ

Mô tả Thực hiện kiểm thử tác vụ Lấy theo mã hồ sơ và đo số giao dịch được xử lý trên một đơn vị thời gian

Dữ liệu kiểm thử {“MaHoSo”: “mahoso01”} Điều kiện tiền đề Đã xác thực người dùng

Các bước thực hiện Bước 1: Tạo người dùng và xác thực người dùng

Bước 2: Chạy mô-đun và kiểm thử với dữ liệu kiểm thử Bước 3: Lưu kết quả kiểm thử

Kết quả mong muốn 15 giao dịch được xử lý trên 1 giây Kết quả thực tế

TPS: 40.72 giao dịch/giây

Tổng số yêu cầu: 9775 yêu cầu

● Lỗi kết nối: 0

● Lỗi quá thời gian chờ: 0

Bảng 4.6 Testcase TC01-05

Testcase ID TC01-05

Tác vụ Lấy theo số chứng chỉ

Mô tả Thực hiện kiểm thử tác vụ Lấy theo số chứng chỉ và đo số giao dịch được xử lý trên một đơn vị thời gian Dữ liệu kiểm thử {“SoChungChi”: “2020”}

Điều kiện tiền đề Đã xác thực người dùng

Các bước thực hiện Bước 1: Tạo người dùng và xác thực người dùng Bước 2: Chạy mô-đun và kiểm thử với dữ liệu kiểm thử Bước 3: Lưu kết quả kiểm thử

Kết quả mong muốn 15 giao dịch được xử lý trên 1 giây Kết quả thực tế

TPS: 43.69 giao dịch/giây

Tổng số yêu cầu: 10490 yêu cầu

● Lỗi kết nối: 0

● Lỗi quá thời gian chờ: 0

59

Bảng 4.7 Testcase TC01-06

Testcase ID TC01-06

Tác vụ Lấy theo số chứng chỉ cũ

Mô tả Kiểm thử tác vụ Lấy theo số chứng chỉ cũ và đo đạc Dữ liệu kiểm thử {“SoChungChiCu”: “2019”}

Điều kiện tiền đề Đã xác thực người dùng

Các bước thực hiện Bước 1: Tạo người dùng và xác thực người dùng Bước 2: Chạy mô-đun và kiểm thử với dữ liệu kiểm thử Bước 3: Lưu kết quả kiểm thử

Kết quả mong muốn 15 giao dịch được xử lý trên 1 giây Kết quả thực tế

TPS: 37.25 giao dịch/giây

Tổng số yêu cầu: 8944 yêu cầu

● Lỗi kết nối: 0

● Lỗi quá thời gian chờ: 0

Bảng 4.8 Testcase TC01-07

Testcase ID TC01-07

Tác vụ Lấy chứng chỉ

Mô tả Thực hiện kiểm thử tác vụ Lấy chứng chỉ và đo số giao dịch được xử lý trên một đơn vị thời gian

Dữ liệu kiểm thử { “SoChungChi”: “2020”,

“NgayCoHieuLuc”: “01/01/2020”,

“NgayHetHieuLuc”: “31/12/2020” } Điều kiện tiền đề Đã xác thực người dùng

Các bước thực hiện Bước 1: Tạo người dùng và xác thực người dùng Bước 2: Chạy mô-đun và kiểm thử với dữ liệu kiểm thử Bước 3: Lưu kết quả kiểm thử

Kết quả mong muốn 15 giao dịch được xử lý trên 1 giây Kết quả thực tế

TPS: 45.31 giao dịch/giây

Tổng số yêu cầu: 10879 yêu cầu

● Lỗi kết nối: 0

60 Ta có thể thấy rằng các thao tác với ứng dụng phi tập trung triển khai để thử nghiệm đều có thể được thực hiện với tốc độ phù hợp với yêu cầu nghiệp vụ khi có nhiều truy vấn đồng thời. Các giao dịch lấy dữ liệu từ chuỗi khối thường có tốc độ cao hơn. Ngược lại, các thao tác ghi dữ liệu mới, cập nhật dữ liệu thường tốn thời gian. Một phần nguyên nhân do dữ liệu truyền tải lớn, các nút phải tham gia quá trình đồng thuận trong mạng để thống nhất dữ liệu ghi lên chuỗi. Dù vậy, các ứng dụng phi tập trung và các thao tác đều đạt tốc độ lớn hơn 15 giao dịch/giây, đáp ứng hoàn toàn yêu cầu của Trung tâm Thông tin Lưu trữ và Thư viện tài nguyên môi trường quốc gia, Cục Công nghệ thông tin và Dữ liệu tài nguyên môi trường, Bộ Tài nguyên và Môi trường.

4.4 Thử nghiệm khả năng chịu tải, chịu lỗi

Ở phần này, tôi sẽ mô tả một số kịch bản hệ thống có thể gặp phải trong quá trình vận hành để thử nghiệm khía cạnh chịu tải và chịu lỗi của hệ thống.

Bảng 4.9 Testcase TC02-01

Testcase ID TC02-01

Mô tả Một nút vật lý dừng hoạt động

Điều kiện tiền đề Nút dừng hoạt động không phải nút master của cụm Các bước thực hiện  Bước 1: Tắt máy vật lý

 Bước 2: Kiểm tra trạng thái của các dịch vụ Kết quả mong muốn Các dịch vụ được triển khai sang các nút vật lý khác

và hoạt động bình thường.

Kết quả thực tế Hệ thống có thể không xử lý được yêu cầu trong một khoảng thời gian. Sau đó các dịch vụ sẽ được triển khai lại trên 2 nút còn hoạt động và có thể nhận yêu cầu từ phía người dùng

61

Bảng 4.10 Testcase TC02-02

Testcase ID TC02-02

Mô tả Consensus Driver dừng hoạt động Điều kiện tiền đề Message Queue vẫn hoạt động

Các bước thực hiện  Bước 1: Tắt Consensus Driver

 Bước 2: Gửi một yêu cầu tạo mạng chuỗi khối và giao thức đồng thuận

 Bước 3: Kiểm tra trạng thái của việc tạo mạng chuỗi khối

 Bước 4: Sau 5 phút, chạy lại Consensus Driver  Bước 5: Kiểm tra trạng thái của việc tạo mạng

chuỗi khối

Kết quả mong muốn  Mạng chuỗi khối ở trạng thái CREATE_PENDING Consensus Driver không hoạt động. Yêu cầu tạo mạng được lưu trữ tại message queue

 Mạng chuỗi khối được triển khai sau khi Consensus Driver hoạt động trở lại. Chuyển trạng thái mạng sang CREATED

Kết quả thực tế  Mạng chuỗi khối ở trạng thái CREATE_PENDING Consensus Driver không hoạt động. Yêu cầu tạo mạng được lưu trữ tại message queue

 Mạng chuỗi khối được triển khai sau khi Consensus Driver hoạt động trở lại. Chuyển trạng thái mạng sang CREATED

62

Bảng 4.11 Testcase TC02-03

Testcase ID TC02-03

Mô tả Infrastructure Controllers dừng hoạt động Điều kiện tiền đề Message Queue vẫn hoạt động

Các bước thực hiện  Bước 1: Tắt Infrastructure Controllers

 Bước 2: Gửi một yêu cầu tạo mạng chuỗi khối và giao thức đồng thuận

 Bước 3: Kiểm tra trạng thái của việc tạo mạng chuỗi khối

 Bước 4: Sau 5 phút, chạy lại Infrastructure Controllers

 Bước 5: Kiểm tra trạng thái của việc tạo mạng chuỗi khối

Kết quả mong muốn  Mạng chuỗi khối ở trạng thái CREATE_PENDING Infrastructure Controllers không hoạt động. Yêu cầu tạo mạng được lưu trữ tại message queue

 Mạng chuỗi khối được triển khai sau khi Infrastructure Controllers hoạt động trở lại. Chuyển trạng thái mạng sang CREATED Kết quả thực tế  Mạng chuỗi khối ở trạng thái

CREATE_PENDING Infrastructure Controllers không hoạt động. Yêu cầu tạo mạng được lưu trữ tại message queue

 Mạng chuỗi khối được triển khai sau khi Infrastructure Controllers hoạt động trở lại. Chuyển trạng thái mạng sang CREATED

63

Bảng 4.12 Testcase TC02-04

Testcase ID TC02-04

Mô tả Message Queue dừng hoạt động

Điều kiện tiền đề Các dịch vụ khác vẫn hoạt động bình thường Các bước thực hiện  Bước 1: Tắt Message Queue

 Bước 2: Gửi một yêu cầu tạo mạng chuỗi khối và giao thức đồng thuận

 Bước 3: Kiểm tra trạng thái của việc tạo mạng chuỗi khối

 Bước 4: Sau 5 phút, chạy lại Message Queue  Bước 5: Kiểm tra trạng thái của việc tạo mạng

chuỗi khối

Kết quả mong muốn  Mạng chuỗi khối ở trạng thái CREATE_PENDING Message Queue không hoạt động.

 Mạng chuỗi khối được triển khai sau khi Message Queue hoạt động trở lại. Chuyển trạng thái mạng sang CREATED

Kết quả thực tế  Các dịch vụ không kết nối được với message queue

 Sau vài lần kết nối không thành công, các dịch vụ bị dừng hoạt động

64

Bảng 4.13 Testcase TC02-05

Testcase ID TC02-05

Mô tả Tăng số lượng bản sao của Consensus Driver khi có nhiều yêu cầu gửi đến từ người dùng

Điều kiện tiền đề Các dịch vụ trong hệ thống hoạt động bình thường Các bước thực hiện  Bước 1: Gửi 11 yêu cầu liên tục tới hệ thống

 Bước 2: Thiết lập hệ thống tạo một bản sao của Consenus Driver nếu số message trên message queue lớn hơn 10 message và chỉ cho phép tồn tại 1 bản sao của Consensus Driver khi số message nhỏ hơn 3

 Bước 3: Kiểm tra số lượng bản sao của Consensus Driver trong cụm

 Bước 4: Dừng gửi yêu cầu đến hệ thống

 Bước 5: Kiểm tra số lượng bản sao của Consensus Driver khi số lượng message nhỏ hơn 3

Kết quả mong muốn Một bản sao mới của Consenus Driver được tạo khi số message trong message queue lớn hơn 10

Hệ thống chỉ tồn tại một bản sao khi số lượng message nhỏ hơn 3

Kết quả thực tế Một bản sao mới của Consenus Driver được tạo khi số message trong message queue lớn hơn 10

Hệ thống chỉ tồn tại một bản sao khi số lượng message nhỏ hơn 3

Với một số kịch bản thử nghiệm trên, ta có thể thấy rằng hệ thống triển khai thử nghiệm có thể vượt qua được một số vấn đề gặp phải trong quá trình vận hành như: một số dịch vụ bị dừng hoạt động đột ngột hay đảm bảo các dịch vụ được triển khai lên các nút vật lý khác khi xảy ra sự cố, tự động mở rộng và thu hẹp tài nguyên khi cần thiết. Điều này đã chứng minh được rằng, hệ thống thử nghiệm có khả năng chịu tải, chịu lỗi nhờ sử dụng nguyên lý thiết kế microservice, message queue

65 và một số công nghệ hỗ trợ như Docker, Kubernetes... Tuy nhiên, qua các thử nghiệm ta cũng có thể thấy hệ thống không thể vượt qua được trường hợp message queue dừng hoạt động, đặc biệt là trường hợp chỉ có một nút message queue duy nhất. Để khắc phục điều này, ta có thể triển khai phân tán một cụm message queue để tăng tính sẵn có (Availability) của dịch vụ này, giúp hệ thống vận hành ổn định hơn.

66

CHƯƠNG 5.KẾT LUẬN 5.1 Kết luận

Với sự phát triển mạnh mẽ của công nghệ chuỗi khối, các giao thức đồng thuận và các nền tảng chuỗi khối mới liên tục được ra đời nhằm giải quyết những bài toán khác nhau trong thực tế. Quá trình lựa chọn, triển khai một giao thức đồng thuận cho một nền tảng chuỗi khối phải trải qua nhiều bước từ tìm hiểu công nghệ,

Một phần của tài liệu Nghiên cứu và phát triển giải pháp tự động triển khai giao thức đồng thuận cho mạng chuỗi khối riêng tư trong nền tảng v chain (Trang 49)

Tải bản đầy đủ (PDF)

(69 trang)