Chúng tôi có một hệ thống phần mềm hiệu năng cao bao gồm nhiều quy trình Java tương tác (không phải EJB). Mỗi quy trình có thể trên cùng một máy hoặc trên một máy khác.Có giải pháp đồng bộ hóa ngoài giờ cho Java không?
Một số sự kiện nhất định được tạo trong một quy trình và sau đó được truyền bá theo nhiều cách khác nhau cho các quy trình khác để xử lý tiếp và v.v. Đối với mục đích đo điểm chuẩn, chúng ta cần tạo nhật ký khi mỗi sự kiện được chuyển qua "điểm kiểm tra", cuối cùng kết hợp các nhật ký này để có được dòng thời gian về cách mỗi sự kiện được truyền qua hệ thống và với độ trễ (tất nhiên, quá trình chuyển đổi và IPC thêm độ trễ, điều đó là ok).
Vấn đề, tất nhiên, là đồng bộ hóa đồng hồ. Vì vậy, đây là câu hỏi của tôi:
1) Nếu tất cả các quá trình trên cùng một máy, có đảm bảo rằng currentTimeMilis sẽ chính xác tại thời điểm gọi không? Có một số ràng buộc về các lỗi của ITP?
2) Nếu một số quy trình có thể có trên các máy khác nhau, có giải pháp không có sẵn (đó cũng là nguồn mở hoặc miễn phí) cho đồng bộ hóa đồng hồ không? Tôi tốt nhất là tìm kiếm một giải pháp có thể bỏ qua hệ điều hành (Windows hoặc Linux) và làm việc trực tiếp từ Java. Tôi cũng lý tưởng tìm kiếm một cái gì đó có thể hoạt động ở độ chính xác micro giây. Tôi đã nghĩ về NTP, nhưng tôi không chắc chắn nếu nó có sẵn thông qua Java hơn là thông qua hệ điều hành, và tôi không chắc chắn về sự phức tạp của nó.
3) Có cách nào để xác định lề lỗi khi sử dụng NTP trong cấu hình cụ thể (hoặc bất kỳ giải pháp nào tôi sử dụng) để tôi có thể đưa ra sai sót về tính toán độ trễ của chúng tôi không?
Cảm ơn!
Tôi nhớ cuốn sách từ đại học. Dự án của chúng tôi ngay bây giờ đang tìm kiếm một cái gì đó nhanh chóng và hợp lý chính xác, chúng tôi không thể là những người đầu tiên cần một cái gì đó như thế này. Tôi đã tự hỏi nếu có một triển khai kệ. – Uri
Không phải là tôi biết, nhưng với JVM sẽ có rất nhiều thời gian trễ. Môi trường chương trình không được kết hợp chặt chẽ và có thể gian hàng (trên GC và vân vân). Tuy nhiên, tôi không phải là chuyên gia Java. –