Scaling#

Scalibility là khả năng tăng/giảm tài nguyên của hệ thống để đáp ứng nhu cầu sử dụng của ứng dụng Container. Scaling bao gồm Horizontal Scaling và Vertical Scaling.

Step

Vertical Scaling#

Hình thức này thay đổi cấu hình CPU/RAM của các POD hiện tại. Horizontal POD scaling tác động đến Sun Spinner workload, các POD hiện tại sẽ được xóa dần và được thay thế bằng các POD mới với cầu hình mới. Nếu như Spinner chỉ có một POD, có thể gây ra downtime ứng dụng trong thời gian ngắn.

Người dùng có thể sử dụng tính năng này khi muốn tăng cấu hình POD trong thời gian dài, hoặc có thể tăng cấu hình trước khi hệ thống có tải lớn. Ví dụ cho các trường hợp tải lớn như Chạy chương trình khuyến mãi, ngày sự kiện, chạy các function sử dụng tài nguyên lớn như xuất báo cáo, Crawl Data, Migrate… Sau đó có thể cài đặt trở lại cấu hình bình thường, lúc này hệ thống trở nên rất hiệu quả về chi phí mà vẫn đáp ứng yêu cầu cao về tài nguyên.

Thực hiện Horizontal Scaling bằng cách Edit cấu hình spinner

Horizontal Scaling#

Horizontal Scaling không tăng cấu hình của đối tượng Compute mà tạo ra thêm các đối tượng Compute để xử lý song song, ờ đây là tạo ra thêm các POD cho cùng một Spinner.

Horizontal Scaling có hai chế độ là Manual và Auto. Menu Scaling cài đặt các tính năng liên quan đến khả năng scalibility của Sun Container Spinner. Mặc định ban đầu, Sun Container Spinner được setup ở chế độ manual scale.

  • Manual scale:

Người dùng có thể chủ động tăng/ giảm số POD(instance) bằng cách set số POD mong muốn, hệ thống sẽ ngay lập tức tăng hoặc giảm số lượng POD về con số mà người dùng đã set.

Step

Note

Trong trường hợp giảm số lượng POD, hệ thống ưu tiên bị xóa các POD được tạo ra sau.

Warning

Khi bạn muốn manual scale để giảm số lượng các POD xuống bạn cần chắc chắn rằng các POD không còn xử lí các request từ client nữa để đảm bảo tính toàn vẹn dữ liệu

  • Auto Scale By CPU&RAM:

Chế auto có hai options để người dùng có thể lựa chọn đó là scale theo ngưỡng của CPU và RAM hoặc scale theo số lượng request đến POD. Đối với scale theo ngưỡng CPU và RAM thì khi POD đạt đến ngưỡng cài đặt sẽ trigger sự kiện Scalling để đảm bảo số % CPU/RAM sử dụng đạt dưới ngưỡng giá trị đã config.

Note

  • Khi đạt đến số max instance thì hệ thống sẽ ngừng scale thêm các POD mới. Tương tự như manual scale, hệ thống sẽ ưu tiên xóa các POD được sinh ra sau khi có trigger điều chỉnh số lượng POD.

  • Công thức hệ thống tính toán scale : desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]

    • desiredReplicas: Số lượng replica cần thiết

    • currentReplicas: Số Replica hiện tại

    • currentMetricValue: Giá trị CPU/RAM hiện tại

    • desiredMetricValue: Giá trị CPU/RAM mong muốn ổn định hoặc dưới ngưỡng này

  • Thời gian scale up là real time: tức là khi spinner của bạn đạt vượt ngưỡng CPU/RAM hệ thống sẽ tự động tăng số lượng POD để đảm bảo spinner của bạn hoạt động ổn định.

  • Thời gian scale down: khi hệ thống thấy rằng số lượng POD có thể giảm xuống hệ thống sẽ tự động giảm POD theo mỗi từng phút, và mỗi phút số POD giảm tối đa là 4 POD hoặc 30% số lượng POD hiện tại (Lấy số nhỏ hơn)

Step
  • Auto Scale By Request:

Với trường hợp ứng dụng được đánh giá là sẽ có những khoảng thời gian lượng request đầu vào sẽ tăng lên một cách đột ngột và có thể dẫn đến quá tải cho ứng dụng, thì tính năng auto scale by request là sự lựa chọn phù hợp để tránh quá tải cho ứng dụng. Cụ thể thì người dùng sẽ cài đặt ngưỡng tổng số lượng request mà một POD (nơi là ứng dụng chạy bên trong) có thể nhận trong một khoảng thời gian nhất định. Nếu số lượng request đầu vào lớn hơn giá trị cài đặt trong một khoảng thời gian thì hệ thống sẽ trigger Scalling để tạo ra các bản sao POD, số lượng request sẽ được phân phối đến các bản sao POD để đảm bảo request đến mỗi POD nhỏ hơn giá trị cài đặt.

Step

Note

  • Khi đạt đến số max instance thì hệ thống sẽ ngừng scale thêm các POD mới. Tương tự như manual scale, hệ thống sẽ ưu tiên xóa các POD được sinh ra sau khi có trigger điều chỉnh số lượng POD.

  • Thời gian scale up là real time: tức là khi spinner của bạn đạt vượt ngưỡng tổng số lượng request hệ thống sẽ tự động tăng số lượng POD để đảm bảo spinner của bạn hoạt động ổn định.

  • Thời gian scale down: khi hệ thống thấy rằng số lượng POD có thể giảm xuống hệ thống sẽ tự động giảm POD theo mỗi từng phút, và mỗi phút số POD giảm tối đa là 4 POD hoặc 30% số lượng POD hiện tại (Lấy số nhỏ hơn)

Xem thêm: