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

Xây Dựng Công Cụ Quy Tắc Kinh Doanh Phân tán Có Khả Năng Mở Rộng Với Redis – Hướng Dẫn Bước Đi Bước

Tốc độ và hiệu quả là dấu hiệu của sự xuất sắc (hallmarks of excellence) trong môi trường kinh doanh nhanh chóng ngày nay.

Các tổ chức bị rối rắm trong các quy trình thủ công, cứng nhắc (rigid) gánh chịu trọng lượng của một kiến trúc cồng kềnh (cumbersome architecture) và sẽ mãi mãi bị để lại phía sau (left flat-footed) khi cơ hội kinh doanh trôi qua.

Nhưng những ai có quy trình tự động hóa sẽ hiệu quả hơn, nhanh nhạy hơn (more agile), và có khả năng lớn hơn nhiều (far more likely) để trải qua sự tăng trưởng. Và đó là lý do tại sao các tổ chức cần một hệ thống quản lý quy tắc kinh doanh phân tán (distributed business rules management system - DBRMS).

Nhằm tạo tác động đến cộng đồng kinh doanh, Vishrut Kohli đã xây dựng DBRMS của riêng mình, Bonsai. Bằng cách sử dụng Redis, Bonsai đảm bảo cho người dùng một ứng dụng có thể tự động hóa quy trình trong thời gian thực, tối đa hóa mức độ hiệu suất bằng cách giảm thiểu khả năng xảy ra độ trễ (lags).

Hãy xem ứng dụng này được làm như thế nào. Nhưng trước khi chúng ta đi xa hơn, chúng tôi muốn chỉ ra rằng chúng tôi cũng có một loạt ứng dụng đổi mới (innovative apps) thú vị cho bạn để xem trên Redis Launchpad.

Vì vậy nếu bạn thích bài đăng này, hãy chắc chắn xem qua sau!

Cách Xây Dựng Hệ Thống Quản Lý Quy Tắc Kinh Doanh Phân Tán Sử Dụng Redis

  1. Bạn sẽ xây dựng gì?
  2. Bạn sẽ cần gì?
  3. Kiến trúc
  4. Bắt đầu
  5. Thiết lập backend
  6. Thiết lập frontend
  7. Cách nó hoạt động
  8. Cách thực hiện các tính năng khác nhau

1. Bạn Sẽ Xây Dựng Gì?

Bạn sẽ xây dựng một nền tảng quản lý quy tắc kinh doanh phân tán sẽ giúp các doanh nghiệp tạo, quản lý và triển khai các quy tắc kinh doanh có khả năng mở rộng (scalable) trên toàn doanh nghiệp. Nhiều nhiệm vụ kinh doanh có thể được tự động hóa và giải phóng tài nguyên bổ sung có thể được đầu tư ở nơi khác trong doanh nghiệp.

Ứng dụng này sẽ cho phép các tổ chức chỉ định, triển khai và quản lý quy tắc quyết định kinh doanh (business decision rules) và logic quyết định để các ứng dụng có thể liên tục đưa ra quyết định thông minh với tốc độ và không cần can thiệp của con người.

Dưới đây chúng tôi sẽ làm nổi bật các thành phần bạn sẽ cần để đưa ứng dụng này đến sự sống cũng như hướng dẫn bạn qua từng bước của quy trình triển khai.

Sẵn sàng bắt đầu?

OK, hãy đi thẳng vào vấn đề.

2. Bạn Sẽ Cần Gì?

  • Python: được sử dụng như một ngôn ngữ lập trình mạnh mẽ, đa mục đích (high-purpose powerful programming language)
  • Redis: một kho dữ liệu trong bộ nhớ (in-memory data store) để ingest (nhập), xử lý và phân tích dữ liệu thời gian thực với độ trễ dưới mili-giây (sub-millisecond latency).
  • RedisJSON: được sử dụng như một mô-đun cung cấp hỗ trợ JSON trong Redis
  • RedisTimeSeries: được sử dụng như một mô-đun thêm cấu trúc dữ liệu chuỗi thời gian vào Redis

3. Kiến Trúc

4. Bắt Đầu

Đảm bảo rằng bạn đã có cơ sở dữ liệu Redis Stack chạy sẵn:

5. Thiết Lập Front End

Bắt Đầu Với Create React App

Dự án này được bootstrap (khởi tạo) với Create React App.

Bước 1: Sao chép kho lưu trữ frontend (Clone the frontend repository)

Bước 2: Cài đặt các phụ thuộc (Install the dependencies)

yarn install

Bước 3: Sử dụng các script có sẵn (Use available scripts)

Trong thư mục dự án, bạn có thể chạy các script sau:

yarn start

Chạy ứng dụng ở chế độ phát triển (development mode).

Mở https://localhost:3000 để xem trong trình duyệt.

Trang sẽ tải lại (reload) nếu bạn làm chỉnh sửa.

Bạn cũng sẽ thấy bất kỳ lỗi lint nào trong console.

yarn test

Khởi chạy trình chạy kiểm thử (test runner) ở chế độ xem tương tác (interactive watch mode).

Xem phần về chạy kiểm thử để biết thêm thông tin.

yarn build

Xây dựng ứng dụng cho sản xuất (production) vào thư mục build.

Nó đóng gói (bundles) React đúng cách ở chế độ sản xuất và tối ưu hóa bản dựng cho hiệu suất tốt nhất.

Bản dựng được minified (nén) và tên tệp bao gồm các hash.

Ứng dụng của bạn bây giờ đã sẵn sàng để triển khai (deploy).

Xem phần về triển khai để biết thêm thông tin.

yarn eject

Lưu ý: đây là một hoạt động một chiều (one-way operation). Một khi bạn eject, bạn không thể quay lại!

Nếu bạn không hài lòng với công cụ xây dựng (build tool) và lựa chọn cấu hình, bạn có thể eject bất kỳ lúc nào. Lệnh này sẽ loại bỏ sự phụ thuộc xây dựng đơn lẻ từ dự án của bạn.

Thay vào đó, nó sẽ sao chép tất cả các tệp cấu hình và các phụ thuộc bắc cầu (transitive dependencies) (webpack, Babel, ESLint, v.v.) ngay vào dự án của bạn để bạn có toàn quyền kiểm soát chúng. Tất cả các lệnh trừ eject vẫn sẽ hoạt động, nhưng chúng sẽ trỏ đến các script đã sao chép để bạn có thể điều chỉnh chúng. Tại thời điểm này, bạn tự chịu trách nhiệm.

Bạn không bao giờ phải sử dụng eject. Bộ tính năng được tuyển chọn (curated feature set) phù hợp cho triển khai nhỏ và trung bình, và bạn không nên cảm thấy bắt buộc phải sử dụng tính năng này. Tuy nhiên, chúng tôi hiểu rằng công cụ này sẽ không hữu ích nếu bạn không thể tùy chỉnh nó khi bạn sẵn sàng cho nó.

Bước 4. Sao chép Bonsai Rule Engine

git clone: ​​https://github.com/redis-developer/bonsai

Bước 5. Cài đặt các phụ thuộc Python

Bước 6. Thực thi script (Execute the script)

6. Cách Nó Hoạt Động

Từ Khóa (Keywords)

  • Namespace
  • Rules (Quy tắc)
  • entity (Thực thể)

Namespace

Sự phân tách logic nhất của các quy tắc là dựa trên namespace. Namespace là một tập hợp quy tắc được đánh giá trên một tập hợp dữ liệu. Ví dụ, sau trong bài đăng này, bạn sẽ xây dựng một namespace cho một hệ thống quản lý trung thành (loyalty management system) và tất cả các quy tắc liên quan đến đó sẽ được lưu dưới namespace đó.

Cấu trúc để lưu dữ liệu của chúng ta là

Namespace ở đây là:

tax_system.

Lệnh được sử dụng để tạo namespace là:

Entity (Thực Thể)

Một thực thể (entity) đề cập đến đầu vào (input) của một namespace và sẽ cung cấp đầu ra (output) sau khi đánh giá các quy tắc hiện có trong namespace đó.

Rules (Quy Tắc)

Từ Khóa Con (Sub keywords)
  • Predicates (Tiền đề): Nghĩa là điều kiện đầu vào cho quy tắc của bạn.
  • Results (Kết Quả): Nghĩa là điều kiện đầu ra cho quy tắc của bạn.
  • Operators (Toán Tử): Chúng tôi có 7 toán tử:
    – eq nghĩa là =
    – range nghĩa là giá trị nên nằm trong phạm vi cho trước (giới hạn trên không bao gồm)
    – contains nghĩa là chuỗi nên chứa giá trị đầu vào cho trước.
    – gt nghĩa là lớn hơn hoặc >
    – gte nghĩa là lớn hơn hoặc bằng >=
    – lt nghĩa là nhỏ hơn <
    – lte nghĩa là nhỏ hơn hoặc bằng <=

Giả sử chúng ta muốn tạo một quy tắc xác định giá trị thuế của một công dân sống ở tỉnh Ontario và thành phố Toronto. Ngoài ra, người này trả 35% thuế thu nhập. Vì vậy chúng ta có hai biến – province và city nhưng một đầu ra tax_rate.

Vì vậy trong trường hợp này, một ví dụ predicate (đầu vào) của một tỉnh là Ontario có thể là một predicate bao gồm 4 phần:

Mỗi quy tắc là một lệnh (command) quyết định đầu ra nên là gì cho bất kỳ đầu vào cụ thể (entity) nào. Mỗi quy tắc sẽ được lưu vào một namespace qua định dạng sau:

Ontario and the city is Toronto the tax rate will be 35. 

Đây là đối tượng quy tắc (rule object):

Namespace ở đây là:

loyalty_system
và rule_id là:
123456.

Lệnh dùng để cập nhật quy tắc trong namespace là:

Lệnh dùng để lấy tất cả quy tắc trong namespace là:

Lệnh dùng để lấy một quy tắc trong namespace theo rule_id là:

7. Cách Thực Hiện Các Tính Năng Khác Nhau

Cách Tạo Quy Tắc

Trên màn hình chính nhấp 'Create' (Tạo).

Tiếp theo, điền các trường khác nhau để hoàn thành việc tạo quy tắc.

Trực Quan Hóa Quy Tắc (Rule Visualization)

Sau khi tạo các quy tắc, bạn sẽ có thể dễ dàng trực quan hóa chúng dưới dạng sơ đồ flowchart (flowchart).

Đánh Giá Quy Tắc (Rule Evaluation)

Luồng đánh giá chứa tất cả các thuộc tính đã được dùng để tạo quy tắc. Ứng dụng có mã sử dụng thuật toán khớp mẫu (pattern matching algorithms) để xem quy tắc nào phù hợp nhất với thực thể cũng như phát ra thứ tự thực thi các quy tắc.

Phân Tích Quy Tắc (Rule Analysis)

RedisTimeSeries cho phép bạn trực quan hóa tất cả các chỉ số (metrics) và giúp bạn đưa ra quyết định dựa trên dữ liệu (data-driven decisions) dựa trên hiệu suất của tất cả các quy tắc trong namespace của chúng.

Lệnh dùng để expose dữ liệu chuỗi thời gian:

TS.ADD ruleId * 1

Kết Luận: Sử Dụng Dữ Liệu Thời Gian Thực Để Tạo Nền Tảng DBRMS Tăng Cường Hiệu Quả

Nền tảng DBRMS có thể giải phóng nhân viên và doanh nghiệp khỏi việc phải thực hiện các nhiệm vụ tốn thời gian, nhàm chán (tedious) nhưng thiết yếu cho tổ chức. Tự động hóa các nhiệm vụ này qua nền tảng DBRMS có thể hoàn toàn làm mới (revitalize) một tổ chức bằng cách hướng sự chú ý của mỗi nhân viên về phía các nhiệm vụ ít đơn điệu (menial) hơn.

Tuy nhiên, để một hệ thống DBRMS hiệu quả, nó cần được cấp năng lượng (powered) bởi một cơ sở dữ liệu thời gian thực để đảm bảo liên tục một mức độ hiệu suất đẳng cấp (elite level). Một độ trễ đơn giản có thể làm đình trệ (stagnate) hiệu quả quy trình, từ đó tác động tiêu cực đến năng suất.

Nhờ Redis, tất cả các quy tắc kinh doanh có thể được quản lý, cập nhật và bảo trì trong thời gian thực. Điều này cho phép bạn có được thông tin chi tiết (insights) thời gian thực về hiệu suất và đưa ra quyết định dựa trên dữ liệu tức thì (instant data-led decisions) sẽ giúp bạn tận dụng cơ hội kinh doanh.

Nếu bạn muốn khám phá thêm về cách Bonsai được tạo ra thì hãy chắc chắn xem video YouTube của Vishrut tại đây. Nhưng đó chưa phải tất cả… chúng tôi cũng có một loạt ứng dụng đổi mới cho bạn để xem trên Redis Launchpad.

Các lập trình viên từ khắp nơi trên thế giới đang tận dụng phép màu của Redis để tạo ra tác động lên cuộc sống hàng ngày.

Ghé ngay. Hãy lấy cảm hứng. Và vui vẻ với Redis.

Ai Đã Xây Dựng Ứng Dụng?

Vishrut Kohli

Vishrut là một nhà phát triển full-stack và người đam mê dữ liệu (data enthusiast) thành thạo Python, MATLAB/octave và thuật toán học máy. Nếu bạn muốn cập nhật tất cả dự án của anh ấy thì hãy chắc chắn theo dõi anh ấy trên GitHub.