Thiết Kế Và Tối Ưu Synology Drive Cho Hiệu Năng Ở Quy Mô Lớn

Khi bạn tìm kiếm một thứ gì đó và kết quả xuất hiện gần như ngay lập tức, bạn có thể tự hỏi, "Họ đã làm điều đó như thế nào?" Đạt được thời gian phản hồi có độ trễ thấp cho một loạt các khả năng dường như vô tận không phải là nhiệm vụ đơn giản, nhưng đó là điều mà các kỹ sư phần mềm của chúng tôi nỗ lực thực hiện mỗi ngày.

Hãy cùng xem xét kỹ hơn lý do Synology Drive hoạt động hiệu quả như vậy và cách nó mang lại cho bạn kết quả nhanh như chớp.

Xây dựng nền tảng cho quy mô và độ tin cậy

Trước khi một ứng dụng có thể chạy nhanh, nó phải được xây dựng trên một nền tảng vững chắc. Trong thế giới phần mềm, điều này có nghĩa là tạo ra một bản thiết kế kiến ​​trúc—chẳng hạn như lược đồ cơ sở dữ liệu và cơ chế toàn vẹn dữ liệu—có khả năng mở rộng để xử lý lượng dữ liệu khổng lồ mà không bị sụp đổ dưới sức nặng của chính nó, đồng thời đảm bảo dữ liệu luôn được bảo vệ.

Di chuyển các thư mục có số lượng tệp lớn

Một điểm khó chịu phổ biến đối với người dùng có thể là việc cố gắng di chuyển một thư mục dự án khổng lồ chứa hàng trăm nghìn tệp. Bạn kéo và thả nó, rồi… chờ đợi. Hệ thống trở nên chậm chạp vì phải vật lộn để xử lý một thay đổi cấu trúc lớn như vậy.

Nguyên nhân gốc rễ của sự chậm trễ này là thiết kế cơ sở dữ liệu trước đây , bao gồm cái mà các kỹ sư của chúng tôi gọi là "bảng lớn". Bảng này tỉ mỉ lập bản đồ mối quan hệ giữa  mọi  thư mục cha và  mọi  mục con, đồng thời lưu trữ đường dẫn văn bản đầy đủ cho từng mục. Khi dữ liệu tăng lên, bảng này sẽ tăng trưởng gần như theo cấp số nhân.

Để giải quyết vấn đề này, chúng tôi đã thực hiện một cuộc đại phẫu trên cơ sở dữ liệu của Drive, chuyển sang  cấu trúc cây tinh gọn, dựa trên id  và loại bỏ hoàn toàn bảng dữ liệu cồng kềnh. Giờ đây, mỗi tệp và thư mục chỉ biết tên riêng và ID của tệp cha trực tiếp. Thiết kế lại cơ bản này đã biến một hoạt động vốn tốn nhiều tài nguyên, kéo dài hàng phút thành một hoạt động duy nhất, gần như tức thời, cho phép Drive xử lý các tập dữ liệu khổng lồ mà không bị quá tải.

Cân bằng giữa an toàn dữ liệu và hiệu suất

Để đảm bảo dữ liệu của bạn luôn an toàn, ngay cả khi mất điện, mọi thay đổi hoặc cập nhật tệp đều phải được ghi lại. Thách thức về mặt kỹ thuật là việc ghi liên tục này, nếu không được quản lý cẩn thận, có thể gây ra những "trục trặc" đáng kể về hiệu suất, đặc biệt là khi nhiều tệp được cập nhật cùng lúc. Phương pháp trước đây của chúng tôi dựa trên cài đặt tự động mặc định của công cụ cơ sở dữ liệu cho Nhật ký Ghi Trước (WAL) — một tính năng an toàn ghi lại các thay đổi trước khi chúng được thiết lập vĩnh viễn. Vấn đề với quy trình tự động này là trong quá trình hoạt động cường độ cao, nó có thể kích hoạt quá thường xuyên, gây ra hiện tượng trì trệ hiệu suất.

Để khắc phục điều này, chúng tôi đã triển khai  chiến lược điểm kiểm tra tùy chỉnh . Bằng cách kiểm soát thủ công quy trình này, chúng tôi có thể nhóm hàng nghìn lệnh ghi nhỏ, riêng lẻ thành các lô hiệu quả. Điều này cho phép chúng tôi tận dụng tối đa lợi ích kép của WAL—độ bền dữ liệu tuyệt đối và khả năng xử lý nhiều người dùng đồng thời—mà không bị ảnh hưởng bởi chi phí hiệu năng của các thiết lập mặc định. Thay đổi duy nhất này đã góp phần đáng kể vào  việc cải thiện tốc độ lập chỉ mục lên đến 20 lần hoặc hơn  trong các bài kiểm tra nội bộ của chúng tôi dành cho Drive.

Tăng tốc logic ứng dụng cốt lõi

Với nền tảng vững chắc, bước tiếp theo là tối ưu hóa logic nội bộ của ứng dụng. Điều này bao gồm một quá trình liên tục phân tích mã nguồn của chúng tôi để xác định và loại bỏ các điểm nghẽn có thể ảnh hưởng đến trải nghiệm người dùng.

Đảm bảo giao diện người dùng nhanh nhạy và nhạy bén

Khi người dùng thực hiện một hành động trên cổng thông tin web Drive—chẳng hạn như chọn một nhóm tệp để xóa hoặc chia sẻ—làm thế nào để đảm bảo giao diện phản hồi ngay lập tức mà không có bất kỳ độ trễ khó chịu nào?

Sau khi phân tích những tương tác phổ biến này của người dùng, chúng tôi phát hiện ra rằng nút thắt cổ chai không phải lúc nào cũng nằm ở cơ sở dữ liệu, mà nằm ở cách ứng dụng xử lý dữ liệu nội bộ cho các tác vụ nền liên quan đến hành động đó. Mỗi khi bạn thực hiện một hành động, Drive cần phải "đóng gói" thông tin về tác vụ đó để các quy trình nội bộ xử lý. Phương pháp "đóng gói" ban đầu của chúng tôi (một quy trình gọi là tuần tự hóa) đã tạo ra rất nhiều chi phí phát sinh, khiến giao diện người dùng (UI) trở nên chậm chạp.

Là một phần trong chu trình cải tiến liên tục, chúng tôi đã thiết kế lại cách xử lý dữ liệu cốt lõi này, tối ưu hóa quy trình từ đầu. Kết quả là khả năng phản hồi của giao diện người dùng được cải thiện đáng kể. Trong một thử nghiệm, hiệu suất của một hành động phổ biến - chọn và xóa 100 tệp khỏi cổng thông tin web - đã được cải thiện hơn 2,2 lần . Điều này không chỉ giúp xóa tệp nhanh hơn; mà còn minh chứng cho việc tối ưu hóa các quy trình nội bộ cơ bản này mang lại trải nghiệm người dùng nhanh hơn và mượt mà hơn trên mọi phương diện.

Tích hợp nền tảng: Hệ số nhân hiệu suất

Một ứng dụng được xây dựng tốt rất mạnh mẽ, nhưng tiềm năng thực sự của nó chỉ được khai phá khi được tích hợp hoàn hảo với nền tảng mà nó chạy. Đây chính là nơi Drive tận dụng các tính năng độc đáo của DiskStation Manager (DSM) và hệ thống tệp Btrfs.

Loại bỏ sự chậm trễ sau khi khởi động lại

Trước đây, khi khởi động lại gói Drive , máy chủ phải thực hiện "quét lại" toàn bộ mọi thư mục để xem những gì có thể đã thay đổi khi nó ngoại tuyến—một quá trình có thể mất hàng chục phút đối với các lần triển khai lớn , khiến một số quy trình trở nên chậm chạp .

Thay vì để Drive thực hiện công việc thám tử này, chúng tôi đã kết nối nó với một dịch vụ theo dõi thay đổi chuyên dụng trong hệ điều hành DSM. Điều quan trọng là dịch vụ này chạy liên tục và duy trì nhật ký liên tục về tất cả các thay đổi tệp,  ngay cả khi gói Drive bị dừng . Giờ đây, khi Drive khởi động, nó không cần phải tìm kiếm các thay đổi; nó chỉ cần yêu cầu dịch vụ cung cấp một danh sách gọn gàng về mọi thứ nó đã bỏ sót. Sự tích hợp sâu vào hệ điều hành này biến một cuộc chạy marathon tốn nhiều tài nguyên thành một cuộc kiểm tra ngắn gọn, hiệu quả.

Làm cho việc quản lý phiên bản tệp hiệu quả

Các nhóm sáng tạo và kỹ thuật thường tạo ra nhiều phiên bản của cùng một tệp khi làm việc. Làm thế nào một hệ thống có thể cung cấp khả năng quản lý phiên bản mạnh mẽ mà không tiêu tốn quá nhiều dung lượng lưu trữ?

Đây là cơ hội hoàn hảo để tận dụng  hệ thống tệp Btrfs . Btrfs cho phép sử dụng  reflink — khả năng tạo một "bản sao" của một tệp trỏ đến cùng các khối dữ liệu mà không chiếm thêm dung lượng. Chúng tôi đã thiết kế lại logic quản lý phiên bản để nhận biết Btrfs. Giờ đây, việc tạo phiên bản mới ban đầu gần như diễn ra ngay lập tức và hầu như  không tốn thêm dung lượng lưu trữ.  Mặc dù các loại tệp được ghi đè hoàn toàn sau mỗi lần lưu (như một số định dạng được mã hóa hoặc video) sẽ tự nhiên chiếm nhiều dung lượng hơn khi chúng thay đổi, nhưng phương pháp này mang lại lợi ích lớn về lưu trữ và tốc độ cho rất nhiều loại tệp phổ biến.

Văn hóa của sự tin cậy và hiệu suất

Niềm tin cốt lõi của chúng tôi là một sản phẩm đáng tin cậy, trên hết, phải đáng tin cậy. Hành trình từ một cơ sở dữ liệu cồng kềnh đến một giao diện đáp ứng nhanh, từ một quá trình khởi động chậm chạp đến các phiên bản tiết kiệm không gian, là minh chứng cho cam kết này. Bằng cách tái cấu trúc cơ sở dữ liệu để mở rộng quy mô, đạt được  tốc độ lập chỉ mục nhanh hơn 20 lần , giảm thiểu mức sử dụng CPU với các truy vấn thông minh hơn và tích hợp sâu với nền tảng để tăng hiệu quả lưu trữ, chúng tôi đã thiết kế Synology Drive đáp ứng nhu cầu của thế giới thực. Đó là một nền văn hóa đòi hỏi chúng tôi không chỉ xây dựng một nền tảng vững chắc mà còn liên tục tinh chỉnh ứng dụng và làm chủ tương tác của nó với nền tảng mà nó đang hoạt động. Chúng tôi xử lý sự phức tạp để bạn có thể tận hưởng một giải pháp nhanh chóng, hiệu quả và đáng tin cậy.



(*) Xem thêm

Bình luận
  • Đánh giá của bạn
Đã thêm vào giỏ hàng