假设网络场中有许多负载平衡的网络服务器,在应用程序代码中使用应用程序/网络服务器时间来获取系统日期/时间是否安全,或者我们是否应该将此责任留给数据库服务器?
网络农场中所有服务器上的机器日期/时间设置是否有可能不同步?
如果日期/时间将由 DBMS 负责,那么如果我们有负载平衡的集群 DB,该策略将如何工作?
你应该有一个时间服务器 (-:)
严肃地说,第一种方法是确保所有服务器都使用协议来同步它们的时钟。这会给你留下一个已知的最坏情况偏差。只有当这个偏差大于你可以容忍的(不太可能在 Web 应用程序中)时,你才需要设计一些特殊的东西。通常数据库会没问题,但如果是集群的,那么您可能需要指定一个专用服务器作为时间管理员。
但请注意,您的准确性将始终受到网络最大滞后的约束。
最好只是在所有服务器上设置相同的时间,这样您就不必担心它,否则总是会混淆时间是否来自。
如果服务器上的时钟是定期从时间服务器设置的,那么它们之间的精度应该至少在 100 毫秒以内,这可能已经足够了,但显然这取决于你到底想要做什么。