Dağıtılmış Kimlik Oluşturucu (Snowflake Algorithm SpringBoot Edition)

Giriş

Dağıtılmış kimlik oluşturucu:

Global benzersiz kimlik, verileri ayırt etmek için benzersiz bir tanımlayıcı olarak kullanılır ve bir sipariş numarası, kullanıcı kimliği vb. Olarak kullanılabilir. Kimlik oluşturucu, diğer işletmelere hizmet sağlamak için temel bir hizmet olarak paketlenebilen, küresel olarak benzersiz bir kimlik oluşturmak için bir araçtır. Bu nedenle, bu proje, kimlik oluşturucuyu kapsüllemek ve çeşitli iş sistemlerinin çağrı yapmasına izin vermek için springboot kullanmaktır.

Kar tanesi algoritması

Birçok kimlik oluşturma algoritması vardır.Bu proje, benzersiz kimlikler oluşturmak için Twitter'ın açık kaynaklı kar tanesi algoritmasını sıkı bir şekilde takip eder. Zaman damgalı, küresel olarak benzersiz bir kimlik oluşturma algoritmasıdır. Aşağıdaki gibi bir dizi sabit kimlik biçimi vardır:

41 bitlik zaman damgası (milisaniye kadar doğru, 41 bit uzunluk 69 yıl kullanılabilir) 10 basamaklı makine kimliği (10 basamaklı uzunluk, 1024'e kadar sunucu düğümü dağıtımını destekler) 12 bit sayma seri numarası (12 bit, milisaniye başına 4096 seri numaraya kadar üretmek için her düğümü destekler)

kullanım

Projeyi çalıştırmaya başlayın

Kök dizinde maven komutunu yürütün

mvn clean install -DskipTests -Dmaven.test.skip = true

Aşağıda gösterildiği gibi, id-generate-rest'in hedef dizininde oluşturulan zip paketini bulun

Kırmızı çizgi ile gösterilen zip paketini bulun ve sıkıştırmasını açın ve ardından yerel bir dizine yerleştirin, burada yerel bilgisayarımın kök dizinine yerleştiriyorum. Aşağıda gösterildiği gibi

Terminal penceresine geçin, bin dizinini girin ve start.sh başlangıç betiği komutunu aşağıdaki gibi yürütün:

./start.sh ps -ef | grep restApplication

Aşağıdaki durum ortaya çıkarsa, projenin başarıyla başladığını kanıtlar

Başlangıç bağlantı noktasını 10010 olarak ayarladım ve içerik adı myID

Tarayıcı penceresine http: // localhost: 10010 / myID / swagger-ui.html girin ve arayüz aşağıdaki gibidir

Zaten Swagger'da bulunan 4 springboot kapsüllenmiş API arayüzünü görüntülemek ve test etmek için Swagger'ı kullanın; ayrıca aşağıda ayrıntılı olarak ekran görüntüleri alacağım

API kullanımına giriş

4 API arabirimi

Gerçek zamanlı kimlik oluşturma

Şekilde gösterildiği gibi, herhangi bir parametre girmeden doğrudan "dene" düğmesine tıklayın ve uzun kimliği geri döndürün

Kimliği çöz

Şekilde gösterildiği gibi, önceki arayüz tarafından oluşturulan kimliği giriş kutusuna kopyalayabilir ve ardından zaman damgası, makine kimliği ve seri numarasının üç öznitelik değerini içeren bir json biçim dizesi döndürmek için doğrudan "dene" düğmesini tıklayabilirsiniz.

Giriş parametresi oluşturma kimliği

Zaman damgası, makine kimliği ve seri numarasından oluşan üç öznitelik değeri içeren bir json biçim dizesi girin ve uzun bir kimlik döndürün. Aşağıdaki şekilde gösterildiği gibi, önceki arayüzle karşılıklı bir işlem olan ayrıştırma kimliği arabirimi tarafından döndürülen json biçim dizesini girmeniz önerilir.

Zaman damgasını ayrıştırın

Zaman damgası değerini girin ve belirli tarih değerini yyyy-AA-gg SS: dd: ss biçiminde döndürün. Aşağıdaki şekilde gösterildiği gibi, önceki json biçim dizesine zaman damgası değerini girmeniz önerilir.

Komut dosyasına genel bakış

start.sh

Başlangıç betiğinin içeriği aşağıdaki gibidir

#! / bin / sh Eko ------------------------------------------- yankı başlatma sunucusu Eko ------------------------------------------- # Proje kodu yolunu ayarlayın dışa aktar CODE_HOME = "/ id-generate-rest" # Günlük yolu dışa aktar LOG_PATH = "/ Kullanıcılar / wujunshen / İndirmeler / id-generator" mkdir -p LOG_PATH $ # Bağımlılık yolunu ayarla dışa aktar CLASSPATH = "$ CODE_HOME / sınıflar: $ CODE_HOME / lib / *" # java yürütülebilir dosya konumu dışa aktar _EXECJAVA = "$ JAVA_HOME / bin / java" # JVM başlangıç parametreleri dışa aktar JAVA_OPTS = "- sunucu -Xms8m -Xmx2048m" # Sunucu bağlantı noktası, bağlam, proje kök yapılandırması dışa aktar SERVER_INFO = "- Dserver.port = 10010 -Dserver.contextPath = / myID -Dserver.docBase = $ CODE_HOME" # Sınıfı başlat MAIN_CLASS = com.wujunshen.rest.RestApplication dışa aktar nohup $ _EXECJAVA $ JAVA_OPTS -classpath $ CLASSPATH $ SERVER_INFO $ MAIN_CLASS > $ LOG_PATH / id-generator.log 2 > 1

CODE_HOME ve LOG_PATH, zip paketinin açıldığı dizine göre yapılandırılabilir ve değiştirilebilir. Son satırı içeren günlük dosyası adı değiştirilebilir. Başlangıç sınıfı, springboot'un Uygulama başlangıç sınıfıdır ve ilgili JVM parametreleri, kendi bilgisayarınızın donanım yapılandırmasına göre de eklenebilir ve değiştirilebilir. Ek olarak, komut dosyasındaki bağlantı noktası ve bağlam adlarının projedeki /id-generate-rest/src/main/resources/application.properties dosyasındaki server.port ve server.context-path değerleriyle tutarlı olması gerekir.

stop.sh

Durdurma betiğinin içeriği aşağıdaki gibidir

# Günlük yolu dışa aktar LOG_PATH = "/ Kullanıcılar / wujunshen / İndirmeler / id-generator" mkdir -p LOG_PATH $ # Sınıfı başlat MAIN_CLASS = com.wujunshen.rest.RestApplication dışa aktar Eko ------------------------------------------- yankı durdurma sunucusu # Tüm ilgili süreçler PID'ler = `jps -l | grep $ MAIN_CLASS | awk '{print $ 1}' ' #Stop işlemi ; sonra $ PID'lerdeki PID için; $ PID'yi öldür echo "$ PID'yi öldür" bitti fi # 50 saniye bekleyin 110'da i için; yap PID'ler = `jps -l | grep $ MAIN_CLASS | awk '{print $ 1}' ' ; sonra echo "sunucu başarısını durdur" Eko ------------------------------------------- kırmak fi echo "5 saniye uyku" uyku 5 bitti # 50 saniye beklerseniz ve durmazsanız, öldürün PID'ler = `jps -l | grep $ MAIN_CLASS | awk '{print $ 1}' ' ; sonra $ PID'lerdeki PID için; öldür -9 $ PID echo "öldür -9 $ PID" bitti fi
"Anti-Drug 2" Zhang Jiahui'ye sahip değil, önemli değil, sonraki üç filmde de ona sahip
önceki
Deng Chaonun yeni filmi henüz gösterime girmedi ve şimdiden 60 milyon gişe hasılatı aldı, ancak bu operasyon dalgası gerçekten iğrenç
Sonraki
Mad Catz 30. Yıl Dönümü: Dünya çapında 1.000 parça ile sınırlı bir hatıra faresinin piyasaya sürülmesi
"EXO" "Paylaş" 190617 İzledikten sonra anne olmak ve Sehun'un bebek gibi davrandığı anı yakalamak istiyorum.
Bu üç filmin hepsi hit ... Aynı anda gösterilebilirlerse en çok gişe yapan kim?
"WANNA ONE" "News" 190617 Jiang Daniel, havaalanı fotoğrafları bile "resim ustası" olarak çekildi
JVM, "mideni kıracağım"
190617 "Extreme Challenge" kaydı, Zhang Yixing'in "Gözlükleri Öldür" sahnelemesini vurdu
Ağızdan çıkan söz o kadar iyi ki gökyüzüne aykırı ama skor neredeyse kötü bir filme indirgeniyor ... Bu, Douban'ın karşısında dövüldüğü en kötü zamandı.
Bu yılın ilk yarısında, Pekin arazi pazarı iş amaçlı kullanım için 33 arsa sattı ve toplam işlem değeri 86.865 milyar yuan oldu.
Huirong, Agylstor M.4 NVMe SSD Prototipini Sergiliyor
Hong Kong Wireless'ın beş kaplanı var, ancak yeni beş kaplan olduğunu unutmayın. Son ikisini bilmek en iyisidir
Maldivler-Çin Dostluk Gecesi Resepsiyonu Pekin'de yapıldı
Altı Pan Jinlian oyuncusu var, ilk beşi eşsiz güzellikler, sadece sonuncusu çirkin
To Top