1.利用***,redis和cookie實現sso單點登入。
—怎麼實現的:
當使用者第一次登陸時,伺服器動態生成乙個uuid,作為cookie的value,儲存在客戶端的 cookie c 裡;將使用者物件轉換成json串(使用fasterxml),和uuid一起儲存在redis裡(uuid為key,json為value)
當使用者在子頁面之間跳轉時,會帶著之前伺服器給的 cookie c;伺服器拿到cookie c裡的value(也就是uuid),去redis裡查詢有沒有對應的value(也就是使用者的json串),再將json轉換成使用者物件,存放在threadlocal中,這樣就實現了單點登入;
–帶來的問題:
1.cookie儲存在客戶端,怎樣保證cookie的安全?
在將使用者物件轉換成json之前,使用set方法更改敏感資訊(密碼,手機號,郵箱等)
2.客戶端禁用cookie怎麼辦?
url重寫
2.搭建後台商品管理系統的tomcat伺服器集群,並採用nginx實現負載均衡和反向**。
2.1nginx 負載均衡策略:
輪詢(預設)
upstream backserver
指定權重—weigh關鍵字
upstream backserver
ip繫結 ip_hash
upstream backserver
2.2反向**和正向**?
反向**:
反向**是伺服器的**,也就是用來**伺服器,比如使用者訪問www.baidu.com,通過反向**,就可以訪問到乙個或多個ip位址,比如192.168.126.129;對使用者隱藏了真實的伺服器,保證了伺服器的安全,可以說反向**和伺服器穿一條褲子
正向**:
正向**是客戶端的**,也就是用來**客戶端,比如使用者a(ip位址為127.0.0.1)想要訪問 www.嘿嘿嘿.com,本來 www.嘿嘿嘿.com不讓 使用者a 訪問,這時使用者可以使用正向**(ip為192.168.126.129),隱藏自己的真實位址,就可以訪問www.嘿嘿嘿.com了
3.搭建redis集群,並將使用者經常訪問的商品分類加入redis快取。
搭建redis集群的方式?
建立6個redis例項(6個節點),修改各自的redis.cfg,並啟動。
集群內部的節點是相互通訊的(ping-pong機制)
redis集群至少需要3個節點,因為投票容錯機制要求超過半數節點認為某個節點掛了該節點才是掛了,
要保證集群的高可用,需要每個節點都有從節點,也就是備份節點,所以redis 集群至少需要6臺伺服器
快取擊穿:快取擊穿指快取中的熱點資料失效,導致大量請求直接訪問資料庫,資料庫的壓力陡增,甚至癱瘓
------解決方案:熱點資料設定永不過期
快取穿透:快取穿透指使用者頻繁訪問快取裡沒有的資料,造成資料庫壓力大
-----解決方案:當使用者第一次訪問快取裡沒有的資料的時候,給快取裡存入乙個空值
快取雪崩:快取崩潰,導致全部請求直接訪問資料庫
----解決方案:
訊息中介軟體方式;
均攤分配redis的key的失效時間
4.使用 dubbo框架進行跨域請求,實現前後端的資料訪問,並採用偽靜態技術展示給客戶。
dubbo
–節點角色: 服務消費者,服務提供者,註冊中心
–dubbo遠端呼叫協議:dubbo協議(tcp-ip)協議
–dubbo遠端呼叫機制:rpc
–dubbo高可用:
zookeeper集群,至少3個節點,乙個leader,兩個follower。只要集群中超過半數的節點正常,集群就可以用;zk有心跳檢測機制.當發現伺服器宕機/或者新增服務時.則會在第一時間更新自己的服務列表資料,並且全網廣播通知所有的消費者.
偽靜態技術:
因為頁面基本上都是jsp動態頁面,但搜尋引擎只收錄靜態頁面(html),所以就使用偽靜態技術,將動態頁面偽裝成靜態頁面;
@override
public
void
configurepathmatch
(pathmatchconfigurer configurer)
5.利用 solr 實現對商品列表的搜尋
solr是乙個可擴充套件的全文搜尋引擎,基於lucene,倒排索引
為什麼使用solr而不使用es?
springboot整合了solr
服務端負責配置
客戶端負責使用
商城專案總結
sso 單點登入系統 主要解決多系統同意登陸,基礎登陸都系統使用。使用技術 沒有頁面,只有介面 springmvc spring j redis 檢查使用者資訊是否存在 介面查詢資料庫是否由該資料 返回true或者false 註冊使用者 介面接收資料,寫入資料庫 使用者登入 介面接收登陸資料,先上資...
商城專案總結
該 專案從架構 業務 技術要點全方位考慮,使用現階段主流技術實現,涵蓋了springboot 2.3.0 mybatis 3.4.6 elasticsearch 7.6.2 rabbitmq 3.7.15 redis 5.0 mongodb 4.2.5 mysql5.7等技術,採用docker容器化...
商城面試題
a 如果cookie被禁用了怎麼辦?b 如果拿到了cookie裡面的ticket是不是就能登入了?c 如果乙個使用者賬號在兩台電腦登入會有什麼問題?怎麼解決?d 單點登入系統用的是什麼框架做的?一般都是說自己寫的 沒用框架怎麼做?e 單點登入系統做了多久?學員大部分回答是2 4個月 都做了哪些功能 ...