使用JWT的Cloud Native应用程序
本機(jī)云應(yīng)用程序是為云計(jì)算環(huán)境開發(fā)的應(yīng)用程序。
對于“ 什么是云原生應(yīng)用程序 ”這個問題沒有具體答案,但是必須滿足不同的概念。
在我看來,最重要的功能之一就是能夠快速縮放 。 這意味著我們的應(yīng)用程序在每臺服務(wù)器上都無法具有任何狀態(tài),因?yàn)槿绻慌_服務(wù)器宕機(jī)或規(guī)模縮小,那么存儲在該服務(wù)器中的狀態(tài)將丟失。
https://www.youtube.com/watch?v=osz-MT3AxqA對此進(jìn)行了很好的總結(jié),并以購物車示例進(jìn)行了說明。 在整體方法中,您將購物車的產(chǎn)品存儲在服務(wù)器會話中,如果服務(wù)器出現(xiàn)故障,則購物車的所有產(chǎn)品也會丟失。 在云原生應(yīng)用程序中 ,可以快速擴(kuò)展和縮減服務(wù)器實(shí)例,重要的是不要在服務(wù)上具有這種有狀態(tài)的行為,而應(yīng)將它們設(shè)計(jì)為無狀態(tài)。
有多種方法可以實(shí)現(xiàn)實(shí)現(xiàn)無狀態(tài)體系結(jié)構(gòu)的目標(biāo),但可以將它們概括為兩類:
- 使用分布式內(nèi)存鍵/值數(shù)據(jù)存儲,例如Infinispan。
- 使用令牌,該令牌用作客戶端和服務(wù)器之間的會話 ,例如使用JWT 。
在本文中,我將向您介紹后面的方法。
從https://jwt.io/introduction/網(wǎng)站:
JSON Web令牌(JWT)是一個開放標(biāo)準(zhǔn)(RFC 7519),它定義了一種緊湊且自包含的方式,用于在各方之間作為JSON對象安全地傳輸信息。
由于此信息是經(jīng)過數(shù)字簽名的,因此可以被驗(yàn)證和信任。 可以通過使用HMAC的機(jī)密或使用RSA的公/私鑰對對JWT進(jìn)行簽名。
JSON Web令牌包含三個由點(diǎn)分隔的Base64Url字符串,它們是:Header.Payload.Signature
因此,使用JWT在后端實(shí)現(xiàn)無狀態(tài)架構(gòu)的基本思想是下一個:
如您所見,現(xiàn)在無需維護(hù)任何狀態(tài)或在后端添加任何新的數(shù)據(jù)庫服務(wù),您只需要發(fā)送和轉(zhuǎn)發(fā)JWT令牌以及內(nèi)部產(chǎn)品。
我錄制了一個簡單購物車示例的視頻,其中演示了該解決方案的無狀態(tài)本質(zhì)。 可以在以下位置看到:
另外,如果您想檢查我用于錄制的項(xiàng)目,可以查看https://github.com/lordofthejars/shop-jwt 。
注意,這只是一個簡單的文章,因此您可以了解基本思想。 但是您需要考慮在生產(chǎn)中使用它的下一步操作:
您可以在JavaZone上觀看我的演講,其中介紹了其中一些技巧:
使您的REST服務(wù)免受攻擊– Vimeo上 JavaZone的 Alex Soto Bueno
JWT方法的優(yōu)點(diǎn)在于,它極大地簡化了服務(wù)的部署,您無需部署或配置任何其他分布式數(shù)據(jù)庫即可在整個群集中共享內(nèi)容,從而將與網(wǎng)絡(luò)通信所需的問題最小化分布式數(shù)據(jù)庫或任何節(jié)點(diǎn)的配置錯誤。
缺點(diǎn)是客戶端需要知道接收和發(fā)送回令牌并進(jìn)行處理。 在后端,您需要一直簽名并驗(yàn)證每個令牌。
翻譯自: https://www.javacodegeeks.com/2018/01/cloud-native-applications-jwt.html
總結(jié)
以上是生活随笔為你收集整理的使用JWT的Cloud Native应用程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件这样卸载才干净电脑如何彻底卸载软件
- 下一篇: hp惠普笔记本电脑如何系统还原hp电脑如