Mô hình giải pháp kếp hợp có phí và miễn phí

Một phần của tài liệu Luận văn Thạc sĩ Công nghệ thông tin: Áp dụng công nghệ mới vào việc lưu trữ và xử lý dữ liệu (Trang 27 - 34)

a. Khối thu thập dữ liệu (ETL)

Mule ESB là một trục tích hợp(Enterprise Service Bus-ESB) của hãng Mulesoft, gọn nhẹ được viết bằng ngôn ngữ Java, là nền tảng tích hợp cho phép các nhà phát triển kết nối các ứng dụng nhanh chóng và dễ dàng. Mule cho phép các ứng dụng có thể trao đổi dữ liệu với nhau, dễ dàng tích hợp các hệ thống đang tồn tại bất kể chúng đang sử dụng các công nghệ khác nhau như JMS, web services, JDBC, HTTP, . . . Tính năng định tuyến(Routing): là tính năng dựa trên việc kiểm tra nội dung của bản tin để định tuyến bản bin này đến một kênh được định nghĩa trước. Định tuyến có thể dựa trên một số tiêu chí như sự tồn tại của trường, giá trị của trường cụ thể...Trong các kịch bản phức tạp hơn, bộ định tuyến theo nội dung có thể thực hiện dưới

dạng một bộ quy tắc, khi đó việc định tuyến đến kênh nào hoàn toàn dựa trên bộ quy tắc này.

Tính năng chuyển đổi dữ liệu(Transformation): là quá trình chuyển đổi dữ liệu từ một định dạng (ví dụ: tệp cơ sở dữ liệu, tài liệu XML hoặc trang tính Excel) sang một định dạng khác. Bởi vì trong doanh nghiệp dữ liệu thường nằm ở các vị trí và có nhiều định dạng khác nhau, nên việc chuyển đổi dữ liệu là cần thiết để đảm bảo dữ liệu có thể liên kết với nhau hoặc có thể được dùng bởi hệ thống khác. Tính năng quản lý giao dịch(Transaction management):là một hoạt động trong ứng dụng để đảm bảo rằng kết quả là xác định và chính xác. Trong quá trình chuyển đổi hoặc định tuyến sẽ có nhiều bước, để đảm bảo các bước này thành công và dữ liệu là thống nhất thì bạn phải đóng gói các bước thành một luồng. Trong luồng xử lý dữ liệu này sẽ không có giao dịch thành công một phần hoặc không đầy đủ. Nếu việc này xảy ra thì Mulesoft sẽ rollback lại dữ liệu và thực hiện lại luồng xử lý từ đầu.

Tính năng bảo mật(Security): cung cấp một lớp bổ sung các khả năng trên hệ thống đã có. Đây là lớp trên cùng và bao gồm toàn bộ các lớp còn lại. Lớp bảo mật này là một bộ các tính năng bảo mật toàn diện, giúp các nhà phát triển phát triển ứng dụng an toàn và tin cậy.

• Chặn truy cập trái phép vào hệ thống thông qua bộ lọc và các chính sách.

• Ngăn chặn sự tiếp xúc của dữ liệu nhạy cảm với mã hóa và chữ ký số.

• Kiểm soát quyền truy cập vào các API có tiêu chuẩn bảo mật đã được chứng minh như OAuth2, SAML và LDAP.

Dữ liệu sau khi đi qua hệ thống Mulesoft được xử lý(chuyển đổi, quản lý giao dịch, bảo mật) sẽ được chuyển đến khối tiếp theo là khối hàng đợi. Khối này làm nhiệm vụ lưu cache các giao dịch và hoàn toàn hoạt động trên bộ nhớ trong(RAM) vì vậy có tốc độ cao, đảm bảo được yêu cầu làm hệ thống làm việc với dữ liệu lớn.

b. Khối hàng đợi (cache)

Khối hàng đợi được chia làm ba phần chính là khối tiếp nhận dữ liệu đầu vào (Producer), khối lưu trữ cache dữ liệu(các topic) và khối dữ liệu đầu ra (Consumer). Khối này cho phép chạy Cluster trên nhiều node để tăng tốc độ xử lý và đảm bảo tính dự phòng. Mỗi loại dữ liệu sẽ được lưu vào các Topic, mỗi Topic sẽ có nhiều Partition, trên một node sẽ lưu một hoặc nhiều Partition.

dùng có thể 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 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. Topic: là một hàng đợi của thông điệp (mỗi dòng dữ liệu) có tên do người dùng đặt. 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. Bởi vì mỗi thông điệp được đẩy vào topic sẽ được gán một offset tương ứng (ví dụ: thông điệp đầu tiên có offset là 1, thông điệp thứ hai là 2,..) nên consumer có thể dùng offset này để điều khiển quá trình đọc thông điệp. Nhưng cần lưu ý là bởi vì Kafka sẽ tự động xóa những thông điệp đã quá cũ ( thông điệp đẩy vào đã quá hai tuần hoặc xóa bởi vì bộ nhớ cho phép để chứa thông điệp đã đầy) vì vậy sẽ gặp lỗi nếu truy cập vào các thông điệp đã bị xóa. Thông điệp được đẩy vào topic nào phụ thuộc vào giá trị băm của chuỗi số đó, điều này đảm bảo số lượng thông điệp trên mỗi partition là tương tự nhau.

Partition: là nơi lưu trữ dữ liệu trên từng máy chủ (broker). Với mỗi partition, tùy thuộc vào người dùng cấu hình sẽ có một số bản sao chép nhất định để đảm bảo dữ liệu không bị mất khi một node trong cụm bị hỏng, tuy nhiên số lượng bản sao không được vượt quá số lượng broker trong cụm, và những bản sao đó sẽ được lưu lên các broker khác. Broker chứa bản chính của partition gọi là broker "leader". Những bản sao chép này có tác dụng giúp hệ thống không bị mất dữ liệu nếu có một số broker bị lỗi, với điều kiện số lượng broker bị lỗi không lớn hơn hoặc bằng số lượng bản sao của mỗi partition. Ví dụ một partition có hai bản sao được lưu trên 3 broker sẽ không bị mất dữ liệu nếu có một broker bị lỗi. Còn một điều quan trọng nữa phải lưu ý, do các phiên bản sao chép này không nhận dữ liệu trực tiếp từ producer hay được đọc bởi consumer, mà nó chỉ đồng bộ với paritition chính vì vậy nó không làm tăng khả năng song song hóa việc đọc và ghi.

Consumer: có nhiệm vụ kéo dữ liệu từ một topic chỉ định về. Tùy thuộc vào mục đích sử dụng, Kafka cung cấp hai hàm API như sau: High Level Consumer: API này hướng tới những ứng dụng không quan tâm về việc điều khiển việc đọc thông điệp (mỗi dòng của dữ liệu), người dùng chỉ có thể đọc từ thông điệp cũ nhất hoặc đọc từ thông điệp mới nhất. API này luôn lưu lại offset của thông điệp được lấy về mới nhất của mỗi partition vào Zookeeper. Simple Consumer: Việc sử dụng API này tương đối phức tạp hơn API trên nhưng nó cho phép điều khiển việc đọc một cách linh hoạt dựa trên offset. Do đó, API này cho phép ứng dụng có thể xử lý lại thông điệp nếu gặp lỗi trong

quá trình xử lý trước đó. c. Khối lưu trữ dữ liệu (storage)

Pipeline: cho phép nhập dữ liệu thời gian thực từ các nguồn bên ngoài, nó sẽ trỏ vào từng Consumer của Kafka để lấy dữ liệu, trans- form và load vào trong hệ thống MemSql. Thực tế Pipeline là một thành phần của MemSql nó cho phép load dữ liệu từ các hệ thống khác. Đặc biệt Pipeline làm việc với Kafka thì việc xử lý dữ liệu hoàn toàn nằm trên bộ nhớ trong, vì vậy dữ liệu được xử lý với tốc độ cực cao. Pipeline có khả năng mở rộng theo nền tảng cluster vì vậy có hiệu suất và tính dự phòng cao.

MemSQL:là cơ sở dữ liệu trên bộ nhớ (In-memory database – IMDB), đây không phải là công nghệ quá mới và thực tế có rất nhiều tên tuổi lâu đời trong làng IMDB như Redis, VoltDB, hay các DBMS nổi tiếng cũng có tính năng hoặc sản phẩm tương tự như Microsoft Hekaton, Oracle hoặc SAP HANA. Tuy nhiên, MemSQL nhanh chóng phát triển và vượt qua nhiều tên tuổi lớn trở thành số 1 về kho cơ sở dữ liệu thời gian thực. Các tính năng nổi bật của MemSQL:

• Compiled query: Các câu lệnh SQL được biên dịch lại, nhờ vậy tốc độ thực hiện câu lệnh tăng rõ rệt ở lần chạy thứ 2. Ưu điểm này phù hợp với các hệ thống cơ sở dữ liệu thời gian thực, vì công việc truy vấn lại dữ liệu trong một khoảng thời gian (windows frame) được thực hiện tương đối thường xuyên.

• Hỗ trợ JSON: MemSQL hỗ trợ JSON tương đối tốt bằng cách hỗ trợ loại dữ liệu là JSON, có thể đánh chỉ mục (indexing) trên một đối tượng thuộc JSON trực tiếp thay vì phải tách dữ liệu rồi mới đánh chỉ mục như hầu hết các CSDL khác. MemSQL còn hỗ trợ truy cập trực tiếp một đối tượng trong JSON bằng DML, nhờ đó có thể truy vấn, lọc bớt, chuyển đổi một vài dữ liệu thuộc JSON thành chuỗi, số và có thể thực hiện tính toán được. Thậm chí có thể truy vấn các đối tượng lồng nhau trong JSON.

• Kiểu dữ liệu địa lý: MemSQL hỗ trợ tương đối đầy đủ kiểu dữ liệu địa lý, các hàm thực hiện tính toán địa lý như tính khoảng cách, tính giao cắt, tính khoanh vùng v.v. . . Tuy nhiên, cũng không phải tất cả. Một số hàm tính toán địa lý phức tạp cũng không được hỗ trợ. • JOIN: Cơ sở dữ liệu có quan hệ đương nhiên hỗ trợ JOIN, và MemSQL cũng không ngoại lệ. MemSQL hỗ trợ cả Spatial Join. Do dữ liệu nằm hoàn toàn trong bộ nhớ nên thao tác spartial join được thực hiện khá nhanh.

• Lưu dữ liệu snapshot trên ổ cứng: MemSQL không chỉ lưu dữ liệu trên bộ nhớ mà còn hỗ trợ lưu các ảnh của cơ sở dữ liệu (snap-

shot) xuống ổ cứng đầy đủ. Và khi có sự cố mất điện, hoặc phải khởi động lại máy chủ, dữ liệu được nạp lại nguyên vẹn từ ổ cứng, thao tác này trong trường hợp cơ sở dữ liệu có kích thước lớn làm chậm tương đối việc khởi động lại cơ sở dữ liệu. Dĩ nhiên, có thể tuỳ chỉnh tuỳ theo nhu cầu. Các dữ liệu lưu trên ổ cứng được nén lại làm giảm đáng kể dung lượng ổ cứng sử dụng.

• Clustering: MemSQL có kiến trúc theo dạng một node làm node tính toán, và có nhiều node làm node chứa dữ liệu. MemSQL cũng hỗ trợ sẵn giao diện dạng web để quản lý các node.

2.4 So sánh giải pháp miễn phí hoàn toàn và giải pháp kết hợp có phí.

Đầu tiên chúng ta xem xét module dùng để import dữ liệu vào hệ thống. Với các công nghệ trước đây chúng ta hay dùng một chương trình được viết bằng Java để import dữ liệu vào hệ thống. Công nghệ này không thể import với số lượng lớn dữ liệu, ngoài ra với nhiều nguồn dữ liệu khác nhau thì cũng gặp nhiều khó khăn trong việc viết code để có thể import hết từ các nguồn dữ liệu. Hiện tại ta có khái niệm Trục tích hợp (Enterprise Service Bus-ESB).

Trục tích hợp là mô hình tích hợp ứng dụng được đánh giá có nhiều ưu thế nhất hiện nay, giải pháp này đang được sử dụng rộng rãi bởi các tổ chức lớn trong nhiều lĩnh vực khác nhau (Ebay, Logicoy. . . ) tại nhiều quốc gia nhờ vào những tính năng tích hợp mạnh mẽ mà nó cung cấp vượt trội. ESB là một hạ tầng tích hợp ứng dụng phân tán, đồng thời tận dụng được những điểm mạnh hướng thông điệp và sử dụng các chuẩn mở của công nghệ Web Services. ESB cung cấp các dịch vụ định tuyến, chuyển đổi và quản lý giao dịch để hỗ trợ cho việc tương tác giữa những ứng dụng và dịch vụ tách biệt phân tán trong một cách thức an toàn và tin cậy. Gartner đã đưa ra bảng so sánh giữa các nhà cung cấp dịch vụ EBS như sau:

Bảng 2.1: So sánh tính năng EBS của các nhà cung cấp dịch vụ

Mulesoft Oracle Microsoft Red Hat Dell Boomi

Product Capabilities 4.4 3.8 3.9 4.2 4.3

Communication protocol connec- tors

4.6 3.8 3.9 5 4.3

Application connectors/adapters 4.5 4 4.1 5 4.2

Data formats 4.8 3.5 4 5 4.3

Data mapping and transforma- tion

4.5 3.6 3.7 5 4.2

Data quality 4.5 3.7 3.9 5 4

Routing and orchestration 4.4 3.4 4.3 5 4.2 Integration flow development

and life cycle management tools

4.1 3.3 4.2 5 4.1

Integration flow operational monitoring and management

3.8 3.8 4.2 5 4.1

Full life cycle API management 4.3 4 3.7 4 4

Evaluation and Contracting 4.1 4.3 4 3.9 4.3

Pricing Flexibility 3.8 3.5 4 3.8 4.2

Integration and Deployment 4.4 3.6 4.2 3.9 4.5

Ease of Deployment 4.2 4 4.5 3.9 4.4

Service and Support 4.2 4.3 4.1 3.6 4.2

Timeliness of Vendor Response 4.3 4 4.3 3.8 4.2 Quality of Technical Support 4.5 3.9 4.2 3.9 4.2

Trong Bảng 2.1 1 ta thấy trục tích hợp của nhà cung cấp Mulesoft có chất lượng sản phẩm là tốt nhất (4.4 điểm). Trong đề tài này tôi chọn trục tích hợp của Mulesoft để sử dụng như một công cụ import dữ liệu vào hệ thống Database. Tiếp theo chúng ta so sánh công nghệ tại lớp lưu trữ dữ liệu. Để lưu trữ được dữ liệu lớn và có cấu trúc thì có rất nhiều nhà cung cấp dịch vụ có sản phẩm tốt như: Microsoft, Oracle, MemSQL, MariaDB, Hortonworks. Trong đó có hai sản phẩm MariaDB và Hortonworks là miễn phí. Theo Gartner chấm điểm các nhà cung cấp dịch vụ:

Bảng 2.2: So sánh Database của các nhà cung cấp dịch vụ

MemSQL Microsoft Oracle Hortonworks MariaDB

Overall Peer Rating 4.5 4.4 4.1 4.1 4

Willingness to recommend 84% 83% 67% 73% 100%

Product Capabilities 4.4 4.5 4.4 4.2 4.8

Data formats 4.8 3.5 4 5 4.3

Evaluation and Contracting 4 4.3 3.9 4.1 4.3 Integration and Deployment 4.3 4.4 4.2 4 4

Service and Support 4.6 4.3 4 4 4.8

Từ Bảng 2.2 2 so sánh ta thấy công nghệ lưu trữ dữ liệu MemSQL đang có số điểm cao nhất(4.5 điểm). MemSQL có khả năng lưu một phần hoặc lưu cả bảng hoàn toàn trên memory vì vậy việc ghi dữ liệu là nhanh hơn. Ngoài ra MemSQL làm việc rất tốt với Kafka để load dữ liệu. Vì vậy trong giải pháp này tôi sẽ xử dụng công nghệ MemSQL.

1https://www.gartner.com/reviews/market/enterprise-integration-platform-as-a-service/compare/red-hat-vs-Dell-

Boomi-vs-mulesoft-vs-oracle-vs-microsoft

Chương 3

Đánh giá thực nghiệm so sánh giải pháp cũ và giải pháp mới

3.1 Mô hình logic hệ thống thực nghiệm

Trong đề tài nghiên cứu này mô hình thực nghiệm được chạy trên hai máy chủ có cấu hình cao (Bảng 3.1) và chạy với mẫu số liệu tương đối lớn (12G, 43G và 95G). Trên máy chủ thứ nhất cài theo mô hình tính cước cũ, bao gồm phần mềm Java để import dữ liệu và Oracle Database dùng để lưu trữ dữ liệu. Ngoài ra, dữ liệu sẽ được đặt trên thư mục FTP để giả lập hệ thống Billing gateway. Máy chủ thứ hai sẽ giả lập giải pháp mới, bao gồm ba phần mềm là Mulesoft dùng để import dữ liệu, phần mềm Kafka dùng để làm cache dữ liệu và phần mềm MemSQL dùng để lưu trữ dữ liệu. Máy chủ của hãng HP được cài hệ điều hành Linux 7. Máy chủ một và máy chủ hai có cấu hình giống hệt nhau và cài cùng một version hệ điều hành giống nhau.

Bảng 3.1: Cấu hình máy chủ

CPU Numer CPU Model CPU MHz RAM Phycical RAM Type RAM Speed HDD

48 E5-2650 1200 MHz 256 G DDR4 2400 MHz 6x300 G

Với mô hình thực nghiệm công nghệ cũ chỉ có ba thành phần: Một là thư mục chứa CDR của một ngày dữ liệu; Hai là một ứng dụng được viết bằng Java dùng để trỏ vào thư lục chứa CDR, đọc từng file và import vào CSDL Oracle Database; Ba là phần mềm lưu trữ dữ liệu Oracle Database được cài đặt ở phiên bản 11G.

Trong mô hình thực nghiệm với công nghệ mới bao gồm bốn thành phần: Một là thư mục chứa CDR của một ngày dữ liệu; Hai là phần mềm Anypoint của Mulesoft dùng để trỏ vào thư lục chứa CDR, đọc từng file và import vào Kafka. Phần mềm Anypoint cài phiên bản 7.7; Ba là phần mềm Kafka dùng để cache dữ liệu và được cài đặt phiên bản 10; Bốn là

Một phần của tài liệu Luận văn Thạc sĩ Công nghệ thông tin: Áp dụng công nghệ mới vào việc lưu trữ và xử lý dữ liệu (Trang 27 - 34)