2010-05-14 22 views
7

Giả sử có một số máy chủ web cân bằng tải trong trang trại, có an toàn khi sử dụng thời gian máy chủ ứng dụng/web trong mã ứng dụng để nhận ngày/giờ của hệ thống hay chúng ta nên chịu trách nhiệm này đối với máy chủ cơ sở dữ liệu ?Trong môi trường trang trại, chúng tôi có nên căn cứ ngày/giờ của hệ thống cho máy chủ web hoặc máy chủ cơ sở dữ liệu không?

Có khả năng cài đặt ngày/giờ của máy trên tất cả các máy chủ trong webfarm không đồng bộ không?

Nếu ngày/giờ sẽ chịu trách nhiệm về DBMS, chiến lược này sẽ hoạt động như thế nào nếu chúng tôi có các DB được phân cụm cân bằng tải?

+0

Tại sao không chuẩn UTC? –

+0

Nó thay vì phụ thuộc vào những gì bạn muốn sử dụng thời gian cho. Nếu bạn chỉ cần biết đến phút gần nhất, thì đó là một câu hỏi khác để cần nó đến mili giây. –

+0

Thay vì sử dụng System.DateTime.UtcNow - điều này sẽ tránh bất kỳ vấn đề nào bạn có thể gặp phải nếu các máy không được thiết lập cùng một múi giờ. –

Trả lời

3

Bạn nên có Máy chủ thời gian (- :)

Nghiêm túc, cách tiếp cận đầu tiên là đảm bảo tất cả máy chủ sử dụng giao thức để đồng bộ hóa đồng hồ của họ. Điều đó sẽ để lại cho bạn một độ lệch trường hợp xấu nhất đã biết. Chỉ khi độ lệch đó lớn hơn bạn có thể dung thứ (không có trong một ứng dụng web), bạn sẽ cần phải thiết kế một cái gì đó đặc biệt. Thông thường cơ sở dữ liệu sẽ được OK, nhưng nếu đó là cụm sau đó bạn có thể cần phải chỉ định một máy chủ chuyên dụng như là thủ môn của thời gian.

Nhưng lưu ý rằng độ chính xác của bạn sẽ luôn bị ràng buộc bởi độ trễ tối đa của mạng.

1

Chỉ để có cùng một thời gian được đặt trên tất cả các máy chủ để bạn không phải lo lắng về điều đó, nếu không luôn có sự nhầm lẫn về thời gian đến. Nếu đồng hồ trên các máy chủ được đặt từ một máy chủ thời gian thường xuyên, chúng phải chính xác trong phạm vi 100ms của nhau ít nhất, có lẽ là đủ tốt, mặc dù rõ ràng nó phụ thuộc vào chính xác bạn đang cố gắng làm gì.

Các vấn đề liên quan