- vừa được xem lúc

Triển khai API Gateway trong .NET Core với Ocelot - Tính năng cơ bản - Phần 2

0 0 36

Người đăng: Hoàng Đinh

Theo Viblo Asia

Tiếp nối bài viết trước, bài viết này mình sẽ giới thiệu các tính năng của Ocelot API Gateway.

1. Authentication

a. Install package JwtBearer image.png

b. Tạo 3 project

  • OcelotGateway: API Gateway
  • WebAPI.Authen: Authen Server
  • WebAPI.Private: API được authen image.png

c. Tạo Authen API để lấy quyền authen trong project WebAPI.Authen image.png

d. Tạo authen cho service WebAPI.Private image.png image.png

e. Tạo authen trong program.cs của project OcelotGateway image.png

f. Map route vào Gateway image.png

g. Tại route đến Service được authen, thêm config authen image.png

Kết quả: Run 3 project WebAPI.Private, WebAPI.Authen, Ocelot Gateway => Khi gọi API từ service WebAPI.Private sẽ trả về code 402: https://localhost:7141/private-gateway/Private/First => Phải xác thực bằng cách gọi đến serive WebAPI.Authen để lấy token: https://localhost:7141/authen-gateway/Authen/Get?name=vonhatnam&pwd=1 => Gửi kèm token trong Header để có thể truy cập api từ service WebAPI.Private

2. Rate limiting

Chức năng Ocelot hỗ trợ giới hạn số lượng, tỉ lệ các request để các service không bị quá tải. image.png

Config image.png

  • ClientWhitelist - Client có ip trong mảng này sẽ không bị ảnh hưởng bởi rate limiting.
  • EnableRateLimiting - bật tính năng rate limiting
  • Period - chỉ định khoảng thời gian mà rate limitting áp dụng, chẳng hạn như 1S, 5M, 1H, 1D, v.v. Nếu bạn thực hiện nhiều yêu cầu hơn trong khoảng thời gian hơn giới hạn cho phép thì bạn cần phải đợi thời gian trôi qua trước khi bạn đưa ra yêu cầu khác.
  • PeriodTimespan - sau số giây này chúng ta có thể gửi lại request
  • Limit - xác định số lượng yêu cầu tối đa mà client có thể thực hiện trong một khoảng thời gian xác định.
  • DisableRateLimitHeaders - chỉ định xem các X-Rate-Limit và Retry-After headers có bị vô hiệu hóa hay không.
  • QuotaExceededMessage - mô tả lỗi khi xảy ra rate limit
  • HttpStatusCode - mô tả mã code khi xảy ra rate limit
  • ClientIdHeader - xác định tiêu đề được sử dụng để xác định khách hàng. Theo mặc định, nó là "clientid"

3. Caching

Chức năng Ocelot tự động cache lại các api request để không gọi lại lần sau

Config a. Install package Ocelot.Cache.CacheManager image.png

b. Config trong program.cs image.png

c. Config trong route tại ocelot.json image.png

TtlSeconds: thời gian cache Region: đặt tên nhóm cache để xoá cache khi cần thiết

4. Quality of Service

Chức năng Mục đích sử dụng: tự động ngắt request và quăng ra exception khi timeout.

Config a. Install package Ocelot.Provider.Polly image.png

b. Config trong program.cs image.png

c. Config trong route tại ocelot.json image.png

Khi truy cập http://localhost:5001/product-gatewaye/{controller}/{action}:

  • Nếu server không trả về response trong 2 giây, nó sẽ ném một exception.
  • Nếu server ném ra một exception thứ hai, máy chủ sẽ không thể truy cập được trong 5 giây.

ExceptionsAllowedBeforeBreaking: số lần exception cho phép trước khi break DurationOfBreak: thời gian break khi exception TimeoutValue: set timeout để ném ra exception

5. Load Balancing

Chức năng Tự động cân bằng, điều hướng các request để tối ưu hệ thống

Config image.png

  • DownstreamHostAndPorts: Listing các host để ocelot điều hướng giúp cân bằng tải
  • LoadBalancer: thuật toán ocelot sử dụng để điều hướng: RoundRobin: luân phiên LeastConnection: chuyển request đến server có ít kết nối nhất NoLoadBalancer: lấy service đầu tiên khả dụng CookieStickySessions: sử dụng cookie để gắn tất cả các request vào một server cụ thể.

Tài liệu tham khảo

[1] https://ocelot.readthedocs.io/en/latest/introduction/bigpicture.html

[2] https://www.c-sharpcorner.com/article/building-api-gateway-using-ocelot-in-asp-net-core/

Bình luận

Bài viết tương tự

- vừa được xem lúc

Flutter - GetX - Using GetConnect to handle API request (Part 4)

Giới thiệu. Xin chào các bạn, lại là mình với series về GetX và Flutter.

0 0 359

- vừa được xem lúc

API vs WebSockets vs WebHooks: What to Choose?

. Khi xây dựng bất kì một ứng dụng nào, chúng ta đều cần phải có một cơ chế đáng tin cậy để giao tiếp giữa các thành phần của nó. Đây là khi APIs, WebSockets và WebHooks được ứng dụng vào.

0 0 102

- vừa được xem lúc

Sử dụng Fast JSON API serialization trong Ruby on Rails

Ở bài viết này chúng ta sẽ thử tạo 1 project API sử dụng gem fast_jsonapi cho serializer. Đầu tiên là tạo một project API mới. $ rails new rails-jsonapi --database=postgresql --skip-action-mailbox --skip-action-text --skip-spring -T --skip-turbolinks --api. .

0 0 132

- vừa được xem lúc

Test thử ba loại API chụp màn hình Windows

Hiện tại, Windows cung cấp khoảng ba cách để chụp màn hình. Thế thì cái nào là nhanh nhất? Tôi muốn test thử từng cái.

0 0 71

- vừa được xem lúc

Ngừng sử dụng REST cho API — GraphQL là cách tốt hơn

Mở đầu. REST đã được nhiều developers sử dụng để gửi dữ liệu qua HTTP trong khi GraphQL thường được trình bày như một công nghệ thay thế các API REST.

0 0 99

- vừa được xem lúc

Quản lý và sử dụng API trong Nuxt bằng cách sử dụng Repository Pattern

Mở đầu năm mới, à nhầm, mở đầu bài viết. Cái tên NuxtJS chắc hẳn cũng không còn xa lạ gì với những bạn yêu thích VueJS nữa, đương nhiên mình cũng là một chàng trai dành tình yêu to lớn cho frameworks này.

0 0 226