日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

基于Redis实现分布式部署单点登录

發(fā)布時(shí)間:2025/3/21 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Redis实现分布式部署单点登录 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

單點(diǎn)登錄的概念:

單點(diǎn)登錄(Single Sign On),簡(jiǎn)稱為 SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問(wèn)所有相互信任的應(yīng)用系統(tǒng)

為什么會(huì)存在單點(diǎn)登錄的問(wèn)題

  • session默認(rèn)是存儲(chǔ)在當(dāng)前服務(wù)器的內(nèi)存中,如果是集群,那么只有登錄那臺(tái)機(jī)器的內(nèi)存中才有這個(gè)session
  • 比如說(shuō)我在A機(jī)器登錄,B機(jī)器是沒(méi)有這個(gè)session存在的,所以需要重新驗(yàn)證

如何解決這個(gè)單點(diǎn)登錄問(wèn)題

  • 不管在那一臺(tái)web服務(wù)器登錄,都會(huì)把token值存放到我們的一個(gè)集中管理的redis服務(wù)器中
  • 當(dāng)客戶端攜帶token驗(yàn)證的時(shí)候,會(huì)先從redis中獲取,再去redis中查詢是否有該用戶信息存在,如此實(shí)現(xiàn)單點(diǎn)登陸

為什么要使用redis 來(lái)解決session 共享問(wèn)題呢?

  • redis 是一個(gè)純鍵值類型的NSQL數(shù)據(jù)庫(kù),所有的操作都是具有原子性的.
  • redis 可以設(shè)置key的生存時(shí)間,訪問(wèn)速度快速效率高.
  • 缺點(diǎn)就是: 會(huì)對(duì)代碼有一定的侵入性.需要自行編碼實(shí)現(xiàn)!!!

單點(diǎn)登錄的缺點(diǎn)及解決辦法:

引進(jìn)SSO單點(diǎn)登錄的邏輯,它完美的解決了在多服務(wù)下的session共享問(wèn)題,但是又會(huì)帶來(lái)哪些問(wèn)題呢?

  • 在高并發(fā)下,很難保證生成的token的唯一性,并且有可能存在cookie存儲(chǔ)的token信息,在redis 中查詢不到,
  • 于是在這種情況下就需要使用分布式鎖!分布式鎖有很多實(shí)現(xiàn)方式, 利用redis 中的setnx 和getset命令來(lái)實(shí)現(xiàn)redis 分布式鎖!

    SETNX命令簡(jiǎn)介 命令格式 SETNX key value 將 key 的值設(shè)為 value ,當(dāng)且僅當(dāng) key 不存在。 若給定的 key 已經(jīng)存在,則 SETNX 不做任何動(dòng)作。 SETNX 是『SET if Not eXists』(如果不存在,則 SET)的簡(jiǎn)寫(xiě)。 返回值 設(shè)置成功,返回 1 。 設(shè)置失敗,返回 0

    現(xiàn)實(shí)舉例

    • 比如你寫(xiě)的一個(gè)tornado項(xiàng)目,分別部署到A,B兩臺(tái)機(jī)器上
    • 如果直接使用session,那么如果在A機(jī)器登錄,token只會(huì)在A服務(wù)器的內(nèi)存
    • 因?yàn)檎?qǐng)求會(huì)分不到A,B兩個(gè)機(jī)器,如果這個(gè)請(qǐng)求到了B機(jī)器,B的內(nèi)存中沒(méi)有就會(huì)讓重新登錄
    • 所以登錄A機(jī)器的時(shí)候我們應(yīng)該把token值寫(xiě)入到redis中,A/B機(jī)器登錄,都從redis中獲取token進(jìn)行校驗(yàn)

    單點(diǎn)登錄的原理:

    總結(jié)

    以上是生活随笔為你收集整理的基于Redis实现分布式部署单点登录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。