Computer >> Máy Tính >  >> Lập trình >> Redis

3 ứng dụng trong đời thực được xây dựng bằng Nguồn dữ liệu Redis cho Grafana

Bản cập nhật 29/3/21:https://coronavirusapi.com/ gần đây đã đóng quyền truy cập miễn phí vào dữ liệu của nó, khiến nó chỉ khả dụng cho những người phản hồi đầu tiên đã đăng ký. Mặc dù điều này rất tiếc có nghĩa là bản demo dự án hình ảnh hóa trường hợp coronavirus sẽ không hoạt động nữa, nhưng gợi ý của chúng tôi sẽ vẫn hữu ích cho nhiều triển khai khác khi bạn cần hiển thị dữ liệu RedisTimeSeries trên bảng Grafana Worldmap.

Trong các bài viết trước, chúng tôi đã giới thiệu và hướng dẫn cách sử dụng Nguồn dữ liệu Redis mới cho Grafana:

  • Giới thiệu Trình cắm nguồn dữ liệu Redis cho Grafana
  • Cách sử dụng Nguồn dữ liệu Redis Mới cho Trình cắm Grafana

Trong bài đăng này, chúng tôi muốn khám phá một số ví dụ thực tế được thiết kế để cung cấp cho bạn ý tưởng về nhiều bộ dữ liệu thú vị mà bạn có thể lưu trữ trong Redis và trực quan hóa trong Grafana. Chúng tôi sẽ đề cập đến ba ứng dụng khác nhau:

  1. Bảng điều khiển thời tiết
  2. Hình ảnh hóa các trường hợp coronavirus
  3. Bản giới thiệu cửa hàng bật lên

1. Bảng điều khiển thời tiết

Tôi có thực sự nghĩ rằng thế giới cần một bảng điều khiển thời tiết khác không? Em đồng ý!

Chắc chắn, hầu hết thời gian tôi không phải là người am hiểu về thời tiết. Tôi thường không thực sự quan tâm đến thời tiết như thế nào. Và ngay cả khi tôi làm vậy, bảng điều khiển thời tiết tốt nhất thường chỉ là một cửa sổ nhìn ra ngoài ngôi nhà của tôi. Nhưng đôi khi, có lẽ khi tôi tìm thấy một số thời gian rảnh rỗi để ra ngoài chụp ảnh hoặc lái máy bay không người lái của mình, người đam mê thời tiết trong tôi thức tỉnh.

Tất nhiên, câu hỏi lớn là tôi nên đi đâu? Có rất nhiều địa điểm thú vị trong vòng vài giờ lái xe từ nhà tôi ở New Jersey, và thời tiết có thể rất khác nhau giữa các địa điểm. Những gì tôi thực sự muốn là một bảng điều khiển hiển thị thời tiết ở hàng chục vị trí trên một màn hình, vì vậy tôi có thể so sánh các điều kiện trong nháy mắt. Quan trọng là, tôi không chỉ muốn so sánh các vị trí gần nhau.

3 ứng dụng trong đời thực được xây dựng bằng Nguồn dữ liệu Redis cho Grafana

Cũng quan trọng không kém, tôi thích làm việc với các con số. Tôi biết rằng chụp ảnh phong cảnh hoạt động tốt nhất khi lượng mây che phủ nằm trong khoảng 20% ​​- 50%. Để bay máy bay không người lái của tôi, tốc độ gió dưới 10 dặm / giờ là lý tưởng, 10 - 20 dặm / giờ là khó và bất cứ thứ gì trên 20 dặm / giờ đều có thể nguy hiểm. Vì vậy, một biểu tượng thời tiết dễ thương như thế này không làm tôi hài lòng lắm:

Với ý nghĩ đó, đây là cách tôi xây dựng bảng điều khiển thời tiết bằng Redis.

May mắn thay, dữ liệu thời tiết thô hiện đã có sẵn rộng rãi thông qua nhiều lựa chọn API thời tiết, nhiều trong số chúng miễn phí (với một số hạn chế). Tôi đã chọn sử dụng API OpenWeatherMap vì gói miễn phí của nó cung cấp cho tôi mọi thứ tôi cần:dự báo hàng giờ trong 48 giờ, dự báo hàng ngày trong 7 ngày và các điều kiện hiện tại.

Tôi đã viết một tập lệnh Python đơn giản để lấy dữ liệu từ API và đưa dự báo hàng giờ / hàng ngày vào cơ sở dữ liệu Redis bằng cách sử dụng mô-đun RedisTimeSeries và các điều kiện hiện tại vào một tập hợp chuỗi thời gian khác cho lịch sử.

Bảng điều khiển thời tiết của tôi tuân theo hai quy tắc bảng điều khiển bắt buộc của tôi:

  1. Tất cả dữ liệu sẽ được hiển thị trên một màn hình, không cần cuộn.
  2. Một người có thể hiểu tình huống hiển thị trên trang tổng quan càng nhanh càng tốt.
3 ứng dụng trong đời thực được xây dựng bằng Nguồn dữ liệu Redis cho Grafana

Phần trên cùng của trang tổng quan hiển thị các điều kiện hiện tại cho một vị trí, có thể là địa điểm chính hoặc yêu thích hoặc chỉ được chọn từ danh sách các địa điểm có sẵn (có danh sách lựa chọn biến mẫu Grafana ở góc trên cùng bên trái của trang tổng quan). Nó cũng hiển thị các khoảng thời gian phù hợp cho hoạt động cụ thể tại vị trí đó. Grafana cho phép tôi đánh dấu các vùng thấp / cao cho nhiệt độ, các vùng nguy hiểm cho tốc độ gió, hiển thị mức độ mây và đánh dấu các khoảng thời gian ban ngày và ban đêm.

Phần dưới cùng nhóm các vị trí theo hoạt động, giúp dễ dàng so sánh chúng. Vòng tròn càng lớn thì càng có nhiều giờ tốt cho một hoạt động nhất định ở một địa điểm nhất định.

3 ứng dụng trong đời thực được xây dựng bằng Nguồn dữ liệu Redis cho Grafana

2. Hình ảnh hóa các trường hợp coronavirus

Tôi thích đi du lịch, nhưng năm 2020 đã khiến hàng triệu người phải ở nhà trong nhiều tháng liên tục (tôi hy vọng không phải là mãi mãi!). Giờ đây, khi nhiều tiểu bang dần bắt đầu mở cửa trở lại, điều quan trọng là bạn phải đi du lịch thông minh và hiểu tình hình COVID-19 ở cả địa điểm xuất phát và điểm đến của bạn. Điều đó có nghĩa là không chỉ chú ý đến bức tranh hiện tại mà còn cả các xu hướng dài hạn.

Đây là những gì Trang tổng quan về virus Grafana Hoa Kỳ của tôi hiển thị. Nó dựa trên dữ liệu API Coronavirus, được tải vào mô-đun RedisTimeSeries.

3 ứng dụng trong đời thực được xây dựng bằng Nguồn dữ liệu Redis cho Grafana

Bên cạnh biểu diễn đồ thị tiêu chuẩn, dữ liệu cũng được vẽ trên bản đồ. Trình cắm Nguồn dữ liệu Redis không được bảng điều khiển Grafana Worldmap hỗ trợ chính thức, nhưng bạn có thể làm cho nó hoạt động bằng hai bước đơn giản:

Bước 1: Áp dụng phép chuyển đổi “Nhãn thành trường” cho kết quả đầu ra chuỗi thời gian:

3 ứng dụng trong đời thực được xây dựng bằng Nguồn dữ liệu Redis cho Grafana

Bước 2: Thay đổi thông số bản đồ “Dữ liệu vị trí” thành chế độ bảng và ánh xạ các trường có liên quan:

3 ứng dụng trong đời thực được xây dựng bằng Nguồn dữ liệu Redis cho Grafana

Hai bước này sẽ cho phép bạn gắn giá trị chuỗi thời gian vào điểm có liên quan trên bản đồ, được đặt bởi nhãn "geohash" của RedisTimeSeries. Nhãn “trạng thái” được sử dụng để hiển thị tên của vị trí trên bản đồ.

3. Bản giới thiệu cửa hàng bật lên

Tôi là một người hâm mộ lớn của Redis Streams, một kiểu dữ liệu mới được giới thiệu trong Redis 5.0 và tôi đang tìm kiếm một giải pháp nhanh chóng và đơn giản để theo dõi hàng đợi xử lý dữ liệu. Trong khi làm việc trên Nguồn dữ liệu Redis, nhóm của chúng tôi đã bắt đầu khám phá RedisGears — một khuôn khổ động cho phép các nhà phát triển viết và thực thi các hàm triển khai các luồng dữ liệu trong Redis trong khi trừu tượng hóa việc phân phối và triển khai dữ liệu — cho một dự án khác và chúng tôi quyết định sử dụng chúng cùng nhau cho bản trình diễn đường ống dữ liệu này cho cửa hàng bật lên.

RedisGears hỗ trợ một số loại trình đọc hoạt động trên các loại dữ liệu đầu vào khác nhau. Để xem tin nhắn luồng, chúng tôi đã sử dụng StreamReader trong chế độ sự kiện. Trong chế độ này, trình đọc được thực thi để phản hồi các sự kiện được tạo bởi các thư mới được thêm vào luồng.

# Add Time-Series
def tsAdd(x):
   xlen = execute('XLEN', x['key'])
   execute('TS.ADD', 'ts:len:'+x['key'], '*', xlen)
   execute('TS.ADD', 'ts:enqueue:' + x['key'], '*', x['value'])

# Stream Reader for any Queue
gb = GearsBuilder('StreamReader')
gb.countby(lambda x: x['key']).map(tsAdd)
gb.register(prefix='queue:*', duration=5000, batch=10000, trimStream=False)

StreamReader chấp nhận nhiều đối số kiểm soát cách nó được kích hoạt. Trong trường hợp của chúng tôi, chúng tôi muốn trình đọc được kích hoạt sau mỗi 5 giây hoặc sau khi nó nhận được 10.000 tin nhắn. Tùy chọn cuối cùng, trimStream, chỉ định không cắt bớt luồng sau khi thực thi.

Chúng tôi đã sử dụng RedisTimeSeries để lưu trữ số lượng thư đến và các mẫu kích thước hàng đợi. Như đã giải thích trong bài đăng blog giới thiệu về Trình cắm nguồn dữ liệu Redis dành cho Grafana, chuỗi thời gian có thể dễ dàng hình dung trong Grafana.

3 ứng dụng trong đời thực được xây dựng bằng Nguồn dữ liệu Redis cho Grafana

Để chứng minh cách Redis Streams, RedisTimeSeries, RedisGears và Redis Data Source có thể hoạt động cùng nhau, chúng tôi đã tạo bản trình diễn Cửa hàng bật lên với trang tổng quan động:

3 ứng dụng trong đời thực được xây dựng bằng Nguồn dữ liệu Redis cho Grafana

Bảng điều khiển Grafana này hiển thị:

  • Sản phẩm Có sẵn: giá trị của khóa sản phẩm, sẽ giảm khi đơn đặt hàng hoàn tất
  • Khách hàng đặt hàng, xử lý đơn hàng và đơn hàng đã hoàn tất: độ dài của hàng đợi:khách hàng, hàng đợi:đơn đặt hàng và hàng đợi:toàn bộ luồng
  • Tràn Khách hàng: sự khác biệt giữa đơn đặt hàng do khách hàng gửi và đơn đặt hàng đã hoàn thành
  • Khách hàng Đặt hàng: đơn đặt hàng được tạo sau 5 giây
  • Đơn đặt hàng trong hàng đợi: đơn đặt hàng đang chờ xử lý
  • Quy trình đã Hoàn thành: đơn đặt hàng được hoàn thành trong 5 giây

Vui lòng xem qua kho lưu trữ GitHub cho dự án này để xem cách chúng tôi tạo tải, các tập lệnh RedisGears mà chúng tôi đã sử dụng và cách định cấu hình Nguồn dữ liệu Redis để truy vấn dữ liệu RedisTimeSeries bằng lệnh TS.RANGE.

Kết luận

Ba tình huống thực tế này trình bày các cách sử dụng Nguồn dữ liệu Redis cho Grafana với các mô-đun Redis khác nhau. Chúng tôi hy vọng họ truyền cảm hứng cho bạn sử dụng công nghệ này và xây dựng các ứng dụng của riêng bạn.

Bạn sẽ ở trong một công ty tốt. Kể từ khi plugin Nguồn dữ liệu Redis được xuất bản trong kho lưu trữ Grafana, nó đã được tải xuống hơn 10.000 lần, được bao gồm trong các plugin cộng đồng phổ biến có thể cải thiện trang tổng quan Grafana của bạn, hỗ trợ thêm cho cụm Redis, Sentinel, Unix socket và danh sách kiểm soát truy cập (ACL):

3 ứng dụng trong đời thực được xây dựng bằng Nguồn dữ liệu Redis cho Grafana

Nhưng đó không phải là tất cả. Hãy theo dõi blog Redis Tech để tìm hiểu về một dự án thú vị kết hợp khả năng phát trực tuyến của Grafana với tính tương tác để đưa Grafana vượt ra ngoài khả năng quan sát bằng bảng redis-cli.