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

RedisMart:Ứng dụng bán lẻ hoàn toàn nổi bật với Redis

Bạn có nhớ bản trình diễn bài phát biểu quan trọng của RedisConf không? Nếu có, bạn có thể thích thú khi thấy sự phát triển đằng sau bức màn của ứng dụng bán lẻ (RedisMart) đã được trình bày. Nếu không, thì đã đến lúc xem Yiftach và Ash trình bày nó. Đây là liên kết đến video một lần nữa:

Bài viết này là bài đầu tiên của một loạt bài. Nó cung cấp cho bạn một số thông tin chi tiết về các yêu cầu chính và kiến ​​trúc của ứng dụng bán lẻ RedisMart bằng cách xem cách bạn có thể triển khai danh mục sản phẩm, khoảng không quảng cáo được phân phối theo thời gian thực và tìm kiếm sản phẩm do AI hỗ trợ. Bạn cũng sẽ thấy cách Redis Enterprise hỗ trợ tất cả các chức năng đó.

Yêu cầu

Như thường lệ trong phát triển phần mềm, chúng ta hãy bắt đầu bằng cách thảo luận về một số yêu cầu cơ bản. Dưới đây là một số câu chuyện người dùng được ghi nhận một cách không chính thức:

  • Là khách hàng bán lẻ:
    • Tôi muốn có nhanh (Độ trễ từ đầu đến cuối <100ms) truy cập vào danh mục và chi tiết sản phẩm bằng cách có thể tìm thấy sản phẩm dựa trên nhiều tiêu chí (ví dụ:toàn văn, phạm vi giá, xếp hạng của những khách hàng khác hoặc tìm kiếm theo từng khía cạnh). Thời gian phản hồi cao dẫn đến tỷ lệ thoát cao.
    • Nếu tôi không biết tên thương hiệu của sản phẩm hoặc muốn thứ gì đó tương tự như những gì tôi đã mua trước đây, tôi muốn mua sắm các sản phẩm theo hình ảnh. Thật tuyệt nếu tìm được một chiếc máy ảnh gần giống hoặc tương tự về mặt hình ảnh với những gì tôi có.
    • Tôi muốn giao hàng an toàn hoặc có thể mua trực tuyến và mua tại cửa hàng hoặc lề đường (nhấp và thu thập).
  • Với tư cách là người quản lý hàng tồn kho:
    • Tôi cần có cái nhìn chính xác, theo thời gian thực về khoảng không quảng cáo của mình để mang lại trải nghiệm đáp ứng tốt hơn cho khách hàng của mình.
    • Tôi muốn tối ưu hóa khoảng không quảng cáo của mình để giữ các mặt hàng có nhu cầu cao trong kho và giảm lượng hàng hóa di chuyển chậm.
    • Tôi cần chế độ xem gần như thời gian thực về hàng tồn kho trên các cửa hàng và / hoặc trung tâm thực hiện khác nhau để tối ưu hóa lượng hàng tồn kho.

Kiến trúc

Bây giờ chúng tôi đã biết các yêu cầu, hãy để tôi vẽ ra ý tưởng về cách Redis có thể giúp chúng tôi:

  • RediSearch cho phép tìm kiếm sản phẩm phong phú với bộ lọc số, tìm kiếm toàn văn bản, lập chỉ mục địa lý, tính điểm và tổng hợp.
  • Tính năng Active-Active của Redis Enterprise cung cấp các bản cập nhật theo thời gian thực được sao chép theo địa lý đối với các khoảng không quảng cáo ngay lập tức.
  • RedisAI, RedisGears và RediSearch được tận dụng để xây dựng một đường dẫn máy học tích hợp cơ sở dữ liệu để suy luận trong thời gian thực và tìm kiếm độ tương tự vectơ.
RedisMart:Ứng dụng bán lẻ hoàn toàn nổi bật với Redis

Từ đó, không quá khó để hình dung ra thiết kế sau:

RedisMart:Ứng dụng bán lẻ hoàn toàn nổi bật với Redis

Các hộp màu xanh lam đại diện cho các dịch vụ. Các hộp màu đỏ hiển thị cơ sở dữ liệu được sử dụng bởi các dịch vụ đó.

Chúng tôi đã làm theo một số phương pháp tiếp cận microservices như:

  • Một kho dữ liệu cho mỗi dịch vụ :Mỗi dịch vụ có kho dữ liệu riêng và dữ liệu được trao đổi qua giao diện dịch vụ chứ không phải truy cập trực tiếp vào kho dữ liệu của dịch vụ khác.
  • Tính tồn tại của đa âm vật :Mỗi dịch vụ sử dụng kho dữ liệu phù hợp nhất dựa trên yêu cầu của nó. Nói về tính bền bỉ của đa ô:Redis là một nền tảng dữ liệu cho phép bạn kết hợp các tính năng và mô hình dữ liệu khác nhau được cung cấp bởi các mô-đun để xây dựng kho dữ liệu phù hợp với yêu cầu của bạn! Có thể không ngạc nhiên khi chúng tôi sử dụng Redis và một số mô-đun Redis để triển khai các hộp màu đỏ.

Thực hiện

RedisMart cung cấp giao diện người dùng do ứng dụng web cửa hàng trực tuyến cung cấp. RedisMart có giao diện người dùng giao diện người dùng (trang web bán lẻ hướng tới khách hàng) và giao diện người dùng phụ trợ (để quản lý khoảng không quảng cáo). Chúng tôi đã triển khai một loạt các dịch vụ được tận dụng bởi ứng dụng đằng sau hậu trường.

  • Mua hàng: Dịch vụ mua hàng (đáng ngạc nhiên là) xử lý các giao dịch mua của khách hàng.
  • Khoảng không quảng cáo: Dịch vụ kiểm kê trả lời các câu hỏi về số lượng hàng trong kho và số lượng giảm khi khách hàng mua các mặt hàng. Cập nhật khoảng không quảng cáo được sao chép trong thời gian gần thực cho hàng tồn kho ở các vị trí khác bằng cách tận dụng tính năng Active-Active của Redis Enterprise. Redis Enterprise tận dụng các loại dữ liệu được sao chép không có xung đột để xử lý các bản cập nhật đồng thời. Trong trường hợp này, một kiểu dữ liệu bộ đếm âm dương có thể đặt lại được sử dụng để ngăn ngừa tổn thất bộ đếm.
  • Danh mục sản phẩm :Dịch vụ danh mục sản phẩm cung cấp thông tin liên quan đến sản phẩm và đưa ra những cách thức phức tạp để tìm kiếm sản phẩm. Nó sử dụng cơ sở dữ liệu Redis có triển khai các mô-đun RediSearch + RedisJSON. RedisJSON cho phép chúng tôi lưu trữ chi tiết sản phẩm trực tiếp dưới dạng tài liệu JSON. RediSearch có thể lập chỉ mục, truy vấn và tìm kiếm toàn văn tài liệu JSON. Các bản cập nhật sản phẩm có thể dễ dàng được phổ biến trên nhiều trang web bằng cách sử dụng tính năng Active-Active của Redis Enterprise.
  • Nhận dạng hình ảnh :Cuối cùng, dịch vụ nhận dạng hình ảnh cung cấp chức năng phục vụ mô hình AI để tìm kiếm độ tương đồng vectơ trên hình ảnh. Nó sử dụng cơ sở dữ liệu Redis có cài đặt các mô-đun RedisGears, RedisAI và RediSearch. RedisGears cho phép chúng tôi xây dựng một đường ống dẫn dữ liệu và thực thi nó gần với nơi dữ liệu tồn tại. Chúng tôi đã tận dụng Redis AI để phục vụ và suy luận mô hình AI. RediSearch được tận dụng để thực hiện tìm kiếm thực tế các hình ảnh tương tự dựa trên kết quả đầu ra của mô hình AI.

Như đã đề cập trước đây, đây là bài viết đầu tiên của một loạt bài. Vui lòng theo dõi để tìm hiểu thêm về cách chúng tôi triển khai các dịch vụ riêng lẻ.

RedisMart

Bây giờ chúng ta đã xem xét phía sau bức màn, hãy xem ứng dụng trông như thế nào trên sân khấu.

RedisMart:Ứng dụng bán lẻ hoàn toàn nổi bật với Redis

Trang chủ hiển thị cho bạn các danh mục sản phẩm chính. Một nhấp chuột vào danh mục sẽ kích hoạt truy vấn tìm kiếm thông qua dịch vụ danh mục sản phẩm bằng cách trả về 16 sản phẩm đầu tiên thuộc danh mục đó.

Trường "Tìm kiếm sản phẩm" cho phép bạn thực hiện tìm kiếm toàn văn cho các sản phẩm. Nó dẫn đến trang kết quả tìm kiếm sau:

RedisMart:Ứng dụng bán lẻ hoàn toàn nổi bật với Redis

Trang kết quả tìm kiếm có hai phần:Tìm kiếm theo khía cạnh và danh sách kết quả thực tế. Tìm kiếm theo từng khía cạnh có thể được sử dụng để giới hạn thêm các kết quả tìm kiếm. Bạn có thể làm như vậy bằng cách lọc qua danh mục chính, danh mục phụ, giá và xếp hạng. Chúng ta sẽ nói về chi tiết triển khai về cách thực hiện tìm kiếm theo từng khía cạnh như vậy với RediSearch trong phần hai của loạt bài blog. Hãy để tôi gợi ý cho bạn bằng cách cho phép bạn xem chế độ xem gỡ lỗi của RedisMart:

RedisMart:Ứng dụng bán lẻ hoàn toàn nổi bật với Redis

Như bạn có thể thấy, thẻ và tập hợp đóng một vai trò nào đó.

Nhấp vào biểu tượng máy ảnh nhỏ ở góc trên bên phải cho phép bạn chụp ảnh thứ gì đó mà bạn muốn tìm trong danh mục sản phẩm. Bức ảnh sau của Doug không tìm thấy bất kỳ Dougs nào khác trong cơ sở dữ liệu của chúng tôi…

RedisMart:Ứng dụng bán lẻ hoàn toàn nổi bật với Redis

… Nhưng nó thật độc đáo khi tìm thấy một số tai nghe.

RedisMart:Ứng dụng bán lẻ hoàn toàn nổi bật với Redis

Giả sử rằng bạn quyết định chọn một cặp tai nghe và muốn mua chúng. Sau khi lựa chọn, RedisMart cho phép bạn thêm chúng vào giỏ hàng của mình. Trong quá trình thanh toán, bạn có thể quyết định giao hàng hoặc nhận hàng tại một địa điểm gần.

RedisMart:Ứng dụng bán lẻ hoàn toàn nổi bật với Redis

Tìm kiếm địa lý của RediSearch hỗ trợ tính năng nhận hàng tại địa phương này. Chế độ xem gỡ lỗi cung cấp cho bạn một lần nữa gợi ý về cách thực hiện điều này đằng sau hậu trường.

RedisMart:Ứng dụng bán lẻ hoàn toàn nổi bật với Redis

Ngay sau khi khách hàng hoàn tất việc mua hàng, dịch vụ kiểm kê sẽ tham gia bằng cách giảm số lượng mặt hàng trong kho. Điều này đưa chúng tôi trực tiếp đến phần phụ trợ của ứng dụng, cho phép chúng tôi quản lý khoảng không quảng cáo. RedisMart hình dung cách quan sát cập nhật hàng tồn kho ngay lập tức trên mỗi trang web được nhân rộng. Giao dịch mua ở Hoa Kỳ (GCP us-central1) được nhân rộng trong nháy mắt sang Châu Âu (Azure Bắc Âu).

RedisMart:Ứng dụng bán lẻ hoàn toàn nổi bật với Redis

Một lần nữa, chúng tôi sẽ đề cập đến chi tiết hơn sau. Điểm chính ở đây là bạn có thể truy cập dữ liệu từ một vị trí gần với độ trễ mạng rất thấp, đồng thời ngăn chặn tổn thất bộ đếm khi dữ liệu được sửa đổi đồng thời trên nhiều trang web.

Bạn có thể thấy ứng dụng đang hoạt động bằng cách xem video sau:

Tóm tắt

Chúng tôi hy vọng bạn thích đọc phần đầu tiên này của loạt blog về cách xây dựng một ứng dụng bán lẻ đầy đủ tính năng với Redis. Như bạn có thể thấy, nền tảng dữ liệu thời gian thực Redis cho phép chúng tôi giải quyết các yêu cầu như truy cập ngay lập tức (độ trễ đầu cuối dưới 100ms) vào thông tin sản phẩm bằng cách tận dụng khả năng cơ sở dữ liệu tài liệu của RediSearch + RedisJSON. Sự kết hợp giữa RediSearch + RedisGears + RedisAI cho phép tìm kiếm hình ảnh được hỗ trợ bởi AI để tìm các sản phẩm tương tự trong danh mục sản phẩm. Ngoài ra, các tính năng như tìm kiếm theo từng khía cạnh và tìm kiếm theo địa lý đã được đề cập. Cuối cùng, nhưng không kém phần quan trọng, chúng tôi đã cho bạn thấy rằng bạn có thể dễ dàng tạo khoảng không quảng cáo theo thời gian thực, được sao chép theo địa lý dựa trên tính năng Active-Active của Redis Enterprise. Với tất cả những điều đó, nền tảng thời gian thực của Redis giúp các công ty bán lẻ tác động tích cực đến trải nghiệm mua hàng tổng thể, cung cấp trải nghiệm đáp ứng tốt nhất có thể cho khách hàng và tối ưu hóa hàng tồn kho theo cách tiết kiệm chi phí nhất.

Bạn có muốn tìm hiểu thêm về các dịch vụ riêng lẻ mà chúng tôi đã triển khai cho RedisMart không? Sau đó, hãy theo dõi bài viết blog tiếp theo của loạt bài này!

Bạn muốn thử nó cho mình? Dưới đây là một số liên kết để bạn có thể sử dụng Redis như một nền tảng dữ liệu thời gian thực:

  • Tìm hiểu thêm về Mô-đun
  • github.com/RediSearch
  • github.com/RedisJSON
  • github.com/RedisGears
  • github.com/RedisAI
  • Redis Enterprise Cloud
  • Phân phối Địa lý Hoạt động-Hoạt động

Tín dụng

Xin chân thành cảm ơn tất cả những người đã đóng góp vào ứng dụng demo này:

  • Yiftach Shoolman và Ash Sahu để trình bày ứng dụng demo trong RedisConf
  • Nhóm Tiếp thị Redis (và đặc biệt là Udi Gotlieb, Ash Sahu, Doug Tidwell và Bryson Coles) vì đã đóng góp vào danh sách yêu cầu của ứng dụng demo, tổ chức RedisConf, giúp thiết kế giao diện người dùng và đóng góp cho bài đăng blog này
  • Nhóm Hỗ trợ Kỹ thuật (và đặc biệt là Martin Forstner, Greg Georges và David Maier) để triển khai, thử nghiệm và thiết kế ứng dụng demo — và đóng góp cho bài đăng trên blog này
  • Nhóm CTO (và đặc biệt là Leibale Eidelman, Guy Korland) để phát triển các mô-đun và dịch vụ nhận dạng hình ảnh
  • Nhóm Quản lý sản phẩm (và đặc biệt là Pieter Cailliau, Emmanuel Keller, Jonathan Salomon và Amiram Mizne) vì đã đóng góp vào danh sách yêu cầu của ứng dụng demo và để cung cấp các tính năng của sản phẩm
  • Và tất cả những người mà chúng tôi quên đề cập ở đây

Chúng tôi muốn dành loạt blog này cho nhà phát triển chính của ứng dụng RedisMart, Martin Forstner. Nó đi kèm với nỗi buồn lớn để chia sẻ rằng anh ấy đã qua đời gần đây. Kiến thức, tài năng và óc hài hước của Martin không ai sánh kịp. Anh ấy còn hơn cả một Kỹ sư phần mềm cho Redis - anh ấy còn là một đồng nghiệp, đồng đội, người cố vấn và một người bạn. Hãy yên nghỉ, Martin, chúng tôi nhớ bạn!