Zimbra được thiết kế trên nền tảng để đáp ứng các hệ thống lớn và cực lớn. Kiến trúc Zimbra thừa hưởng từ các hệ thống phân tán chuyên nghiệp được dùng để xây dựng các hệ thống có hàng triệu mailbox trên toàn thế giới và các hệ thống Java có hàng nghìn máy chủ nhiều CPU được triển khai cho từng nhà cung cấp dịch vụ viễn thông đơn lẻ.
Một yếu tố then chốt của việc mở rộng là phân vùng. Việc phân vùng tận dụng được “lợi thế cục bộ” của cả dữ liệu và năng lực xử lý – Nếu một số máy chủ nhất định được chuyên môn hóa để giải quyết một số tập con của một bài toán lớn, thì sẽ có lợi thế khi dữ liệu và các mã xử lý đã có sẵn trong bộ nhớ (RAM) hoặc trên các ổ đĩa tốc độ cao. Kỹ thuật phân vùng bao gồm phân vùng theo chiều dọc các chức năng và phân vùng theo chiều ngang dữ liệu và tiến trình xử lý liên quan (sẽ trình bày chi tiết hơn phía dưới). Kỹ thuật phân vùng được hỗ trợ thêm bởi các hệ thống phân tán như tự động nhân bản (replication), định tuyến dựa trên dữ liệu, cân bằng tải, chuyển đổi dự phòng. Nhìn chung các kỹ thuật này đã được chứng minh (ví dụ Google, Amazone, Yahoo,…) có khả năng mở rộng tốt hơn nhiều so với các kiến trúc tập trung đang sử dụng một cơ sở dữ liệu rất lớn và tiến trình xử lý stateless.
Phân vùng theo chiều dọc cho phép các tác vụ xử lý phức tạp được chia thành các nhiệm vụ phụ có thể được tối ưu hóa, quản lý và gỡ lỗi một cách độc lập hơn. Việc phân chia theo chiều dọc trong Zimbra chủ yếu bao gồm việc phân tải các lớp bảo mật cần năng lực tính toán lớn giữa Zimbra và Internet, ra khỏi mailbox server (quản lý dữ liệu người dùng như message, lịch họp, sổ địa chỉ, v.v…). Lớp bảo mật này bao gồm Postfix Mail Transfer Agent / MTA trong Zimbra để định tuyến thư, chính sách …) và các chương trình chống thư rác, chống virus (Zimbra bao gồm các công nghệ mã nguồn mở hàng đầu – SpamAssassin và ClamAV, nhưng cũng tương thích với các giải pháp thương mại). Hơn nữa, mức bảo mật của Zimbra là “effectively stateless” (giao thức SMTP cung cấp việc gửi lại tự động các message chưa được xác nhận, và Zimbra sẽ không xử lý cho đến khi message được lưu an toàn và hoàn chỉnh trong hộp thư của người dùng). Điều này cho phép bạn mở rộng quy mô các máy chủ ZCS MTA dựa trên khối lượng xử lý bảo mật và Zimbra vẫn tự động quản lý tất cả các thành phần khác cũng như định tuyến đến và từ các máy chủ mailbox ZCS (qua SMTP & LMTP).
Phân vùng theo chiều ngang quan trọng hơn nhiều đối với việc triển khai hệ thống rất lớn, vì thường có nhiều dữ liệu hơn các tác vụ. Các triển khai lớn của Zimbra phân chia mailbox của người dùng theo chiều ngang giữa các máy chủ (và hệ thống lưu trữ đi kèm) . Hộp thư của người dùng cuối bao gồm mail, lịch, địa chỉ liên hệ, ghi chú của người đó, tất cả đều được sắp xếp để người dùng chuyển ngữ cảnh một cách hiệu quả. Vì vậy, các máy chủ ZCS có tính “stateful” – mỗi máy chủ phục vụ một nhóm các mailbox chính. Điều này đòi hỏi mỗi máy chủ ZCS phải thông minh để tái định tuyến lại yêu cầu (thông qua XML / SOAP, IMAP, POP, …) tới máy chủ chính phù hợp trong trường hợp bộ cân bằng tải đã thực hiện định tuyến sai.
Tự động sao chép nhân bản và chuyển đổi dự phòng cũng rất cần thiết. Ví dụ, dữ liệu cấu hình LDAP (bao gồm cấu hình vị trí của mailbox của người dùng) được sao chép đầy đủ đến nhiều máy sao lưu cần thiết để đáp ứng yêu cầu về hiệu suất và tính sẵn sàng. Máy chủ bản sao LDAP có thể được collocated với các máy chủ ZCS khác hoặc “phân vùng theo chiều dọc” vào các máy chủ chuyên dụng. Mặt khác, dữ liệu hộp thư có thể được sao chép một cách trong suốt trênhệ thống lưu trữ (chẳng hạn như thông qua RAID) để đáp ứng tính sẵn sàng cao. Trong tương lai, Zimbra cũng sẽ hỗ trợ việc sao chép các mailbox trên các vùng lưu trữ bằng cách chạy lại các transaction hoặc change log (được sử dụng để đảm bảo tính toàn vẹn giữa các message và meta-data store) trên máy chủ thứ 2. Trong cả 2 trường hợp, kỹ thuật clustering được sử dụng để tự động chuyển đổi dự phòng từ máy chủ chính sang một máy chủ thứ cấp được cấu hình sẵn mà máy chủ này sẽ đảm nhiệm vai trò chính đối với mailbox (và đảm bảo rằng máy chủ chính không còn quyền “write” vào mailbox để tránh hội chứng “split-brained”).
Tối ưu hóa / phân vùng meta-data là một trong những kỹ thuật mở rộng được sử dụng trong kiến trúc Zimbra. Meta-data cho một mailbox là tất cả dữ liệu cần thiết để điều hướng tới message hoặc cuộc họp thích hợp. Zimbra Meta-data bao gồm lập chỉ mục tất cả văn bản trong mỗi mesage, cuộc họp, sổ địa chỉ, tài liệu đính kèm, v.v… dựa trên Lucence. Zimbra meta-data còn bao gồm các meta-data có cấu trúc của các thư mục, nhãn, ngày tháng, kết quả tìm kiếm đã lưu, v.v… Zimbra sử dụng cơ sở dữ liệu quan hệ SQL liên tục để tối ưu hóa các truy vấn và cập nhật dữ liệu có cấu trúc, dĩ nhiên là meta-data cũng được phân vùng theo chiều ngang theo người dùng. Quan trọng nhất là meta-data này cũng nên được phân vùng khỏi dữ liệu mục tiêu (message, meeting, v.v …) để đảm bảo xử lý hiệu quả. Điều này cho phép điều hướng linh hoạt gần như tức thời ngay cả khi trên các mailbox rất lớn (từ 2 – 3Gb). Độ trễ khi truy cập vào các email (một phần có thể gây ra do hệ thống lưu trữ phân cấp HSM) là gần như không ảnh hưởng đáng kể đối với trải nghiệm ngươi dùng so với độ trễ hoặc việc truy cập không hiệu quả vào meta-data. Meta-data được phân vùng cũng cho phép hoạt động cần nhiều tài nguyên như tìm kiếm trên toàn bộ mailbox được thực hiện một cách hiệu quả (thông qua việc sắp xếp đơn giản các kết quả tìm kiếm trên các phân vùng theo chiều ngang phù hợp).
Để tìm hiểu thêm về kiến trúc Zimbra, bạn có thể tham khảo thêm tài liệu Zimbra Architechture Overview.
Nguồn: Zimbra Blog