Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

Giải thích về Redis Pub/Sub:Tăng cường khả năng mở rộng với tin nhắn Xuất bản/Đăng ký

Giải thích về Redis Pub/Sub:Tăng cường khả năng mở rộng với tin nhắn Xuất bản/Đăng ký

Khi bạn đang làm việc trên một ứng dụng cần có khả năng dễ dàng bảo trì, có thể mở rộng và hoạt động hiệu quả thì mẫu thông báo Xuất bản/Đăng ký là một lựa chọn phù hợp.

Ý tưởng đằng sau nó rất đơn giản nhưng mạnh mẽ. Chúng tôi có người gửi được gọi là nhà xuất bản. Vai trò duy nhất của họ là gửi hoặc xuất bản tin nhắn. Họ không quan tâm đến việc ai sẽ nhận chúng hoặc liệu có ai đó sẽ nhận chúng hay không. Họ chỉ bắn và quên tin nhắn. Và họ làm điều đó thông qua kênh .

Ví dụ, hãy nghĩ về chúng như các kênh truyền hình. Chúng tôi có các kênh Thể thao, kênh Dự báo thời tiết, kênh Nấu ăn, v.v. Mỗi nhà xuất bản gửi tin nhắn của mình đến một kênh nhất định và bất kỳ ai được đăng ký vì kênh này sẽ có thể nhận được những tin nhắn này.

Đây là nơi người đăng ký vào chơi nhé. Họ có thể đăng ký một hoặc nhiều kênh và bắt đầu nhận các tin nhắn được phát trên đó.

Như chúng tôi đã đề cập, các tin nhắn sẽ được gửi đi và bị lãng quên. Điều này có nghĩa là nếu người đăng ký đăng ký một kênh nhất định thì tất cả tin nhắn đã được gửi trước đó trên kênh đó sẽ không có sẵn cho người đăng ký này.

Do tính chất của loại kiến trúc này, chúng tôi có thể dễ dàng đạt được sự kết hợp thấp giữa các thành phần khác nhau và cung cấp nền tảng vững chắc để xây dựng các ứng dụng mạnh mẽ và dễ bảo trì.

Ví dụ:hãy tưởng tượng một tình huống mà chúng tôi cần thay thế hoặc cải thiện phần xuất bản trong hệ thống của mình – chẳng hạn như thêm nhiều nhà xuất bản, nhiều kênh hơn, v.v. Vì hai phần này tách biệt, nghĩa là nhà xuất bản không quan tâm đến người đăng ký và ngược lại, nên chúng tôi có thể dễ dàng thực hiện điều đó mà không phải lo lắng liệu chúng tôi có vi phạm một số phần khác của hệ thống hay không. Chúng tôi chỉ thêm các nhà xuất bản mới. Sau đó, khi người đăng ký truy cập vào các kênh liên quan, họ sẽ bắt đầu sử dụng chúng.

Redis là gì?

Ý tưởng ban đầu đằng sau Redis là phục vụ như một giải pháp bộ đệm trong bộ nhớ, thay thế cho Memcached tổ tiên của nó.

Nhưng ngày nay, đó là giải pháp nhiều trong một, cung cấp kho lưu trữ cấu trúc dữ liệu trong bộ nhớ, cơ sở dữ liệu khóa-giá trị, môi giới tin nhắn, v.v. Điều này khiến nó trở thành ứng cử viên hoàn hảo khi xây dựng một ứng dụng cần giải pháp bộ nhớ đệm thực sự nhanh cũng như một số tính năng khác được đề cập trước đó. Đặc biệt nếu hiệu suất của ứng dụng đóng vai trò quan trọng đối với việc sử dụng thường xuyên.

Giải thích về Redis Pub/Sub:Tăng cường khả năng mở rộng với tin nhắn Xuất bản/Đăng ký

So sánh hiệu suất của Redis (nguồn:google)

Một trong những lợi thế lớn nhất khi sử dụng Redis là cộng đồng và tài nguyên kỹ thuật khổng lồ mà bạn có thể tìm thấy trực tuyến. Rất nhiều tài nguyên trong số này là miễn phí và có những nền tảng trực tuyến cung cấp dịch vụ theo cấp độ miễn phí.

Redis cũng bao gồm trong kho vũ khí của mình một giải pháp đám mây. Nếu bạn muốn tự mình dùng thử, bạn có thể vào đây và đăng ký tài khoản miễn phí hoặc sử dụng phiếu giảm giá ban đầu của họ.

Giải thích về Redis Pub/Sub:Tăng cường khả năng mở rộng với tin nhắn Xuất bản/Đăng ký

Trang đăng ký/đăng nhập đám mây doanh nghiệp Redis

pub/sub là gì?

Xuất bản/Đăng ký kênh trong Redis là một trong những tính năng tôi chưa đề cập ở trên nhưng nó đã được đưa vào các phiên bản cuối cùng của Redis. Đây là cách họ triển khai mô hình nhắn tin pub/sub, trong đó chúng tôi có các nhà xuất bản và người đăng ký trao đổi tin nhắn qua các kênh.

Chúng ta sẽ tìm hiểu ngắn gọn về nó bên dưới và sau đó xem nó thực tế trong một ứng dụng demo nhỏ mà tôi đã chuẩn bị cho bạn.

Redis pub/sub hoạt động như thế nào?

Chúng tôi có nhà xuất bản (người tạo tin nhắn), kênh (mà tin nhắn đang đi qua) và người đăng ký (người nhận tin nhắn). Ai nhận được gì chỉ phụ thuộc vào việc ai đăng ký kênh nào.

Hãy xem cách hoạt động của tính năng này trong một ví dụ:

Nếu chúng tôi đã tạo ba nhà xuất bản sẽ xuất bản thông báo tới ba kênh khác nhau. Hãy gọi họ là kênh 1, 2 và 3. Chúng tôi cũng có ba người đăng ký, hãy gọi họ là người đăng ký A, B và C.

Bây giờ, hãy tưởng tượng thuê bao A đang nghe tin nhắn trên cả ba kênh, nghĩa là nó đã đăng ký các kênh đó. Còn thuê bao B và C đăng ký kênh 2 và 3. Điều này có nghĩa là khi một trong ba nhà phát hành gửi tin nhắn thì thuê bao A sẽ nhận được tin nhắn đó. Và người đăng ký B và C sẽ chỉ nhận được tin nhắn do nhà xuất bản 2 và 3 gửi vì họ chỉ nghe tin nhắn trên các kênh này (2 và 3).

Lưu ý rằng chúng ta có hai thực thể sử dụng một kênh – một thực thể gửi, một thực thể nhận – nhưng chúng hoàn toàn độc lập. Và các tin nhắn được gửi đi không được lưu giữ. Một khi chúng được nhà xuất bản gửi đi, chúng sẽ bị lãng quên. Các thực thể duy nhất đã đăng ký tại thời điểm gửi sẽ nhận được chúng.

Cách sử dụng pub/sub trong Redis

Có rất nhiều thư viện máy khách mà bạn có thể sử dụng với Redis. Có một trang dành riêng để mọi người có thể vào và chọn một trang, tùy thuộc vào nhu cầu cụ thể của dự án hoặc chỉ dựa trên ngôn ngữ lập trình ưa thích của bạn.

Mọi người ở Redis cũng đánh dấu một số kho lưu trữ này là được đề xuất điều này giúp bạn lựa chọn dễ dàng hơn nếu bạn là người mới làm quen với tất cả những điều này.

Đối với bản demo bên dưới, tôi đã sử dụng ioredis, một ứng dụng khách Redis đầy đủ tính năng cho Node.js. Tôi chọn điều này vì giao diện người dùng ứng dụng demo được xây dựng bằng React và Node.js và mã máy chủ của tôi hoạt động khá tốt với nó.

Redis Pub/Sub Demo

Giải thích về Redis Pub/Sub:Tăng cường khả năng mở rộng với tin nhắn Xuất bản/Đăng ký

Ứng dụng Redis Pub/Sub Visualizer

Hiển thị thời gian!

Ý tưởng đằng sau ứng dụng demo là hiển thị trực quan cách thức hoạt động của mẫu.

Những gì bạn sẽ thấy khi mở nó lần đầu tiên là ba nút để xuất bản các tin nhắn (tin tức) đơn giản trong ba kênh truyền hình tưởng tượng:Thời tiết, Thể thao và Âm nhạc.

Các thẻ bên dưới nút xuất bản là người đăng ký. Khi bạn di chuyển con trỏ chuột qua bất kỳ nút nào trong số chúng, nó sẽ lật về mặt sau và bạn sẽ thấy ba nút. Bạn có thể sử dụng từng nút này để đăng ký kênh liên quan.

Sau khi người đăng ký đăng ký một kênh và bạn nhấp vào biểu tượng hoặc nút xuất bản cho kênh này, bạn sẽ thấy một tin tức mẫu xuất hiện ở mặt trước của thẻ.

Hãy thử kết hợp các nhà xuất bản/người đăng ký khác nhau và xem kết quả.

Tôi hy vọng điều này sẽ giúp bạn hiểu rõ hơn về những gì tôi đã giải thích trong ví dụ trên.

Cách chạy ứng dụng demo cục bộ

Để cài đặt và chạy ứng dụng demo cục bộ, hãy làm theo các bước bên dưới (tất cả các lệnh được coi là chạy từ thư mục gốc của dự án):

Chạy giao diện người dùng:

cd client yarn && yarn dev

Chạy chương trình phụ trợ:

cd server && yarn yarn start

Và cuối cùng, sử dụng bản cài đặt Docker cục bộ của bạn (nếu chưa có, bạn có thể lấy nó từ đây) để chạy cái này:

docker run -p 6379:6379 redislabs/redismod:preview

Đó có lẽ là cách dễ nhất để có một bản sao Redis đang chạy cục bộ. Tùy chọn khác là sử dụng trực tiếp Redis Cloud và triển khai ứng dụng trực tuyến. Đây là một tùy chọn mà tôi vẫn đang nghiên cứu và nếu tôi thực hiện được, tôi sẽ triển khai toàn bộ ứng dụng và sẽ cho bạn biết.

Kết thúc

Bài viết này đã giới thiệu tới các bạn chủ đề mẫu tin nhắn pub/sub. Điều quan trọng cần nhớ là bất cứ khi nào chúng ta muốn xây dựng một ứng dụng có hiệu suất cao với kiến trúc có độ kết hợp thấp và các tính năng nhắn tin như thời gian thực, hãy cân nhắc sử dụng mẫu Xuất bản/Đăng ký và đặc biệt là Redis.

Trên thực tế, rất nhiều ứng dụng thực tế sử dụng Redis đều dựa trên bảng điều khiển. Điều này có nghĩa là thường có một màn hình bảng điều khiển đẹp mắt, hiển thị các dữ liệu khác nhau, thường được cập nhật theo thời gian thực.

Ví dụ, hãy tưởng tượng một hệ thống hiển thị lưu lượng truy cập trong một khu vực cụ thể. Loại phần mềm này là ứng cử viên hoàn hảo để tận dụng lợi thế của pub/sub. Và trong nhiều trường hợp, điều này đạt được bằng cách sử dụng Redis.

Trong mọi trường hợp, với tư cách là nhà phát triển và kỹ sư, chúng ta phải luôn được hướng dẫn bởi các nhu cầu cụ thể của dự án mà chúng ta đang thực hiện. Bất cứ khi nào chúng tôi quyết định giới thiệu một mô hình hoặc công nghệ mới, chúng tôi nên thực hiện việc đó một cách cẩn thận và hỗ trợ nó bằng những nghiên cứu nghiêm túc.

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu