01
-
Dağıtılmış benzersiz kimlik nedir
Karmaşık dağıtılmış sistemlerde, genellikle büyük miktarlarda veri ve mesajı benzersiz bir şekilde tanımlamak gerekir.
Örneğin, finans, e-ticaret, ödeme ve diğer ürünler sistemlerinde veriler gün geçtikçe büyüyor. Veriler alt veritabanı ve tablo olduktan sonra, bir veri veya mesajı tanımlamak için benzersiz bir kimlik gerekir. Veritabanının kendi kendine artan kimliği açıkça talebi karşılayamaz. Küresel olarak benzersiz bir kimlik oluşturabilen bir sistem çok gereklidir.
02
-
Dağıtılmış Benzersiz Kimliğin Özellikleri
Aynı zamanda, kimlik numarası için gerekliliklere ek olarak, işletmenin ayrıca kimlik numarası oluşturma sisteminin kullanılabilirliği için son derece yüksek gereksinimleri vardır.Kimlik oluşturma sistemi çökerse bunun bir felaket getireceğini düşünün.
Bu, sonraki kimlik oluşturma sisteminin aşağıdakileri yapması gerektiği sonucuna varır:
03
-
Dağıtılmış benzersiz kimlik oluşturmanın 5 yolu
1.UUID
UUID'nin (Evrensel Benzersiz Tanımlayıcı) standart biçimi, 8-4-4-4-12'lik 36 karakter biçiminde kısa çizgilerle beş parçaya bölünmüş 32 onaltılık basamak içerir, örneğin: 550e8400-e29b-41d4-a716 -446655440000. Şimdiye kadar, endüstride UUID oluşturmanın 5 yolu vardır. Ayrıntılar için, lütfen IETF tarafından yayınlanan UUID belirtimine Evrensel Olarak Benzersiz Bir Tanımlayıcı (UUID) URN Ad Alanı'na bakın.
avantaj:
Dezavantajları:
2. Veritabanı üretimi
MySQL'i örnek olarak alın.Kimliğin otomatik olarak artmasını sağlamak için auto_increment_increment ve auto_increment_offset'i kullanın. İşletme, kimlik numarasını almak için MySQL'i okumak ve yazmak için aşağıdaki SQL'i her kullandığında.
Bu şemanın avantajları ve dezavantajları aşağıdaki gibidir:
avantaj:
Dezavantajları:
3. Redis, kimlik oluşturur
Kimlik performansı oluşturmak için bir veritabanı kullanmak yeterli olmadığında, ID oluşturmak için Redis'i kullanmayı deneyebiliriz.
Bu, esas olarak Redis'in tek iş parçacıklı olmasına bağlıdır, dolayısıyla küresel olarak benzersiz bir kimlik oluşturmak için de kullanılabilir. Redis'in atomik işlemleri INCR ve INCRBY ile uygulanabilir.
Her gün 0'dan başlayan bir seri numarası oluşturmak için Redis kullanmak daha uygundur. Örneğin, sipariş numarası = tarih + kendi kendine artan gün sayısı. Her gün Redis'te bir Anahtar oluşturabilir ve biriktirmek için INCR kullanabilirsiniz.
avantaj:
1) Veritabanına bağlı değildir, esnek ve kullanışlıdır ve performans veritabanından daha iyidir.
2) Dijital kimlik doğal olarak sıralanır, bu da sayfalama veya sıralanması gereken sonuçlar için çok faydalıdır.
Dezavantajları:
1) Sistemde Redis yoksa, sistem karmaşıklığını artırmak için yeni bileşenlerin eklenmesi gerekir.
2) Kodlama ve yapılandırmanın iş yükü nispeten büyüktür.
4. Benzersiz bir kimlik oluşturmak için hayvan bakıcısı kullanın
Zookeeper, seri numarasını esas olarak 32-bit ve 64-bit veri sürüm numaralarını oluşturabilen znode veri sürümü aracılığıyla üretir. İstemci bu sürüm numarasını benzersiz bir seri numarası olarak kullanabilir.
Nadiren benzersiz bir kimlik oluşturmak için zookeeper'ı kullanır. Bunun ana nedeni, zookeeper'a güvenmeniz ve API'yi birden çok adımda çağırmanız gerektiğidir.Yüksek rekabet varsa, dağıtılmış kilitler kullanmayı düşünmeniz gerekir. Bu nedenle, yüksek oranda eşzamanlı dağıtılmış bir ortamda performans ideal değildir.
5. Kar Tanesi (kar tanesi algoritması) şeması
Genel olarak konuşursak, bu şema ad alanını bölerek kimlik üretmek için bir algoritmadır (UUID de sayılır, çünkü daha yaygındır, bu yüzden ayrı olarak analiz edilir) Bu şema 64 biti birden çok parçaya böler ve makineyi belirtmek için ayırır. , Zaman, vb., Örneğin, kar tanesindeki 64 bit, aşağıdaki şekli temsil eder (ağdan resim):
41-bit zaman ifade edilebilir (1L < < 41) / (1000L * 3600 * 24 * 365) = 69 yıl, 10 bitlik makineler sırasıyla 1024 makineyi temsil edebilir. IDC bölümü için bir talebimiz varsa, 10-bit'i 5-bit'i IDC'ye ve 5-bit'i iş makinesine bölebiliriz. Bu şekilde 32 IDC temsil edilebilir ve her bir IDC kendi ihtiyaçlarına göre tanımlanabilen 32 makineye sahip olabilir. Kendinden artan on iki seri numarası 2 ^ 12 kimliği temsil edebilir. Teorik olarak, kar tanesi şemasının QPS'si yaklaşık 409,6 w / s'dir. Bu tahsis yöntemi, IDC'lerin herhangi bir milisaniyede herhangi bir IDC'nin herhangi bir makinesi tarafından oluşturulmasını sağlayabilir. Farklı.
Bu yaklaşımın avantajları ve dezavantajları şunlardır:
avantaj:
Dezavantajları:
Uygulama örnekleri Mongdb nesne kimliği
Resmi MongoDB belgesi ObjectID, kar tanesine benzer bir yöntem olarak sayılabilir. "Time + machine code + pid + inc" üzerinden toplam 12 bayttır ve son olarak 4 + 3 + 2 + 3 yöntemi ile 24 uzunluklu onaltılık olarak tanımlanır. Sistem karakterleri.
-son-