Facebook, yeni bir zaman hizmetini kullanıma sundu
(engineering.fb.com)Facebook, time.facebook.com adresinde yeni bir NTP zaman hizmetini kullanıma sundu. Diğer herkese açık zaman hizmetlerine göre daha yüksek doğruluk sunduğu ve kullanıcıları IP adresleriyle tanımlamadığı belirtiliyor. Ayrıca Facebook, bu hizmetle ilgili bir yazıyı kendi mühendislik blogunda yayımladı. (İngilizce)
Facebook gibi büyük BT şirketlerinin zaman hizmetleriyle ilgilenmesinin nedeni, dağıtık sistemleri işletmektir. Dağıtık veritabanı işlemlerini yürütmek veya doğru loglama sağlamak için birden fazla sunucunun saatlerini yüksek hassasiyetle senkronize etmesi gerekir.
Facebook, Stratum 1 (uydudaki atom saatlerinden doğrudan zaman bilgisi alan cihaz) sınıfında profesyonel test ekipmanı satın alarak, yaygın biçimde zaman sunucusu olarak kullanılan mevcut ntpd ile görece daha yeni bir NTP daemon’u olan chrony( https://chrony.tuxfamily.org/ ) arasında bir benchmark gerçekleştirdi. ntpd, ilk çalıştırmadan sonra geçici olarak -10 ms hata ürettikten sonra zamanla ±1 ms hata aralığına yakınsarken, chrony çoğu durumda hatayı sürekli ±0.2 ms içinde tutarak ntpd’den çok daha doğru bir performans gösterdi.
chrony’nin başka avantajları da var. Bunlardan biri donanım zaman damgasını desteklemesi. Zaman senkronizasyon protokolü olan NTP, sunucu ile istemci arasında paketler gidip gelirken her seferinde zaman damgası alıp, gidiş-geliş için geçen süre farkını hesaplayarak mümkün olan en doğru güncel zamanı elde etmeye çalışır. Ancak gerçek zamanlı işletim sistemi olmayan durumlarda, herhangi bir işlemin gecikme süresinin belirli bir seviyenin altında kalacağını garanti etmek mümkün değildir. Bu durum NTP için de geçerlidir ve ağ üzerinden zaman senkronizasyonunda hatanın büyümesinin nedenlerinden biri olur.
Buna karşın bazı NIC’ler (ağ kartları) donanım zaman damgası özelliğini destekler. Bu özellikte NIC, ayrı bir donanım üzerinden kendi saatini korur ve zaman damgası işlemesini yapar; işlem gecikmesi yalnızca birkaç nanosaniye düzeyindedir. Eğer ortam yerel ağ ise ve hem NTP sunucusu hem de istemci donanım zaman damgasını destekliyorsa, ideal koşullarda 1 mikrosaniyenin altında hatayla zaman senkronizasyonu yapmak mümkün olabilir. Gerçek zaman hizmetleri yerel ağ ortamında çalışmadığından ve istemci tarafındaki NIC de her zaman donanım zaman damgasını desteklemediğinden bu kadarını beklemek zor olsa da, yine de chrony ile donanım zaman damgası özelliğini birlikte kullanarak yapılan benchmark sonucunda zaman senkronizasyon hatalarının çoğunun ±0.1 ms içinde kaldığı belirtiliyor.
Bu nedenle Facebook, chrony üzerinde donanım zaman damgasını etkinleştiren bir yapılandırmayla herkese açık zaman hizmeti sunduğunu söylüyor. Google veya Apple gibi diğer herkese açık zaman sunucularında sağlanan zamanın hatası bazen ±2 ms’yi aşarken, Facebook’un hizmetinde çoğu durumda bunun ±1 ms içinde kaldığı belirtiliyor. Ayrıca bu hizmet, birbirinden farklı 5 bölgede endpoint’lerle işletiliyor. Ayrıntılar için özgün yazıya bakabilirsiniz.
7 yorum
Vay canına. İlgi çekici bir yazıydı. Hassasiyet için gösterilen çaba kısa(?) ama yine de ayrıntılı biçimde paylaşılmış. Bu yazıyı okuduktan sonra Mac’teki NTP sunucusunu
time3.facebook.comolarak değiştirdim.Ben
time1.facebook.comkullanıyorum. Ping attığımda 2'den 5'e kadar olan diğer endpoint'lere ya hiç ping gitmiyor ya da oldukça yavaş yanıt veriyorlar.chronyiçindetime1.facebook.comadresini zaman sunucusu olarak ayarlayınca tahmini hata payı ±1 ms'nin biraz üzerinde görünüyor. Sadecetime.facebook.comayarlarsam ise zamanı alamıyorum.Bu arada
time.google.comya datime.windows.comgibi diğer zaman sunucuları istisnasız 30 ms'nin üzerinde sapma veriyor. Aynı durumkr.pool.ntp.orggibi NTP havuzları için de geçerli. Şimdiye kadar gördüğüm zaman sunucuları arasında zaman hatası en düşük çıkan ise bir Stratum 1 sunucusu olanntp.postech.ac.kr;chronybunu yaklaşık ±5 ms olarak tahmin ediyordu.Geçenlerde chrony'de
time.apple.com'u Pool olarak ayarlayınca Kore ve Japonya'daki yüksek hassasiyetli NTP sunucularının seçildiğini öğrendim. Hatta Stratum 1 olarak görünüyordu. Görünüşe göre Apple, kendi CDN sunucularına GPS alıcıları takıp bunları zaman sunucusu olarak kullanıyor.Vay, ilginçmiş.
at Facebook scaleifadesi artık kulağa tanıdık gelmeye başladı.Konuyla alakasız ama GeekNews’in Twitter’ında bu yazı paylaşılmamış gibi görünüyor; acaba Twitter botunun paylaştığı haberler için ayrı bir koşul mu var?
Ah, kontrol edince metin uzunluğunu sayıp keserek yükleyen kısımda içeriğin en başındaki URL otomatik olarak linke dönüştüğü için karakter sınırı aşıldı ve Twitter API hata verdi üzücü.
Twitter'da URL'ler koşulsuz olarak galiba 22 byte'a dönüştürülüyor.
Bu kısmı düzeltmek gerekecek gibi görünüyor.