【SSO】單點登入系統介紹
一、前言
對於一個開發專案來說,每個專案都必不可少要有登入的這個功能。但是隨著專案的變大,變大,再變大。系統可能會被拆分成多個小系統,咱們就拿支付寶和淘寶來說,咱們在淘寶上購物,然後就可以直接連線到自己的支付寶,這個過程不需要我們再次登入系統,自動就完成了跳轉。這個操作就是小編這次向大家介紹的——單點登入。
二、什麼是單點登入?
SSO英文全稱Single Sign On,單點登入。SSO是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。它包括可以將這次主要的登入對映到其他應用中用於同一個使用者的登入的機制。它是目前比較流行的企業業務整合的解決方案之一。
可以看出,咱們使用了單點登入系統,在分散式架構APP中,咱們的系統和系統之間的跳轉就可以達到無縫連結了。使用者體驗度非常好,使用者根本沒有覺察出是多個系統。這個就達到了我們的目的,即提高了效能,又增加了我們系統之間跳轉的靈活度。
三、從單機到叢集的演變
下面小編從一個技術小白做訂餐系統,一步一步演變框架。
首先呢,小編做了一個java Web的專案,這個專案使用者進入訂餐介面,選擇要定的飯後,提交的時候,會判斷是否登入。如果沒有登入,就會跳轉到使用者登入介面,然後進行登入的判斷;如果已經登入了,就可以直接提交資訊了。
這個小系統非常的簡單,操作也很流暢。但是它由一個適應範圍:非高併發使用流暢。
當我們的這個系統有了很高的併發,就像美團外面一樣,每天的使用者很多。我們能做的就是把我們的APP多釋出到幾個tomcat上,然後通過Nginx反向代理來均分權重。
隨之而來的就是Session共享問題了。
使用者1登入後,nginx給他分配到tomcat1上,session被儲存在tomcat1上。當下次登入可能分配到tomcat2上,這樣還需要重新登入。
Session共享的問題:
1、tomcat做叢集配置session複製。如果叢集中節點很多,會形成網路風暴。推薦節點數量不要超過5個。
2、分散式架構。拆分成多個子系統。
分散式架構
獨立建立一個單點登入系統,登入後,把使用者資訊儲存到redis,把key值儲存到cookie中,當其他系統需要使用者資訊的時候,就可以通過讀取redis中的資訊,如果redis中存在,就直接使用。如果不存在就跳轉到單點登入系統進行登入。
四、小結
在研究的過程中,還是比較愉快的,個人也比較享受。
一步一步演變的系統,讓系統變的更加強大,也是系統進化的表現。另外點單登入的過程還是要好好理解一下的。
下一篇部落格向大家介紹單點登入系統的實現。
感謝博主,本文轉自https://blog.csdn.net/kisscatforever/article/details/76409250