Logo Zephyrnet

Kiến trúc phân tích thời gian thực cho tốc độ và quy mô – DATAVERSITY

Ngày:

Trong thế giới phát triển nhanh ngày nay, khái niệm về sự kiên nhẫn như một đức tính tốt dường như đang mất dần đi, vì mọi người không còn muốn chờ đợi bất cứ điều gì. Nếu Netflix mất quá nhiều thời gian để tải hoặc Lyft gần nhất ở quá xa, người dùng sẽ nhanh chóng chuyển sang các tùy chọn thay thế. Nhu cầu về kết quả tức thì không chỉ giới hạn ở các dịch vụ tiêu dùng như truyền phát video và chia sẻ chuyến đi; nó mở rộng đến lĩnh vực của Phân tích dữ liệu, đặc biệt là khi phục vụ người dùng ở quy mô lớn và quy trình ra quyết định tự động. Khả năng cung cấp thông tin chi tiết kịp thời, đưa ra quyết định sáng suốt và thực hiện hành động ngay lập tức dựa trên dữ liệu thời gian thực ngày càng trở nên quan trọng. Các công ty như Confluent, Target và nhiều công ty khác là những công ty hàng đầu trong ngành vì họ tận dụng phân tích thời gian thực và kiến ​​trúc dữ liệu để hỗ trợ các hoạt động dựa trên phân tích. Khả năng này cho phép họ luôn dẫn đầu trong các ngành công nghiệp tương ứng của họ.

Bài đăng trên blog này đi sâu vào khái niệm phân tích thời gian thực dành cho các kiến ​​trúc sư dữ liệu đang bắt đầu khám phá các mẫu thiết kế, cung cấp thông tin chi tiết về định nghĩa của nó cũng như các khối xây dựng ưa thích và kiến ​​trúc dữ liệu thường được sử dụng trong miền này.

Điều gì chính xác cấu thành phân tích thời gian thực?

Phân tích thời gian thực được đặc trưng bởi hai phẩm chất cơ bản: dữ liệu cập nhật và thông tin chuyên sâu nhanh chóng. Chúng được sử dụng trong các ứng dụng nhạy cảm với thời gian, trong đó tốc độ chuyển các sự kiện mới thành thông tin chi tiết có thể hành động chỉ tính bằng giây.

phân tích thời gian thựcphân tích thời gian thực
Hình 1: Phân tích thời gian thực được xác định

Mặt khác, phân tích truyền thống, thường được gọi là kinh doanh thông minh, đề cập đến các biểu diễn tĩnh của dữ liệu kinh doanh chủ yếu được sử dụng cho các mục tiêu báo cáo. Các phân tích này dựa trên các kho dữ liệu như Snowflake và Amazon Redshift và được hiển thị trực quan thông qua các công cụ kinh doanh thông minh như Tableau hoặc PowerBI.

Không giống như phân tích truyền thống, dựa trên dữ liệu lịch sử có thể là vài ngày hoặc vài tuần, phân tích thời gian thực tận dụng dữ liệu mới và được sử dụng trong quy trình công việc vận hành đòi hỏi phản hồi nhanh cho các yêu cầu phức tạp tiềm ẩn.

Hình 2: Tiêu chí quyết định cho phân tích thời gian thực

Ví dụ, hãy xem xét một giám đốc điều hành chuỗi cung ứng tìm kiếm các xu hướng lịch sử trong các thay đổi hàng tồn kho hàng tháng. Trong trường hợp này, phân tích truyền thống là lựa chọn lý tưởng vì người điều hành có thể đợi thêm vài phút để báo cáo được xử lý. Mặt khác, một nhóm hoạt động bảo mật nhằm mục đích phát hiện và chẩn đoán sự bất thường trong lưu lượng mạng. Đây là lúc phân tích thời gian thực phát huy tác dụng, vì nhóm SecOps yêu cầu phân tích nhanh hàng nghìn đến hàng triệu mục nhập nhật ký thời gian thực trong khoảng thời gian dưới giây để xác định các mẫu và điều tra hành vi bất thường.

Lựa chọn kiến ​​trúc có quan trọng không?

Nhiều nhà cung cấp cơ sở dữ liệu tuyên bố là phù hợp với phân tích thời gian thực và họ có một số khả năng về vấn đề đó. Chẳng hạn, hãy xem xét kịch bản theo dõi thời tiết, trong đó các chỉ số nhiệt độ cần được lấy mẫu mỗi giây từ hàng nghìn trạm thời tiết và các truy vấn liên quan đến cảnh báo dựa trên ngưỡng và phân tích xu hướng. SingleStore, InfluxDB, MongoDB và thậm chí PostgreSQL có thể xử lý việc này một cách dễ dàng. Bằng cách tạo API đẩy để gửi số liệu trực tiếp đến cơ sở dữ liệu và thực hiện một truy vấn đơn giản, có thể đạt được phân tích thời gian thực.

Vì vậy, khi nào độ phức tạp của phân tích thời gian thực tăng lên? Trong ví dụ được đề cập, tập dữ liệu tương đối nhỏ và các phân tích liên quan rất đơn giản. Chỉ với một sự kiện nhiệt độ được tạo mỗi giây và một truy vấn CHỌN đơn giản với câu lệnh WHERE để truy xuất các sự kiện mới nhất, yêu cầu sức mạnh xử lý tối thiểu, khiến nó có thể quản lý được đối với bất kỳ cơ sở dữ liệu chuỗi thời gian hoặc OLTP nào.

Những thách thức thực sự nảy sinh và cơ sở dữ liệu bị đẩy đến giới hạn khi số lượng sự kiện được nhập tăng lên, truy vấn trở nên phức tạp hơn với nhiều thứ nguyên và bộ dữ liệu đạt kích thước hàng terabyte hoặc thậm chí hàng petabyte. Mặc dù Apache Cassandra thường được coi là có khả năng nhập thông lượng cao, nhưng hiệu suất phân tích của nó có thể không đáp ứng được kỳ vọng. Trong trường hợp trường hợp sử dụng phân tích yêu cầu tham gia nhiều nguồn dữ liệu thời gian thực trên quy mô lớn, cần khám phá các giải pháp thay thế.

Dưới đây là một số yếu tố cần xem xét sẽ hỗ trợ xác định các thông số kỹ thuật cần thiết cho kiến ​​trúc phù hợp:

  • Bạn đang làm việc với các sự kiện cao trên giây, từ hàng nghìn đến hàng triệu?
  • Điều quan trọng là giảm thiểu độ trễ giữa các sự kiện được tạo cho đến khi chúng có thể được truy vấn? 
  • Tổng số tập dữ liệu của bạn có lớn chứ không chỉ vài GB không?
  • Hiệu suất truy vấn quan trọng như thế nào – giây phụ hoặc phút cho mỗi truy vấn?
  • Các truy vấn, xuất một vài hàng hoặc tập hợp quy mô lớn phức tạp như thế nào?
  • Việc tránh thời gian ngừng hoạt động của luồng dữ liệu và công cụ phân tích có quan trọng không?
  • Bạn đang cố gắng tham gia nhiều luồng sự kiện để phân tích? 
  • Bạn có cần đặt dữ liệu thời gian thực trong ngữ cảnh với dữ liệu lịch sử không?
  • Bạn có dự đoán nhiều truy vấn đồng thời không?

Nếu bất kỳ khía cạnh nào trong số này có liên quan, hãy thảo luận về các đặc điểm của kiến ​​trúc lý tưởng.

Building Blocks

Phân tích thời gian thực không chỉ yêu cầu một cơ sở dữ liệu thành thạo. Nó bắt đầu với sự cần thiết phải thiết lập kết nối, truyền và xử lý dữ liệu thời gian thực, dẫn chúng ta đến yếu tố nền tảng ban đầu: truyền sự kiện.

1. Truyền sự kiện 

Trong các tình huống mà thời gian thực là vô cùng quan trọng, các đường dẫn dữ liệu dựa trên lô thông thường có xu hướng quá muộn, dẫn đến sự xuất hiện của các hàng đợi nhắn tin. Trước đây, việc gửi tin nhắn dựa trên các công cụ như ActiveMQ, RabbitMQ và TIBCO. Tuy nhiên, cách tiếp cận hiện đại bao gồm truyền phát sự kiện bằng các công nghệ như Apache Kafka và Amazon Kinesis.

Apache Kafka và Amazon Kinesis giải quyết các hạn chế về khả năng thay đổi quy mô thường gặp phải với hàng đợi nhắn tin truyền thống, trao quyền cho cơ chế xuất bản/đăng ký thông lượng cao để thu thập và phân phối hiệu quả các luồng dữ liệu sự kiện phong phú từ nhiều nguồn khác nhau (được gọi là nhà sản xuất theo thuật ngữ của Amazon) đến các đích khác nhau ( được gọi là người tiêu dùng theo thuật ngữ của Amazon) trong thời gian thực.

Kafka ApacheKafka Apache
Hình 3: Đường truyền sự kiện Apache Kafka

Các hệ thống này thu thập dữ liệu thời gian thực một cách liền mạch từ nhiều nguồn như cơ sở dữ liệu, cảm biến và dịch vụ đám mây, đóng gói chúng dưới dạng luồng sự kiện và tạo điều kiện truyền chúng đến các ứng dụng, cơ sở dữ liệu và dịch vụ khác.

Với khả năng mở rộng ấn tượng của chúng (như được minh họa bằng sự hỗ trợ của Apache Kafka cho hơn bảy nghìn tỷ tin nhắn mỗi ngày tại LinkedIn) và khả năng cung cấp nhiều nguồn dữ liệu đồng thời, truyền sự kiện đã nổi lên như một cơ chế phổ biến để cung cấp dữ liệu thời gian thực trong các ứng dụng.

Bây giờ chúng tôi có khả năng thu thập dữ liệu thời gian thực, bước tiếp theo là khám phá cách chúng tôi có thể phân tích dữ liệu đó trong thời gian thực.

2. Cơ sở dữ liệu phân tích thời gian thực 

Phân tích thời gian thực yêu cầu cơ sở dữ liệu chuyên dụng có thể tận dụng tối đa dữ liệu truyền phát từ Apache Kafka và Amazon Kinesis, cung cấp thông tin chi tiết theo thời gian thực. Druid Apache chính xác là cơ sở dữ liệu đó.

Apache Druid đã nổi lên như một cơ sở dữ liệu ưa thích cho các ứng dụng phân tích thời gian thực nhờ hiệu suất cao và khả năng xử lý dữ liệu truyền trực tuyến. Với khả năng hỗ trợ nhập luồng thực và xử lý hiệu quả khối lượng dữ liệu lớn trong khung thời gian dưới giây, ngay cả khi tải nặng, Apache Druid vượt trội trong việc cung cấp thông tin chi tiết nhanh về dữ liệu mới. Khả năng tích hợp liền mạch của nó với Apache Kafka và Amazon Kinesis càng củng cố vị trí của nó như là lựa chọn hàng đầu cho phân tích thời gian thực.

Khi chọn cơ sở dữ liệu phân tích để truyền dữ liệu, các cân nhắc như quy mô, độ trễ và chất lượng dữ liệu là rất quan trọng. Khả năng xử lý quy mô đầy đủ của truyền sự kiện, nhập và tương quan nhiều chủ đề Kafka hoặc phân đoạn Kinesis, hỗ trợ nhập dựa trên sự kiện và đảm bảo tính toàn vẹn của dữ liệu trong thời gian gián đoạn là những yêu cầu chính. Apache Druid không chỉ đáp ứng các tiêu chí này mà còn vượt lên trên để đáp ứng những kỳ vọng này và cung cấp các khả năng bổ sung.

Druid được thiết kế có mục đích để vượt trội trong việc nhập nhanh và truy vấn các sự kiện theo thời gian thực khi chúng đến. Nó có một cách tiếp cận độc đáo để truyền dữ liệu, nhập các sự kiện trên cơ sở riêng lẻ thay vì dựa vào các tệp dữ liệu lô tuần tự để mô phỏng một luồng. Điều này giúp loại bỏ sự cần thiết của trình kết nối với Kafka hoặc Kinesis. Ngoài ra, Druid đảm bảo Chất lượng dữ liệu bằng cách hỗ trợ ngữ nghĩa chính xác một lần, đảm bảo tính toàn vẹn và chính xác của dữ liệu được nhập.

Giống như Apache Kafka, Apache Druid được thiết kế đặc biệt để xử lý dữ liệu sự kiện ở quy mô internet. Kiến trúc dựa trên dịch vụ của nó cho phép khả năng mở rộng độc lập của quá trình nhập và xử lý truy vấn, làm cho nó có khả năng mở rộng gần như vô hạn. Bằng cách ánh xạ các tác vụ nhập với các phân vùng Kafka, Druid chia tỷ lệ liền mạch cùng với các cụm Kafka, đảm bảo xử lý dữ liệu song song và hiệu quả.

Quá trình nhập thời gian thực của DruidQuá trình nhập thời gian thực của Druid
Hình 4: Cách nhập thời gian thực của Druid có thể mở rộng như Kafka

Việc các công ty nhập hàng triệu sự kiện mỗi giây vào Apache Druid ngày càng trở nên phổ biến. Chẳng hạn, Confluent, người tạo ra Kafka, đã xây dựng nền tảng quan sát của họ bằng cách sử dụng Druid và nhập thành công hơn năm triệu sự kiện mỗi giây từ Kafka. Điều này cho thấy khả năng mở rộng và khả năng hiệu suất cao của Druid trong việc xử lý khối lượng sự kiện lớn.

Tuy nhiên, phân tích thời gian thực không chỉ có quyền truy cập vào dữ liệu thời gian thực. Để hiểu rõ hơn về các mẫu và hành vi, điều cần thiết là phải tương quan dữ liệu lịch sử. Apache Druid vượt trội về mặt này, như được mô tả trong sơ đồ trên, bằng cách hỗ trợ liền mạch cả phân tích lịch sử và thời gian thực thông qua một truy vấn SQL duy nhất. Druid quản lý hiệu quả khối lượng dữ liệu lớn, thậm chí lên đến hàng petabyte, trong nền, cho phép phân tích toàn diện và tích hợp trong các khoảng thời gian khác nhau.

Khi tất cả các phần được tập hợp lại với nhau, một kiến ​​trúc dữ liệu có khả năng mở rộng cao dành cho phân tích thời gian thực sẽ xuất hiện. Kiến trúc này là lựa chọn ưa thích của hàng nghìn kiến ​​trúc sư dữ liệu khi họ yêu cầu khả năng mở rộng cao, độ trễ thấp và khả năng thực hiện các tập hợp phức tạp trên dữ liệu thời gian thực. Bằng cách tận dụng tính năng phát trực tuyến sự kiện với Apache Kafka hoặc Amazon Kinesis, kết hợp với sức mạnh của Apache Druid để phân tích lịch sử và thời gian thực hiệu quả, các tổ chức có thể đạt được những hiểu biết mạnh mẽ và toàn diện từ dữ liệu của họ.

Nghiên cứu điển hình: Đảm bảo trải nghiệm xem đỉnh cao – Phương pháp tiếp cận của Netflix

Phân tích thời gian thực là một thành phần quan trọng trong nỗ lực không ngừng của Netflix nhằm mang lại trải nghiệm đặc biệt cho hơn 200 triệu người dùng, những người tiêu thụ tổng cộng 250 triệu giờ nội dung mỗi ngày. Với ứng dụng khả năng quan sát được điều chỉnh để theo dõi thời gian thực, Netflix giám sát hiệu quả hơn 300 triệu thiết bị để đảm bảo hiệu suất tối ưu và sự hài lòng của khách hàng.

phân tích thời gian thựcphân tích thời gian thực
Hình 5: Kiến trúc phân tích thời gian thực của Netflix (nguồn ảnh: Netflix)

Bằng cách tận dụng nhật ký thời gian thực được tạo bởi các thiết bị phát lại, được truyền liên tục qua Apache Kafka và nhập từng sự kiện vào Apache Druid, Netflix thu được thông tin chuyên sâu có giá trị và phép đo định lượng về hiệu suất của thiết bị người dùng trong các hoạt động duyệt và phát lại.

Với thông lượng đáng kinh ngạc hơn hai triệu sự kiện mỗi giây và các truy vấn dưới giây nhanh như chớp được thực hiện trên tập dữ liệu khổng lồ gồm 1.5 nghìn tỷ hàng, các kỹ sư của Netflix có khả năng xác định và điều tra chính xác các điểm bất thường trong cơ sở hạ tầng, hoạt động điểm cuối và luồng nội dung của họ .

Mở khóa thông tin chi tiết theo thời gian thực với Apache Druid, Apache Kafka và Amazon Kinesis

Nếu bạn quan tâm đến việc xây dựng các giải pháp phân tích theo thời gian thực, thì tôi đặc biệt khuyến khích bạn khám phá Apache Druid cùng với Apache Kafka và Amazon Kinesis. 

tại chỗ_img

Tin tức mới nhất

tại chỗ_img