15 điểm bởi xguru 2022-07-26 | 5 bình luận | Chia sẻ qua WhatsApp
  • Giây nhuận (Leap Second) được đưa vào để hiệu chỉnh chênh lệch giữa UT1 (giờ thế giới) và UTC do tốc độ tự quay của Trái Đất gây ra
  • Điều này giúp UTC có thể được dùng cho nhiều mục đích khác nhau như quan trắc thiên văn, nên chủ yếu có ích cho các nhà khoa học và thiên văn học
  • Nếu không điều chỉnh UTC, thì phải hiệu chỉnh các thiết bị và phần mềm legacy được đồng bộ với UTC để phục vụ quan trắc thiên văn
  • Từ khi giây nhuận được đề xuất đến nay, UTC đã được điều chỉnh tổng cộng 27 lần
  • Vào năm 1972, giây nhuận là một giải pháp chấp nhận được, làm hài lòng cả giới khoa học lẫn ngành viễn thông, nhưng hiện nay UTC không còn tốt cho cả ứng dụng số lẫn giới khoa học
    → Họ thường chọn TAI (International Atomic Time, Giờ Nguyên tử Quốc tế) hoặc UT1
  • Meta đang ủng hộ các nỗ lực của ngành nhằm dừng việc bổ sung giây nhuận trong tương lai và giữ nguyên mức hiện tại là 27
  • Việc thêm các giây nhuận mới là một thực tiễn rủi ro, hại nhiều hơn lợi, và đã đến lúc áp dụng công nghệ mới để thay thế

Leap of Faith

  • Một trong nhiều yếu tố góp phần vào sự bất quy tắc trong chuyển động quay của Trái Đất là việc băng tuyết vĩnh cửu trên những ngọn núi cao nhất thế giới liên tục tan chảy rồi đóng băng trở lại
  • Điều này có thể hình dung dễ dàng nếu nghĩ đến một vận động viên trượt băng nghệ thuật đang xoay người
  • Cho đến nay chỉ có giây nhuận dương, nên chỉ cần chèn thêm một giây 23:59:60 giữa 23:59:5900:00:00, nhưng
    khi mô hình tự quay của Trái Đất thay đổi, rất có thể vào một thời điểm nào đó trong tương lai sẽ xuất hiện giây nhuận âm
    Khi đó sau 23:59:58 sẽ phải là 00:00:00.
  • Tác động của giây nhuận âm này chưa từng được kiểm thử ở quy mô lớn, và có thể gây ảnh hưởng nghiêm trọng tới phần mềm phụ thuộc vào timer hoặc scheduler

Smearing

  • Gần đây hơn, việc đơn giản là làm đồng hồ chậm lại hoặc nhanh lên để “trải” (smear) giây nhuận một cách từ từ đã trở thành thông lệ
  • Không có một cách phổ quát để thực hiện việc này, nhưng tại Meta, giây nhuận được smear trong suốt 17 giờ kể từ 00:00:00
  • Vì hàng trăm máy chủ NTP cùng hoạt động ở Stratum 2, nếu smearing quá mạnh thì các NTP client có thể phán đoán là có lỗi và loại chúng khỏi quorum, điều này có thể dẫn tới outage
  • Việc bắt đầu từ 00:00:00 cũng không phải là thứ đã được chuẩn hóa, nên có thể có nhiều lựa chọn khác nhau
    → Ví dụ, một công ty nào đó có thể bắt đầu từ 12:00:00 UTC và kéo dài trong 24 giờ
  • Ngoài ra, bản thân smearing cũng có nhiều thuật toán khác nhau: hiệu chỉnh giây nhuận ở kernel, Linear Smearing, Quadratic (Meta đang dùng)
  • Tất cả những việc này đều cần logic chuyển đổi quan trọng, bao gồm cả Time Appliance riêng của Meta
  • Nếu máy chủ NTP khởi động lại trong giai đoạn smearing này, thời gian “Old” và “New” có thể cùng được gửi tới client và gây ra outage

The negative impact of Leap Seconds

  • Giây nhuận và offset của nó gây ra vấn đề trên toàn ngành
  • Cách dễ nhất để gây outage là lập trình với giả định rằng thời gian luôn chỉ tiến về phía trước

start := time.Now()
// do something
spent := time.Now().Sub(start)

  • Tùy vào cách spent được sử dụng, trong thời gian có giây nhuận thì nó có thể trở thành số âm
  • Reddit đã gặp sự cố gián đoạn quy mô lớn vào năm 2012 vì giây nhuận, khiến trang web không thể truy cập trong 30~40 phút
  • Cloudflare đã đăng một bài viết chi tiết vào năm 2017 về ảnh hưởng của vấn đề này tới DNS công cộng của công ty

Moving beyond the leap second

  • Các sự kiện giây nhuận gây ra vấn đề trên toàn ngành và vẫn tiếp tục tiềm ẩn nhiều rủi ro
  • Trong thực tế vận hành, chúng ta gặp trục trặc mỗi khi giây nhuận được áp dụng
  • Và vì đây là sự kiện rất hiếm, mỗi lần nó xảy ra đều khiến các cộng đồng bị xáo trộn nặng nề
  • Khi nhu cầu về độ chính xác thời gian tăng lên trong mọi lĩnh vực công nghiệp, giây nhuận giờ đây hại nhiều hơn lợi và gây ra outage
  • Với tư cách là các kỹ sư của Meta, chúng tôi đang hỗ trợ mạnh mẽ việc dừng bổ sung giây nhuận trong tương lai và giữ nguyên mức hiện tại là 27, mức mà chúng tôi cho là đủ cho một nghìn năm tới

5 bình luận

 
galadbran 2022-07-26

Wow, chủ đề này thú vị quá! Nhưng ừm… mình hiểu là việc chèn giây nhuận là một việc lớn, nhưng mình không hiểu họ đang phải bỏ ra những nỗ lực lớn nào để duy trì 27 giây đó.

 
budlebee 2022-07-26

Có lẽ là đang muốn nói đến những thứ như thế này

https://vi.news.hada.io/topic?id=1752

 
dodok8 2022-07-26

Tiêu đề bài viết có gì đó hơi kỳ lạ.

 
dodok8 2022-07-26

Tiêu đề của tin nhắn do bot Twitter hoặc bot Slack gửi thì vẫn bình thường, nhưng khi xem trên trang web thì lại bị lỗi.

 
xguru 2022-07-26

À, có vẻ là có gì đó bị sai. Tôi đã sửa lại rồi.