Cách chịu được tải tăng lên trên hệ thống: chúng ta nói về việc chuẩn bị quy mô lớn cho Thứ Sáu Đen

Này Habr!

Vào năm 2017, trong ngày Thứ Sáu Đen, tải đã tăng gần gấp rưỡi và máy chủ của chúng tôi đã đạt đến giới hạn. Trong năm qua, số lượng khách hàng đã tăng lên đáng kể và rõ ràng là nếu không có sự chuẩn bị sơ bộ cẩn thận, nền tảng có thể không chịu được tải trọng của năm 2018.

Chúng tôi đặt ra mục tiêu đầy tham vọng nhất có thể: chúng tôi muốn chuẩn bị đầy đủ cho bất kỳ hoạt động nào, thậm chí là mạnh mẽ nhất, và bắt đầu triển khai trước các năng lực mới trong suốt cả năm.

CTO Andrey Chizh của chúng tôi (chizh_andrey) cho biết chúng tôi đã chuẩn bị như thế nào cho Thứ Sáu Đen 2018, những biện pháp chúng tôi đã thực hiện để tránh té ngã và tất nhiên là kết quả của sự chuẩn bị kỹ lưỡng đó.

Cách chịu được tải tăng lên trên hệ thống: chúng ta nói về việc chuẩn bị quy mô lớn cho Thứ Sáu Đen

Hôm nay tôi muốn nói về việc chuẩn bị cho Thứ Sáu Đen 2018. Tại sao lại là bây giờ, khi hầu hết các đợt giảm giá lớn đã ở phía sau chúng ta? Chúng tôi bắt đầu chuẩn bị khoảng một năm trước các sự kiện quy mô lớn và qua thử nghiệm và sai sót, chúng tôi đã tìm ra giải pháp tối ưu. Chúng tôi khuyên bạn nên quan tâm trước những mùa nóng và ngăn chặn những trò gian lận có thể xuất hiện vào thời điểm không thích hợp nhất.
Tài liệu này sẽ hữu ích cho tất cả những ai muốn thu được lợi nhuận tối đa từ những cổ phiếu đó, bởi vì Mặt kỹ thuật của vấn đề không thua kém gì mặt tiếp thị ở đây.

Đặc điểm của lượng truy cập khi bán hàng lớn

Trái với suy nghĩ của nhiều người, Thứ Sáu Đen không chỉ diễn ra một ngày trong năm mà gần như kéo dài cả tuần: các ưu đãi giảm giá đầu tiên đến 7-8 ngày trước đợt giảm giá. Lưu lượng truy cập trang web bắt đầu tăng ổn định trong suốt cả tuần, đạt mức cao nhất vào thứ Sáu và giảm khá mạnh vào thứ Bảy xuống mức bình thường của cửa hàng.

Cách chịu được tải tăng lên trên hệ thống: chúng ta nói về việc chuẩn bị quy mô lớn cho Thứ Sáu Đen

Điều quan trọng cần cân nhắc là: các cửa hàng trực tuyến trở nên đặc biệt nhạy cảm với bất kỳ “sự chậm lại” nào trong hệ thống. Ngoài ra, dòng bản tin email của chúng tôi cũng có số lượng gửi tăng lên đáng kể.

Điều quan trọng về mặt chiến lược đối với chúng ta là phải trải qua Thứ Sáu Đen mà không gặp sự cố, bởi vì... Chức năng quan trọng nhất của trang web và bản tin cửa hàng phụ thuộc vào hoạt động của nền tảng, cụ thể là:

  • Theo dõi và đưa ra đề xuất sản phẩm,
  • Phát hành các tài liệu liên quan (ví dụ: hình ảnh thiết kế các khối đề xuất, chẳng hạn như mũi tên, logo, biểu tượng và các yếu tố hình ảnh khác),
  • Cung cấp hình ảnh sản phẩm có kích thước được yêu cầu (vì những mục đích này, chúng tôi có “ImageResizer” - một hệ thống con tải hình ảnh từ máy chủ của cửa hàng, nén nó đến kích thước yêu cầu và thông qua máy chủ bộ nhớ đệm, tạo ra hình ảnh có kích thước cần thiết cho từng sản phẩm trong từng khối khuyến nghị).

Trên thực tế, trong Thứ Sáu Đen 2019, lượng tải dịch vụ đã tăng 40%, tức là. số lượng sự kiện mà hệ thống Retail Rocket theo dõi và xử lý trên các trang cửa hàng trực tuyến đã tăng từ 5 lên 8 nghìn yêu cầu mỗi giây. Do chúng tôi đang chuẩn bị cho những tải trọng nghiêm trọng hơn nên chúng tôi đã dễ dàng vượt qua đợt tăng đột biến như vậy.

Cách chịu được tải tăng lên trên hệ thống: chúng ta nói về việc chuẩn bị quy mô lớn cho Thứ Sáu Đen

Chuẩn bị chung

Thứ Sáu Đen là thời điểm bận rộn cho tất cả các ngành bán lẻ và thương mại điện tử nói riêng. Số lượng người dùng và hoạt động của họ tại thời điểm này đang tăng lên đáng kể, vì vậy, như mọi khi, chúng tôi đã chuẩn bị kỹ lưỡng cho thời gian bận rộn này. Hãy nói thêm ở đây một thực tế là chúng tôi có nhiều cửa hàng trực tuyến được kết nối không chỉ ở Nga mà còn ở Châu Âu, nơi sự phấn khích cao hơn nhiều và chúng tôi có mức độ đam mê còn tệ hơn cả loạt phim Brazil. Cần phải làm gì để chuẩn bị đầy đủ cho tải tăng?

Làm việc với máy chủ

Đầu tiên, cần phải tìm ra chính xác những gì chúng tôi cần để tăng sức mạnh máy chủ. Ngay trong tháng 10, chúng tôi đã bắt đầu đặt hàng các máy chủ mới dành riêng cho Thứ Sáu Đen - tổng cộng chúng tôi đã bổ sung thêm XNUMX máy. Đến tháng XNUMX, họ đã hoàn toàn tham chiến.

Đồng thời, một số máy xây dựng đã được cài đặt lại để sử dụng làm máy chủ Ứng dụng. Chúng tôi ngay lập tức chuẩn bị cho họ sử dụng các chức năng khác nhau: cả để đưa ra đề xuất và dịch vụ ImageResizer, do đó, tùy thuộc vào loại tải, mỗi chức năng trong số đó có thể được sử dụng cho một trong các vai trò này. Ở chế độ bình thường, máy chủ Ứng dụng và ImageResizer có các chức năng được xác định rõ ràng: đề xuất vấn đề trước, đề xuất sau cung cấp hình ảnh cho các chữ cái và khối đề xuất trên các trang web mua sắm trực tuyến. Để chuẩn bị cho Thứ Sáu Đen, người ta đã quyết định tạo ra tất cả các máy chủ có mục đích kép nhằm cân bằng lưu lượng truy cập giữa chúng tùy thuộc vào loại tải xuống.

Sau đó, chúng tôi đã thêm hai máy chủ lớn cho Kafka (Apache Kafka) và có được một cụm gồm 5 máy mạnh mẽ. Thật không may, mọi thứ đã không diễn ra suôn sẻ như chúng tôi mong muốn: trong quá trình đồng bộ hóa dữ liệu, hai máy mới đã chiếm toàn bộ chiều rộng của kênh mạng và chúng tôi phải khẩn trương tìm ra cách thực hiện quá trình thêm một cách nhanh chóng và an toàn cho hệ thống. toàn bộ cơ sở hạ tầng. Để giải quyết vấn đề này, các quản trị viên của chúng tôi đã phải dũng cảm hy sinh những ngày cuối tuần của mình.

Làm việc với dữ liệu

Ngoài máy chủ, chúng tôi quyết định tối ưu hóa các tệp để giảm tải và một bước tiến lớn đối với chúng tôi là dịch các tệp tĩnh. Tất cả các tệp tĩnh trước đây được lưu trữ trên máy chủ đã được chuyển sang S3 + Cloudfront. Chúng tôi đã muốn làm điều này từ lâu, vì tải trên máy chủ đã gần đạt đến giá trị giới hạn và bây giờ một cơ hội lớn đã xuất hiện.

Một tuần trước Thứ Sáu Đen, chúng tôi đã tăng thời gian lưu hình ảnh vào bộ nhớ đệm lên 3 ngày để nếu ImageResizer gặp sự cố, các hình ảnh đã lưu vào bộ nhớ đệm trước đó sẽ được truy xuất từ ​​cdn. Nó cũng giảm tải cho máy chủ của chúng tôi, vì hình ảnh được lưu trữ càng lâu thì chúng tôi càng ít phải tốn tài nguyên cho việc thay đổi kích thước.

Và cuối cùng nhưng không kém phần quan trọng: 5 ngày trước Thứ Sáu Đen, lệnh cấm triển khai bất kỳ chức năng mới nào cũng như bất kỳ công việc nào với cơ sở hạ tầng đã được công bố - mọi sự chú ý đều nhằm mục đích đối phó với lượng tải ngày càng tăng.

Phương án ứng phó với tình huống khó khăn

Cho dù quá trình chuẩn bị có chất lượng cao đến đâu thì fakaps vẫn luôn có thể thực hiện được. Và chúng tôi đã phát triển 3 kế hoạch ứng phó cho các tình huống nghiêm trọng có thể xảy ra:

  • giảm tải,
  • vô hiệu hóa một số dịch vụ,
  • tắt hoàn toàn dịch vụ.

Kế hoạch A: Giảm tải. Đáng lẽ phải được kích hoạt nếu do tải tăng đột biến, máy chủ của chúng tôi đã vượt quá thời gian phản hồi có thể chấp nhận được. Trong trường hợp này, chúng tôi đã chuẩn bị các cơ chế để giảm dần tải bằng cách chuyển một phần lưu lượng truy cập sang máy chủ Amazon, máy chủ này sẽ chỉ phản hồi tất cả các yêu cầu bằng “200 OK” và đưa ra phản hồi trống. Chúng tôi hiểu rằng đây là sự suy giảm chất lượng dịch vụ, nhưng việc lựa chọn giữa thực tế là dịch vụ hoàn toàn không hoạt động hoặc không hiển thị đề xuất cho khoảng 10% lưu lượng truy cập là điều hiển nhiên.

Kế hoạch B: Vô hiệu hóa dịch vụ. Ngụ ý sự xuống cấp một phần của dịch vụ. Ví dụ: giảm tốc độ tính toán đề xuất cá nhân nhằm loại bỏ một số cơ sở dữ liệu và kênh liên lạc. Ở chế độ bình thường, các đề xuất được tính toán theo thời gian thực, tạo ra một phiên bản cửa hàng trực tuyến khác nhau cho mỗi khách truy cập, nhưng trong điều kiện tải tăng, việc giảm tốc độ sẽ cho phép các dịch vụ cốt lõi khác tiếp tục hoạt động.

Kế hoạch C: trong trường hợp Armageddon. Nếu xảy ra lỗi toàn bộ hệ thống, chúng tôi đã chuẩn bị một kế hoạch cho phép chúng tôi ngắt kết nối với khách hàng một cách an toàn. Người mua tại cửa hàng sẽ ngừng xem các đề xuất; hiệu suất của cửa hàng trực tuyến sẽ không bị ảnh hưởng gì. Để thực hiện việc này, chúng tôi sẽ phải đặt lại tệp tích hợp của mình để người dùng mới ngừng tương tác với dịch vụ. Nghĩa là, chúng tôi sẽ vô hiệu hóa mã theo dõi chính của mình, dịch vụ sẽ ngừng thu thập dữ liệu và tính toán đề xuất, đồng thời người dùng sẽ chỉ nhìn thấy một trang không có khối đề xuất. Đối với tất cả những người trước đây đã nhận được tệp tích hợp, chúng tôi đã cung cấp tùy chọn chuyển bản ghi DNS sang Amazon và sơ khai 200 OK.

Kết quả

Chúng tôi đã xử lý toàn bộ tải ngay cả khi không cần sử dụng thêm máy xây dựng. Và nhờ có sự chuẩn bị trước nên chúng tôi không cần bất kỳ kế hoạch ứng phó nào đã được lập sẵn. Nhưng tất cả những công việc đã làm đều là kinh nghiệm vô giá sẽ giúp chúng ta đối phó với những luồng giao thông lớn và bất ngờ nhất.
Như năm 2017, lượng tải dịch vụ đã tăng 40% và số lượng người dùng trong các cửa hàng trực tuyến tăng 60% vào Thứ Sáu Đen. Mọi khó khăn, sai sót đều xảy ra trong giai đoạn chuẩn bị, điều này đã giúp chúng tôi và khách hàng thoát khỏi những tình huống không lường trước được.

Bạn đối phó với Thứ Sáu Đen như thế nào? Làm thế nào để bạn chuẩn bị cho tải trọng quan trọng?

Nguồn: www.habr.com

Thêm một lời nhận xét