paint-brush
Trao quyền cho hiệu suất API của bạn với Proxytừ tác giả@stdevk
357 lượt đọc
357 lượt đọc

Trao quyền cho hiệu suất API của bạn với Proxy

từ tác giả ST Dev 5m2023/06/29
Read on Terminal Reader

dài quá đọc không nổi

Tóm lại, việc cải thiện hiệu suất API có thể giúp nâng cao trải nghiệm người dùng, tăng năng suất, cải thiện khả năng mở rộng, tiết kiệm chi phí và tạo lợi thế cạnh tranh, khiến API trở thành mục tiêu mong muốn của các doanh nghiệp cũng như nhà phát triển. Do đó, chúng tôi sẽ giải thích kiến trúc cơ bản của cổng API, cách thiết lập Proxy để định tuyến các dịch vụ RPC với Nginx và thảo luận về những ưu điểm và nhược điểm của việc này.
featured image - Trao quyền cho hiệu suất API của bạn với Proxy
ST Dev  HackerNoon profile picture
0-item
1-item
2-item

Có một số lý do thuyết phục khiến mọi người có thể muốn cải thiện hiệu suất API:

  1. Trải nghiệm người dùng nâng cao: API nhanh hơn và phản hồi nhanh hơn có thể mang lại trải nghiệm người dùng mượt mà hơn cho khách hàng hoặc người dùng cuối. Hiệu suất được cải thiện có thể giúp giảm độ trễ, thời gian phản hồi nhanh hơn và truy xuất dữ liệu nhanh hơn, dẫn đến trải nghiệm người dùng hiệu quả và hài lòng hơn.
  2. Khả năng mở rộng được cải thiện: Các máy chủ hiệu suất cao có thể xử lý số lượng lớn hơn các yêu cầu và người dùng đồng thời, khiến chúng có khả năng mở rộng hơn. Khả năng mở rộng là rất quan trọng đối với các doanh nghiệp đang phát triển cần xử lý lượng lưu lượng truy cập và dữ liệu ngày càng tăng khi cơ sở người dùng của họ mở rộng. Hiệu suất API được cải thiện có thể giúp doanh nghiệp đáp ứng nhu cầu ngày càng tăng mà không ảnh hưởng đến thời gian phản hồi hoặc chất lượng dịch vụ.
  3. Lợi thế cạnh tranh: API hiệu suất cao có thể mang lại cho doanh nghiệp lợi thế cạnh tranh. Người dùng hoặc khách hàng có xu hướng thích các dịch vụ cung cấp thời gian phản hồi nhanh hơn, độ tin cậy tốt hơn và hiệu suất tổng thể vượt trội. Bằng cách cung cấp trải nghiệm API vượt trội, các doanh nghiệp có thể tạo sự khác biệt so với các đối thủ cạnh tranh và thu hút nhiều người dùng hoặc khách hàng hơn.

Hướng dẫn Mục tiêu học tập

Chúng tôi sẽ thiết lập Proxy làm hệ thống quản lý trung tâm để đạt được hiệu suất API được cải thiện. Một proxy hoạt động như một trung gian giữa máy khách và máy chủ. Nó nằm giữa máy khách tạo yêu cầu API và máy chủ lưu trữ các API. Khi một khách hàng thực hiện một yêu cầu API, trước tiên, nó sẽ đi qua proxy, sau đó chuyển tiếp yêu cầu đến máy chủ. Máy chủ xử lý yêu cầu và gửi phản hồi trở lại proxy, sau đó chuyển tiếp nó đến máy khách. Điều này cho phép proxy chặn, sửa đổi hoặc lưu trữ yêu cầu hoặc phản hồi khi cần, tạo cơ hội để tối ưu hóa hiệu suất API.

Điều kiện tiên quyết

Đối với macOS (hoặc Linux ), hãy cài đặt Homebrew trên hệ thống của bạn.

Cài đặt Nginx trên Mac

Có các bước sau để cài đặt Nginx trên macOS:


1️⃣ Tải xuống Homebrew

Để cài đặt Nginx trên macOS, Homebrew phải được cài đặt trên hệ thống. Homebrew là trình quản lý gói cho hệ điều hành Mac cho phép chúng tôi cài đặt các ứng dụng Unix khác nhau một cách dễ dàng. Nếu bạn chưa có Homebrew , hãy sử dụng liên kết sau để cài đặt: https://brew.sh/

Hoặc chỉ cần gõ lệnh sau trên thiết bị đầu cuối:

 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"


2️⃣ Cài đặt Nginx

Trình cài đặt gói homebrew sẽ giúp cài đặt máy chủ web Nginx trên macOS. Để cài đặt Nginx , sử dụng lệnh sau:

 brew install nginx


3️⃣ Chỉnh sửa file cấu hình

Theo mặc định, vị trí của tệp cấu hình Nginx là:

 /opt/homebrew/etc/nginx/nginx.conf

Để chỉnh sửa tệp cấu hình Nginx, bạn có thể sử dụng bất kỳ trình soạn thảo văn bản nào bạn chọn. Ví dụ: bạn có thể sử dụng nano , vim hoặc emacs . Đây là một lệnh ví dụ để chỉnh sửa tệp cấu hình Nginx bằng nano:

 nano /opt/homebrew/etc/nginx/nginx.conf

Chúng tôi sẽ chỉnh sửa khối máy chủ lắng nghe trên cổng 80.

Tìm kiếm khối máy chủ


Sau đó, tiến hành bao gồm ba điểm cuối RPC của mạng chính Ethereum bên dưới:

 location /nodereal { proxy_pass https://eth-mainnet.nodereal.io/v1/<API KEY>; proxy_set_header Content-Type "application/json"; } location /RPCProviderA { proxy_pass <https URI endpoint>; proxy_set_header Content-Type "application/json"; } location /RPCProviderB { proxy_pass <https URI endpoint>; proxy_set_header Content-Type "application/json"; }

Có thể bao gồm nhiều điểm cuối RPC khi cần thiết và sau đó bảo toàn tệp cấu hình.

Để đảm bảo không có lỗi cú pháp, vui lòng tiến hành kiểm tra tệp cấu hình Nginx:

 nginx -t

🎊 Trong trường hợp không có lỗi, kết quả như sau sẽ được hiển thị.


nginx: cú pháp file cấu hình /opt/homebrew/etc/nginx/nginx.conf là ok

nginx: tệp cấu hình /opt/homebrew/etc/nginx/nginx.conf kiểm tra thành công

Để khởi động lại máy chủ Nginx, vui lòng thực hiện lệnh sau:

 brew services restart nginx


4️⃣ Gửi phương thức API qua Nginx Proxy

Để kiểm tra Proxy Nginx, chúng tôi đang kiểm tra giá gas trên Ethereum thông qua eth_gasPrice . Chúng tôi sẽ gửi một lệnh curl để gửi một yêu cầu POST HTTP đến vị trí "/nodereal" của máy chủ đang chạy trên máy cục bộ (tại " http://localhost ") với tải trọng JSON được thấy bên dưới:

 curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}' -H "Content-Type: application/json" http://localhost/nodereal


✅ {"jsonrpc":"2.0","id":1,"result":"0xdec36a8d1"}

Phản hồi bạn nhận được sau khi chạy lệnh curl là phản hồi JSON-RPC từ nút Ethereum . Dưới đây là giải thích ngắn gọn về câu trả lời:

  • "jsonrpc":"2.0": Trường này cho biết phiên bản của giao thức JSON-RPC được sử dụng trong phản hồi.
  • "id":1: Trường này là định danh của yêu cầu tương ứng với phản hồi này. Trong trường hợp này, yêu cầu có "id" là 1."result":"0xdec36a8d1": Trường này là kết quả của yêu cầu JSON-RPC. Trong trường hợp này, kết quả được yêu cầu là giá gas hiện tại trên mạng Ethereum , được trả về ở định dạng thập lục phân dưới dạng một chuỗi.

Để giải thích giá trị thập phân của "0xdec36a8d1"

Giá trị thập phân của "0xdec36a8d1" là 59797579985. Do đó, giá gas hiện tại trên mạng Ethereum tại thời điểm yêu cầu được đưa ra là 59797579985 wei (đơn giá nhỏ nhất của Ether) hoặc 58 Gwei.

Kiểm tra nó với các máy chủ còn lại, /RPCProviderA & /RPCProviderB, bằng cách chạy trên máy cục bộ (tại " http://localhost "):

 curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}' -H "Content-Type: application/json" http://localhost/RPCProviderA


🥳 Bạn có thể bắt đầu thử nghiệm proxy của riêng mình.


Ưu điểm và nhược điểm của việc sử dụng Nginx làm Proxy cho API Gateway


Ưu điểm của việc sử dụng Nginx làm proxy cho cổng API:

  1. Cân bằng tải: Nginx có thể phân phối các yêu cầu API đến trên nhiều máy chủ phụ trợ, đảm bảo cân bằng tải hiệu quả và cải thiện hiệu suất.
  2. Bộ nhớ đệm: Nginx có thể lưu trữ các phản hồi API, giảm tải cho các máy chủ phụ trợ và cải thiện thời gian phản hồi của API.
  3. Khả năng mở rộng: Nginx có thể dễ dàng mở rộng quy mô theo chiều ngang để phù hợp với lưu lượng API tăng lên và xử lý số lượng lớn kết nối đồng thời.
  4. Bảo mật: Nginx cung cấp nhiều tính năng bảo mật khác nhau, chẳng hạn như chấm dứt SSL, bảo vệ DDoS và lọc yêu cầu, giúp bảo vệ API khỏi các mối đe dọa bảo mật.


Nhược điểm của việc sử dụng Nginx làm proxy cho cổng API:

  1. Các tính năng quản lý API hạn chế: Nginx chủ yếu hoạt động như một proxy và thiếu một số tính năng quản lý API nâng cao, chẳng hạn như tài liệu API, cổng thông tin dành cho nhà phát triển và phiên bản API, có thể được yêu cầu trong các hệ sinh thái API phức tạp.
  2. Độ phức tạp của cấu hình: Việc định cấu hình Nginx làm cổng API yêu cầu hiểu rõ về cấu hình Nginx, điều này có thể phức tạp đối với người dùng không quen thuộc với Nginx.
  3. Thiếu xác thực và ủy quyền nâng cao: Nginx cung cấp các tính năng xác thực và ủy quyền cơ bản, nhưng có thể không có các khả năng nâng cao, chẳng hạn như xác thực OAuth, JWT và kiểm soát truy cập chi tiết, có thể được yêu cầu trong một số tình huống API.

Phần kết luận

Tóm lại, việc cải thiện hiệu suất API là rất quan trọng đối với các doanh nghiệp và nhà phát triển. Sử dụng Nginx làm proxy cho cổng API mang lại các lợi thế như cân bằng tải, bộ nhớ đệm, khả năng mở rộng và bảo mật. Tuy nhiên, có những hạn chế như tính năng quản lý API hạn chế, cấu hình phức tạp và thiếu khả năng xác thực và ủy quyền nâng cao. Cần xem xét cẩn thận những ưu và nhược điểm này. Nhìn chung, tận dụng Nginx làm proxy có thể là một công cụ mạnh mẽ để cải thiện hiệu suất API. Hãy theo dõi loạt bài hướng dẫn tiếp theo vì chúng tôi sẽ chia sẻ thêm về vấn đề phổ biến gặp phải và cách gỡ lỗi.


Cũng được xuất bản ở đây .