精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一口氣說出 4 種分布式一致性 Session 實現(xiàn)方式,面試杠杠的~

開發(fā) 前端 分布式
起初這個系統(tǒng)的用的人也不多,為了節(jié)省資源,這個系統(tǒng)僅僅只是單機部署。后來隨著用的人越來越多,單機已經有點扛不住了,于是阿粉決定再部署了一臺機器。

[[333096]]

前言

阿粉公司有一個 Web 管理系統(tǒng),使用 Tomcat 進行部署。由于是后臺管理系統(tǒng),所有的網頁都需要登錄授權之后才能進行相應的操作。

起初這個系統(tǒng)的用的人也不多,為了節(jié)省資源,這個系統(tǒng)僅僅只是單機部署。后來隨著用的人越來越多,單機已經有點扛不住了,于是阿粉決定再部署了一臺機器。

這時后端系統(tǒng)有兩臺服務,于是我們使用 Nginx 作為反向代理,整體架構圖如下:

這個架構圖想必大家應該比較熟悉,現(xiàn)在主流的 Web 系統(tǒng)應該都是這么部署。

經過一些調試之后,在一個夜深人靜的晚上,阿粉將這套系統(tǒng)部署到了生產。本以為沒有什么事的,很穩(wěn)的交給測試小姐姐開始測試。

這一測,出了大問題!測試小姐姐反饋,登錄過后,沒過一會又需要登錄,操作好幾次都是這樣。

阿粉檢查了一下,系統(tǒng)應用,配置什么也沒問題,那到底哪里出了問題?

這個時候組長剛準備下班,看到我們這里有問題,于是過來了看了一下。簡單了解的一下基本情況,很快就找到了問題的原因,然后在 Nginx 端修改了下配置,重啟解決了問題。

分布式一致性 Session

解決完問題,組長坐下給阿粉解釋了問題原因:分布式一致性 Session。

原先我們登錄之后將會把用戶登錄信息放在 Session 中,用戶每次操作首先先校驗 Session 是否存在用戶信息,如果不存在將會強制讓用戶先去登錄。

原先架構的中我們只有一臺應用系統(tǒng),所有操作都在一臺 Tomcat 上,這當然沒有什么問題。

但是現(xiàn)在我們部署了兩臺系統(tǒng),由于 Nginx 使用默認負載均衡策略(輪詢),請求將會按照時間順序逐一分發(fā)到后端應用上。

也就是說剛開始我們在 Tomcat1 登錄之后,用戶信息放在 Tomcat1 的 Session 里。過了一會,請求又被 Nginx 分發(fā)到了 Tomcat2 上,這時 Tomcat2 上 Session 里還沒有用戶信息,于是又要登錄。

另外由于我們系統(tǒng)采用單點登錄的方式,Tomcat2 登錄之后會將 Tomcat1 登錄信息失效,于是乎等到 Nginx 再把流量分發(fā)到 Tomcat1 時,Session 中用戶登錄信息已經失效,又要重新登錄。

[[333098]]

知道了問題,阿粉當然想知道解決辦法了,于是組長教了阿粉分布式一致性 Session 四種解決辦法,阿粉給大家整理了一下:

 

下面阿粉將會以阿粉跟組長對話的形式,講解分布式一致性 Session 解決辦法。

Session 復制

組長:

如果此時 Tomcat1 Session 存在用戶信息,而 Tomcat2 上沒有存在。

這時如果我們將 Tomcat1 的 Session 復制到 Tomcat2 上,后面 Nginx 將請求轉發(fā)到 Tomcat2 上,由于 Tomcat2 存在 Session ,這時就不需要再重新登錄了。

架構圖如下:

一致性 Session-Session 復制

Tomcat 的 Session 復制的配置,網上有比較多的例子,這里阿粉就不再貼了,感興趣的同學可以自行搜索一下。

阿粉:

對的,這種方式挺好啊。Tomcat 就支持這種方式,我們只需要修改 Tomcat 配置就好,我們應用代碼都不用修改了。

組長:

說的對,但是這種方式還是有很多缺點。

第一,Session 復制傳輸需要占用內網帶寬。

第二,我們的例子就只有兩臺機器,這個復制性能還可以。但是假設我們有 N 臺機器,那么每次復制都要復制給 N-1 臺機器,如果機器很多,可能會形成網絡風暴,復制性能也會呈指數(shù)級下降。

第三, Tomcat 需要保存所有的 Session 數(shù)據,這個方案的 Session 存儲在內存中,容易受到機器的總內存的限制。我們沒辦法通過加機器的方式水平擴展,我們能做的方式就是加大機器內存。但是機器內存越大,價格真的很貴!!!

所以不推薦使用這種方案。

Session 前端存儲

阿粉:

恩,這個方案確實有點不靠譜~

哎,有了!我們的 Session 里面其實就是存了用戶的信息,那我現(xiàn)在不存 Tomcat Session 里,我把信息拿出來,存到瀏覽器的 Cookie 中。

這樣,每個用戶瀏覽器存儲自己的 Cookie 信息,服務端就不需要存儲,這就解決了 Session 復制方案的缺陷了。

接下來用戶每次請求都把這個 Cookie 給我發(fā)過來,我判斷 Cookie 里面用戶信息不就好了。

架構圖如下:

一致性 Session-Session 前端存儲

組長,欣賞看了一下我:

對,你這個方案確實可行。

不過么,如果用這種方案,首先你要想好加密方案。

用戶信息可是我們的敏感數(shù)據,不能讓別人輕易的竊取或者篡改數(shù)據了。

除了這個,這個方案每次請求都要攜帶 Cookie 傳輸,這會占用外網的帶寬,如果 Cookie 過大,會增大網絡的開銷。

另外,我們存儲的數(shù)據大小,容易受到 Cookie 限制。

所以這種還是不怎么常用,不過也是一種思路。

我比較推薦下面兩種方案。

Session 粘滯(Sticky Sessions)

組長:

剛才應該看到了,我只是對 Nginx 的配置做了一些修改,然后這個問題就解決了吧。

其實這是因為我修改 Nginx 默認的負載均衡策略,使用 IP Hash 的方式。

Nginx 會使用請求者的 IP 來做 Hash,然后分發(fā)到一臺機器上,這樣可以保證同一 IP 的請求都落在同一臺 Tomcat 上。

架構圖如下:

Session 粘滯-IP Hash

上面這種方式我們使用 Nginx 四層負載均衡方式,其實 Nginx 還可以做到七層負載均衡方式,也就是使用 Http 協(xié)議中的一些業(yè)務屬性來做 Hash,常見的有 userId,loginId等等。

架構圖如下:

一致性 Session-Session 粘滯-七層

阿粉:

這種方案看起來挺簡單的,我們只需要修改 Nginx 配置就好了,應用端配置無需改動。

只要請求來源 IP 足夠的隨機,那么 IP HASH 之后兩臺應用上的流量將會足夠隨機。

另外后面如果兩臺機器扛不住,我們還可以水平擴展,再加機器,只要修改 Nginx 配置即可。

組長:

你說的這幾點都很正確!

不過你有沒有想過,像我們公司這種情況,所有人的出口的 IP 都是一個。那么我們公司的所有請求只會到一臺機器上,那我們這種情況等于又變成單點了。

另外如果 Tomcat 重啟,Session 由于是放置在內存內存中,這一部分的 Session 將會丟失,這就導致這部分用戶將會重新登錄。

最后,如果我們臨時再加機器,修改完 Nginx 配置,重新啟動之后,Nginx 將會重新計算 Hash 分發(fā)請求。

這種情況就會導致有一部分用戶重新路由到一臺新機器上,由于沒有 Session,又需要重新登錄了。

不過么,Tomcat 重啟或者新加機器次數(shù)不會很多,所以這個問題也不大,用戶體驗稍差點。

今天的我們這個問題解決方案就先使用這個。

不過后面我們還是改成下面這種方式。

后端集中存儲

組長:

上面幾種的方式我們都是把 Session 存儲在應用內存上,應用機器只要重啟,Session 就會丟失。

為了這個解決這個問題,我們將 Session 單獨存起來,保存到 Redis 或者 MySQL 中。

不過由于 Session 需要過期失效的特性,不需要持久化保存,所以這里我建議使用 Redis 來保存。

這樣架構就變成下方這樣的:

一致性 Session-Session 后端存儲

我們使用這種方案,上沒有 Session 丟失的風險,當然前提是 Redis 不能宕機。

另外后期如果應用可以直接水平擴展。

如果后面應用的請求量很大,一臺 Redis 扛不住了,那我們可以其實可以做集群擴展,根據緩存 Key 做路由。

阿粉:

對對,這種方式好~

組長:

你不要高興的太早,我們使用這個方案需要付出一定的代價的。

首先我們每次請求都需要調用一次 Redis ,這就增加一次網絡的開銷。

另外,引入 Redis,我們需要對相應的代碼做出修改,這樣復雜度就變高。

所以說,這個方案有利也有弊,當然對于我們的場景來說,利大于弊。

阿粉:

恩,好像是這樣的。

組長:

好了,這么晚了,問題解決了,我們去擼個串,我請客!

阿粉:

老大,??!

組長拍了拍阿粉的腦袋:

我這一頓不是白吃哦,下個星期你把現(xiàn)在方式修改一下,修改成 Session 集中存儲的方式。

給你一個小提示,可以使用 spring-session。

阿粉:

好吧,吃人嘴短,下周我研究下。

總結

最后阿粉總結一下,當我們后端 Web 應用擴展到多臺后,我們就會碰到分布式一致性 Session 的問題,主流解決方案有四種:

Session 復制:利用 Tomcat 等 Web 容器同步復制

Session 前端存儲:利用用戶瀏覽器中 Cookie 保存 Session 信息

Session 粘滯方案:利用 Nginx 可以做四層 Hash 或七層 Hash 的特性,保證用戶的請求都落在同一臺機器上

Session 后端集中存儲方案:利用 Redis 集中存儲 Session,Web 應用重啟或擴容,Session 也無需丟失。

上面四種方案,優(yōu)先推薦第四種。

當然第四種方案需要一定的開發(fā)工作量,前期還沒改造的過程可以選擇 第三種方案中間過渡。

好了,后面阿粉就要使用 Session 后端存儲方案改造這個工程了,后面阿粉再跟大家分享一下 spring-session。

 

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2020-09-24 09:08:04

分布式系統(tǒng)架構

2020-04-16 12:42:42

附近的人共享單車App

2020-08-12 09:55:07

附近的人數(shù)據庫MySQL

2020-07-31 10:15:32

分布式ID數(shù)據庫MySQL

2020-11-04 14:20:58

分布式數(shù)據庫MySQL

2020-03-31 08:12:25

Kafka架構數(shù)據庫

2020-04-14 13:32:56

@Transacti失效場景

2022-05-24 11:50:46

延時消息分布式

2020-07-08 07:45:44

OAuth2.0授權

2020-05-08 10:08:21

延時隊列APIDelayQueue

2021-06-08 22:43:07

IPC方式Qt

2021-12-06 08:30:49

SpringSpring Bean面試題

2019-10-11 23:27:19

分布式一致性算法開發(fā)

2021-03-29 12:22:25

微信iOS蘋果

2025-05-14 01:55:00

FCMCPAI

2023-12-18 23:09:25

開源優(yōu)化引擎

2021-11-22 16:30:30

分布式一致性分布式系統(tǒng)

2019-09-05 08:43:34

微服務分布式一致性數(shù)據共享

2017-09-21 10:59:36

分布式系統(tǒng)線性一致性測試

2021-07-28 08:39:25

分布式架構系統(tǒng)
點贊
收藏

51CTO技術棧公眾號

亚洲人午夜射精精品日韩| 久久免费在线观看视频| 国产成人亚洲一区二区三区 | 久久久久国产精品无码免费看| 国产高清自产拍av在线| 国产欧美精品区一区二区三区 | 一区二区三区视频播放| 狠狠躁夜夜躁人人躁婷婷91| 亚洲欧美成人一区| 亚洲黄色小说网址| 日韩电影一区二区三区四区| 欧美成人激情视频免费观看| 国产黄色网址在线观看| 国产日韩欧美中文在线| 欧美性jizz18性欧美| 久久免费一级片| 欧美日韩伦理片| 国产风韵犹存在线视精品| 26uuu亚洲国产精品| 91视频青青草| 国产一区二区三区电影在线观看 | 亚洲另类av| 91精品国产综合久久香蕉的特点 | 欧美精品一区二区在线播放| 五月天婷婷激情视频| 日本小视频在线免费观看| 国产清纯美女被跳蛋高潮一区二区久久w| 91久久大香伊蕉在人线| 中文字幕在线观看高清| 免费在线观看成人av| 欧美成人亚洲成人日韩成人| 日韩女同一区二区三区| 岛国精品一区| 在线成人午夜影院| 蜜臀视频一区二区三区| 黄色18在线观看| 亚洲自拍偷拍麻豆| 波多野结衣激情| 成人在线免费看| 久久久精品黄色| 国产日韩欧美一区二区| 亚洲精品网站在线| 国产在线精品免费| 国产精品网站视频| 五月婷婷六月婷婷| 蜜桃久久av| 91高潮在线观看| 国产区在线观看视频| 亚洲视频综合| 韩国福利视频一区| 日本网站免费观看| 伊人影院久久| 久久久久久久久国产| 青青草免费av| 欧美久久影院| 欧美寡妇偷汉性猛交| 欧美黑人性猛交xxx| 一区二区三区在线电影| 久久久国产一区二区| 暗呦丨小u女国产精品| 日韩一区电影| 久久在线视频在线| 青娱乐av在线| 夜夜嗨一区二区| 欧美一级视频免费在线观看| 国产99久久久| 三级成人在线视频| 国产精品永久免费观看| 国产一区二区波多野结衣| 老司机免费视频一区二区三区| 国产精品一区二区三区毛片淫片 | 蜜臀91精品一区二区三区| 国产精品久久久久aaaa九色| 国产亚洲久一区二区| 久久精品噜噜噜成人av农村| 成人羞羞国产免费| 国产按摩一区二区三区| 福利一区二区在线| 欧美人xxxxx| 大地资源中文在线观看免费版| 欧美高清一级片在线观看| 在线一区日本视频| 七七久久电影网| 欧美日韩在线视频一区二区| 国产三级三级三级看三级| 91精品一久久香蕉国产线看观看| 日韩欧美国产不卡| 成人免费av片| 99久久九九| 91禁国产网站| 一级黄色a毛片| 成人午夜视频免费看| 欧美日韩一区二区三区在线观看免| 啊v在线视频| 亚洲人123区| 女人喷潮完整视频| 91成人小视频| 亚洲美女动态图120秒| 久久国产高清视频| 一本久久综合| 成人精品久久久| 视频二区在线| 亚洲三级免费电影| 久久精品.com| 免费精品一区| 亚洲香蕉在线观看| 国产亚洲欧美精品久久久久久 | 超碰免费在线97| 久久免费看少妇高潮| 国产精品h视频| 在线最新版中文在线| 91麻豆精品国产91久久久| 色天使在线视频| 午夜国产精品视频| 国产精品偷伦视频免费观看国产| 手机在线观看免费av| 亚洲三级电影网站| 91激情视频在线| 美女网站色精品尤物极品姐弟| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 欧美日韩在线直播| 中文字幕在线播放一区| 亚洲精品电影| 国产精品久久色| 亚洲欧美丝袜中文综合| 亚洲卡通欧美制服中文| 欧美三级理论片| 久久最新网址| 欧美亚洲第一页| 狠狠躁日日躁夜夜躁av| 亚洲色图制服丝袜| 免费一级特黄录像| 九色精品国产蝌蚪| 欧美与黑人午夜性猛交久久久| www.97超碰| 亚洲人亚洲人成电影网站色| 无限资源日本好片| 欧美色女视频| 国产精品白嫩美女在线观看| 日本韩国精品一区二区| 激情成人在线视频| 你懂的在线观看网站| 激情av一区| 国产91免费视频| 国产www视频在线观看| 欧美一区二区精品久久911| jizzjizzjizz国产| 看片的网站亚洲| 亚洲人成网站在线观看播放| 成人国产激情| 久久韩剧网电视剧| 国产人妻精品一区二区三区| 亚洲少妇最新在线视频| 免费网站在线观看黄| 久久久五月天| 91黄在线观看| 91丝袜在线| 亚洲第一区第一页| 久久一区二区三区视频| 91丨porny丨蝌蚪视频| 日韩精品一区二区三区久久| 日韩理论电影中文字幕| 日本精品久久久久久久| 黄色av网站在线免费观看| 欧美三级蜜桃2在线观看| 激情五月激情综合| 国产在线日韩欧美| 免费高清一区二区三区| 精品三级av在线导航| 日本国产欧美一区二区三区| 国产在线一二三| 欧美日韩精品系列| 国产美女久久久久久| 国产精品一二三四| 91国视频在线| 久久精品国产www456c0m| 91久久国产精品| 欧美1—12sexvideos| 日韩久久免费电影| 伊人久久成人网| 一区二区在线观看免费 | av片免费观看| 亚洲欧洲日韩av| 动漫美女无遮挡免费| 久久婷婷av| 欧美h视频在线观看| 北条麻妃一区二区三区在线| 日本精品中文字幕| 高h视频在线观看| 亚洲精品按摩视频| 亚洲天堂avav| 黄网站色欧美视频| 日本 欧美 国产| av中文字幕一区| 色片在线免费观看| 一区久久精品| 亚洲欧洲日本国产| 蜜臀av一区| 91久久国产婷婷一区二区| 国产黄大片在线观看| 日韩在线免费观看视频| 蜜桃视频在线观看www| 在线观看免费成人| 免看一级a毛片一片成人不卡| 久久蜜桃av一区精品变态类天堂| 在线播放免费视频| 老司机一区二区三区| 日本中文字幕一级片| 精品美女视频| 国产一区二区不卡视频| av日韩在线免费观看| 欧洲成人免费aa| 免费在线中文字幕| 精品精品国产国产自在线| 亚洲欧美日韩动漫| 精品人在线二区三区| 亚洲熟女乱色一区二区三区久久久 | 极品魔鬼身材女神啪啪精品| 91在线精品一区二区三区| 国内av一区二区| 免费看欧美美女黄的网站| 国产av天堂无码一区二区三区| 香蕉av一区二区| 日韩久久不卡| 在线日韩网站| 国产精品二区在线观看| 白嫩亚洲一区二区三区| 国产精品久久久久久久久久ktv | 成人h片在线播放免费网站| 一区二区三区电影大全| 国内精品久久久久| 影音先锋男人资源在线| 精品国产一区二区三区四区在线观看 | 免费精品视频在线| 熟女性饥渴一区二区三区| 亚洲一级电影| 18禁裸男晨勃露j毛免费观看| 欧美高清不卡| 国产精品亚洲天堂| 手机在线一区二区三区| 性欧美精品一区二区三区在线播放| 久久99精品久久久久久园产越南| 久久青青草原| 亚洲宅男一区| 欧美日本韩国在线| 伊人成综合网yiren22| 欧美成人dvd在线视频| 亚洲美女15p| 日本精品国语自产拍在线观看| 香蕉精品久久| 欧美污视频久久久| 国产一区二区电影在线观看| 四虎永久国产精品| 成人看的羞羞网站| 日韩视频专区| 第一会所亚洲原创| 午夜一区二区三区| 日韩欧美一区二区三区免费看| 亚洲高清乱码| 五月久久久综合一区二区小说| 亚洲一区精彩视频| 影视亚洲一区二区三区| 日韩专区第三页| 91久久综合| 成人黄色片视频| 奇米色777欧美一区二区| 日本高清久久久| 国产精品资源站在线| 人妻av一区二区三区| 99精品一区二区三区| 性欧美精品中出| 国产精品理论片在线观看| 杨钰莹一级淫片aaaaaa播放| 一区二区三区欧美日韩| 日韩免费黄色片| 91精品1区2区| 99精品视频免费看| 日韩精品在线观看一区| 日本免费中文字幕在线| 欧美激情18p| 欧美momandson| 成人黄色片在线| 欧美激情极品| 亚洲一区二区在线观| 亚洲精品社区| 嫩草影院国产精品| 国产一区二区三区黄视频| www.男人天堂| 中文一区在线播放| 国产精品111| 欧美日韩国产一级| 秋霞网一区二区| 综合欧美国产视频二区| 污污片在线免费视频| 日本成人免费在线| 欧美午夜在线播放| 日本不卡二区| 午夜亚洲福利| 中文字幕在线观看第三页| 国产高清精品久久久久| 性欧美13一14内谢| 亚洲激情一二三区| 中文字幕丰满人伦在线| 亚洲激情视频在线| 国产在线观看av| 青青精品视频播放| 中文字幕一区图| 一区二区三区四区视频在线| 99riav1国产精品视频| 特级黄色片视频| 国产欧美日韩视频一区二区| 日本中文字幕免费| 91精品国产一区二区三区| 久久99久久| 97碰在线观看| 一区二区三区视频播放| 中日韩在线视频| 日韩电影在线观看网站| 给我看免费高清在线观看| 亚洲欧美另类小说视频| 中文字幕一区二区三区四区视频| 日韩精品小视频| 91九色美女在线视频| 电影午夜精品一区二区三区| 久久精品影视| 国产九九热视频| 国产亚洲欧美日韩俺去了| 国产精品久久久免费视频| 精品噜噜噜噜久久久久久久久试看| 浪潮av一区| 国产中文欧美精品| 久久精品播放| 日本不卡一区二区在线观看| 国产片一区二区| 亚洲婷婷久久综合| 亚洲欧美日韩一区二区在线| 国产99在线| 精品一区国产| 在线视频免费在线观看一区二区| 国产吃瓜黑料一区二区| 亚洲精品免费在线播放| 国产精品一区二区免费视频| www.日韩.com| 日韩成人在线一区| 综合久久国产| 国内精品第一页| 2018天天弄| 精品国产乱码久久| 国产精品yjizz视频网| 国产一区不卡在线观看| 亚洲女同在线| 免费看污片网站| 欧洲av一区二区嗯嗯嗯啊| 免费理论片在线观看播放老| 国产精品成人观看视频国产奇米| 国内精品久久久久久99蜜桃| 狠狠热免费视频| 国产精品久久久久久亚洲毛片| 亚洲影视一区二区| 久久香蕉国产线看观看网| 精品午夜av| 丁香六月激情婷婷| 久久久久久久久久电影| 久久久久亚洲视频| 日韩最新在线视频| 日韩精品一区二区三区免费视频| www.18av.com| 97精品久久久久中文字幕| 精品成人无码久久久久久| 自拍偷拍亚洲精品| 深夜福利一区二区三区| 成年人看的毛片| 久久精品人人做人人爽人人| 亚洲天堂中文网| 欧美精品videos性欧美| 中文有码一区| 午夜xxxxx| 精品久久香蕉国产线看观看gif| 国产高清在线| 999热视频| 男人的天堂亚洲| www中文在线| 精品va天堂亚洲国产| 在线天堂中文资源最新版| 中文字幕一区二区三区5566| 成人免费观看视频| 中国精品一区二区| 欧美成在线视频| 国产亚洲一区二区三区不卡| 天天操夜夜操很很操| 疯狂做受xxxx高潮欧美日本| 亚洲s色大片| 精品视频第一区| 狠狠v欧美v日韩v亚洲ⅴ| 尤物视频在线观看国产| 久久久精品一区| 极品束缚调教一区二区网站 | 欧美成人黑人| 国产青草视频在线观看| 国产亚洲制服色|