Hệ thống máy tính phân tán Apache Storm 2.0 có sẵn

nhìn thấy ánh sáng phát hành đáng kể một hệ thống xử lý sự kiện phân tán Bão Apache 2.0, đáng chú ý vì nó chuyển sang kiến ​​trúc mới được triển khai bằng Java, thay vì ngôn ngữ Clojure được sử dụng trước đây.

Dự án cho phép bạn tổ chức xử lý đảm bảo các sự kiện khác nhau trong thời gian thực. Ví dụ: Storm có thể được sử dụng để phân tích luồng dữ liệu trong thời gian thực, chạy các tác vụ học máy, tổ chức tính toán liên tục, triển khai RPC, ETL, v.v. Hệ thống hỗ trợ phân cụm, tạo cấu hình có khả năng chịu lỗi, chế độ xử lý dữ liệu được đảm bảo và có hiệu suất cao, đủ để xử lý hơn một triệu yêu cầu mỗi giây trên một nút cụm.

Hỗ trợ tích hợp với các hệ thống xử lý hàng đợi và công nghệ cơ sở dữ liệu khác nhau. Kiến trúc Storm liên quan đến việc nhận và xử lý các luồng dữ liệu không có cấu trúc, được cập nhật liên tục bằng cách sử dụng các bộ xử lý phức tạp tùy ý với khả năng phân vùng giữa các giai đoạn tính toán khác nhau. Dự án đã được bàn giao cho cộng đồng Apache sau khi Twitter mua lại BackType, công ty ban đầu đã phát triển framework này. Trong thực tế, Storm được sử dụng trong BackType để phân tích phản ánh các sự kiện trong microblog, bằng cách so sánh nhanh chóng các tweet mới và các liên kết được sử dụng trong chúng (ví dụ: nó được đánh giá cách các liên kết hoặc thông báo bên ngoài được xuất bản trên Twitter được những người tham gia khác phát lại ).

Chức năng của Storm được so sánh với nền tảng Hadoop, với điểm khác biệt chính là dữ liệu không được lưu trữ trong kho mà được đưa vào bên ngoài và được xử lý trong thời gian thực. Storm không có lớp lưu trữ tích hợp và truy vấn phân tích bắt đầu được áp dụng cho dữ liệu đến cho đến khi nó bị hủy (trong khi Hadoop sử dụng các công việc MapReduce trong thời gian hữu hạn thì Storm sử dụng ý tưởng chạy liên tục các “cấu trúc liên kết”). Việc thực thi các trình xử lý có thể được phân phối trên nhiều máy chủ - Storm tự động song song hóa công việc với các luồng trên các nút cụm khác nhau.

Hệ thống ban đầu được viết bằng Clojure và chạy bên trong máy ảo JVM. Quỹ Apache đã đưa ra sáng kiến ​​di chuyển Storm sang hạt nhân mới được viết bằng Java, kết quả của sáng kiến ​​này được đề xuất trong bản phát hành Apache Storm 2.0. Tất cả các thành phần cơ bản của nền tảng đều được viết lại bằng Java. Hỗ trợ viết trình xử lý trong Clojure vẫn được giữ lại nhưng hiện được cung cấp dưới dạng ràng buộc. Storm 2.0.0 yêu cầu Java 8. Mô hình xử lý đa luồng đã được thiết kế lại hoàn toàn, cho phép Hoàn thành hiệu suất tăng lên rõ rệt (đối với một số cấu trúc liên kết, độ trễ đã giảm 50-80%).

Hệ thống máy tính phân tán Apache Storm 2.0 có sẵn

Phiên bản mới cũng cung cấp API Luồng được nhập mới cho phép bạn xác định trình xử lý bằng cách sử dụng các hoạt động kiểu lập trình chức năng. API mới được triển khai dựa trên API cơ sở tiêu chuẩn và hỗ trợ tự động hợp nhất các hoạt động để tối ưu hóa quá trình xử lý của chúng. API cửa sổ cho các hoạt động của cửa sổ đã bổ sung hỗ trợ lưu và khôi phục trạng thái trong phần phụ trợ.

Hỗ trợ tính đến các nguồn lực bổ sung khi đưa ra quyết định không giới hạn ở
CPU và bộ nhớ, chẳng hạn như cài đặt mạng và GPU. Một số lượng lớn các cải tiến đã được thực hiện để đảm bảo tích hợp với nền tảng Kafka. Hệ thống kiểm soát truy cập đã được mở rộng để bao gồm khả năng tạo nhóm quản trị viên và mã thông báo ủy quyền. Đã thêm các cải tiến liên quan đến hỗ trợ SQL và số liệu. Các lệnh mới đã xuất hiện trong giao diện quản trị viên để gỡ lỗi trạng thái cụm.

Các lĩnh vực ứng dụng của Storm:

  • Xử lý các luồng dữ liệu mới hoặc cập nhật cơ sở dữ liệu theo thời gian thực;
  • Tính toán liên tục: Storm có thể chạy các truy vấn liên tục và xử lý các luồng liên tục, cung cấp kết quả xử lý cho khách hàng trong thời gian thực.
  • Cuộc gọi thủ tục từ xa phân tán (RPC): Storm có thể được sử dụng để cung cấp khả năng thực thi song song các truy vấn sử dụng nhiều tài nguyên. Công việc (“cấu trúc liên kết”) trong Storm là một chức năng được phân bổ trên các nút chờ tin nhắn đến cần được xử lý. Sau khi nhận được tin nhắn, hàm sẽ xử lý nó trong ngữ cảnh cục bộ và trả về kết quả. Một ví dụ về việc sử dụng RPC phân tán là xử lý song song các truy vấn tìm kiếm hoặc thực hiện các thao tác trên một tập hợp lớn.

Tính năng bão:

  • Một mô hình lập trình đơn giản giúp đơn giản hóa đáng kể việc xử lý dữ liệu thời gian thực;
  • Hỗ trợ cho bất kỳ ngôn ngữ lập trình. Các mô-đun có sẵn cho Java, Ruby và Python, việc thích ứng với các ngôn ngữ khác rất dễ dàng nhờ giao thức giao tiếp rất đơn giản, cần khoảng 100 dòng mã để hỗ trợ;
  • Khả năng chịu lỗi: để chạy một công việc xử lý dữ liệu, bạn cần tạo một tệp jar có mã. Storm sẽ phân phối độc lập tệp jar này trên các nút cụm, kết nối các trình xử lý được liên kết với nó và tổ chức giám sát. Khi công việc hoàn thành, mã sẽ tự động bị vô hiệu hóa trên tất cả các nút;
  • Khả năng mở rộng theo chiều ngang. Tất cả các tính toán được thực hiện ở chế độ song song, khi tải tăng lên, chỉ cần kết nối các nút mới với cụm là đủ;
  • Độ tin cậy. Storm đảm bảo rằng mọi tin nhắn đến đều được xử lý đầy đủ ít nhất một lần. Thông báo sẽ chỉ được xử lý một lần nếu không có lỗi khi đi qua tất cả các trình xử lý; nếu có vấn đề phát sinh thì các lần xử lý không thành công sẽ được lặp lại.
  • Tốc độ. Mã của Storm được viết với mục tiêu hiệu suất cao và sử dụng hệ thống để nhắn tin không đồng bộ nhanh chóng khôngMQ.

Nguồn: opennet.ru

Thêm một lời nhận xét