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 = trueAş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 restApplicationAş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 > 1CODE_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