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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

服务器集群后产生那些问题

發布時間:2024/4/13 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器集群后产生那些问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
分布式SESSION的整個一個原理,其實集群有集群的好處,不集群有不集群的好處,session原理講了一下之后,這節課我們談到分布式session,談到分布式session的時候,就是要談到session服務器集群的時候,會發生哪些問題,服務器集群之后,會出現哪些問題,分布式解決方案,服務器一旦集群以后,會出現哪些問題,這些問題其實都是屬于分布式解決方案里面的,第一個是分布式session的問題,為什么叫做分布式session的問題,因為session它是存放在服務器上面的,這個時候一旦服務器集群的時候,sessionId可能對應找不到session服務集群會產生那些問題 如果服務器產生了集群后,因為session是存放在服務器上,客戶端會使用同一個Sessionid在多個不同的服務器 上獲取對應的Session,從而會導致Session不一致問題。

那么第二個問題是什么問題呢,分布式調度平臺,這是一個非常重要的問題,尤其一旦你們服務器集群的時候,肯定是會產生問題的,在這個地方我給大家畫個圖,最基本的我們這邊叫做客戶端,既然是客戶端的話,我之前講過的,中間是會走一個nginx的服務器,反向代理,那么既然要走nginx反向代理的時候,那么在nginx反向代理的背后,是不是有非常多的nginx集群,集群的目的是為了什么,是為了解決高并發,當你有臺服務器宕機之后,比如這邊我舉個例子,這邊我們叫做TOMCAT01,把它在copy幾個,TOMCAT02,TOMCAT03,TOMCAT04,這個時候把它pass掉,這個地方我們這樣去看,配置一些負載均衡的算法,輪詢還有隨機,我又不多說了,還有IP綁定,常用的就這三種,假設我們的nginx使用輪詢機制的時候,它是會訪問到每一臺服務器上面去,如果客戶端一旦你做集群的時候,這個時候是什么樣的過程我講一下,一旦你在這邊做這么多服務器集群的時候,不一定有分布式session的問題,還有哪些問題呢,第一個是分布式session的問題,相當于在這個時候,客戶端向nginx請求的時候,我的session是存放在服務器上面去的,他發來第一個請求,第一個請求通過nginx算法到tomcat01,是不是tomcat01這么一臺服務器上面去了,他既然分到TOMCAT01服務器上去以后,這個時候就會返回一個sessionId,給客戶端,返回sessionId給客戶端的時候,第二次它會輪詢到TOMCAT02上面來,這個時候客戶端會拿sessionId去TOMCAT02找的時候,因為我的session是存放在TOMCAT01上面,當你第二次再輪詢的時候,輪詢到TOMCAT02的時候,在我的TOMCAT02上面找就根本找不到了,就會產生什么問題呢,就會產生SESSION不同步的問題,是不是這樣的,這個你們理解了沒有,你們再去看一下,分布式任務調度平臺,你們現在可能沒有學,如果服務器集群之后,如何保證定時Job的唯一性,因為你要知道,我給你們舉個例子,如果一旦我的服務器做了集群之后,就是TOMCAT01里面有我的定時JOB代碼,因為你這個時候要把你的war包在TOMCAT01,TOMCAT02,TOMCAT03,TOMCAT04,這四臺服務器上都會導入相同war包,一旦你是相同war包的時候,是不是會導致你四臺服務器上的JOB同時執行起來,是不是這樣的,想一想,是不是這樣的,就是你服務器集群的時候,就是把war包打包到不同的服務器上面去,會在四臺服務器上同時運行,是不是沒有唯一了,是不是這樣重復了,這是我們后面會學到的,服務器集群之后會導致定時JOB的唯一性,其實用專業術語表達是什么呢,叫做冪等性,你們后面會學到的,這是第二個問題

第三個就是分布式鎖的解決方案,分布式鎖的解決方案,在這邊我給大家講一下,分布式鎖很多聽說過的,上一節課我們已經把zookeeper講完了,分布式鎖講了三四次,理解還是比較深的,那么我給你講一下,有的人覺得分布式鎖使用redis性能確實不是很好,但是redis里面有一個非常好的框架,其實他還是比較好的,首先分布式素偶有哪些解決方案呢,基于zookeeper,zookeeper實現分布式鎖相對而言是比較簡單的,使用臨時節點,加上事件通知,還有一個是基于數據庫的,基于數據庫完全沒有必要說出來,因為別人都懂,還有一種版本是基于redis,基于redis setnx,這種方式它是有缺點的不推薦的,代碼復雜,他很容易產生死鎖現象的,在分布式中,SpringCloud里面,對redisson,他實現分布式鎖,確實比較不錯,完全可以和zookeeper進行匹配了,redis setnx這種方法不靠譜,很容易產生死鎖現象,對redisson這種方式也很簡單,和zookeeper一樣的,它是redis中的,提供了很多關于分布式的解決方案,比如分布式鎖,這是我們后期會重點講的,還有分布式日志收集問題,你們自己想一下,比如我舉個例子,這個時候我們客戶端向nginx發起請求之后,比如正常情況下打印日志的時候,他可能通過輪詢算法的時候,他這個日志就會打印到TOMCAT01上去的,那么我講一下,你們可能不知道,我在打印的時候發生什么問題呢,我們的服務器他有20臺節點,20多臺節點,就是服務器集群有20幾臺節點,你們知道我們當時查詢日志有多痛苦嗎,怎么查的嗎,相當于我們舉個例子,分配5個人,一個人查四臺,真的是這樣的,因為沒有用到分布式日志系統,就很麻煩,一般我們會用到分布式日志收集系統的,你們知不知道分布式日志收集系統用到什么呢,叫elk,也是在我們這邊會講的,而且大型的電商會有自己內部的分布式日志收集系統,其實原理都是一樣的,有的用KAFKA做收集日志,也有的,KAFKA,這是第四個點

第五個點是什么,就是你服務器一旦集群之后,可能會出現哪些問題,想一想,分布式事務問題,你們想想分布式事務和集群有關系嗎,分布式事務和集群有沒有關系,你們想想,在這邊我說一下,分布式事務記住一點,和集群是沒有關系的,是和RPC遠程通訊的時候,服務和服務之間實現事務原理,你們很多人把分布式事務理解成很難,其實我可以在這里告訴大家,分布式事務真的沒有你們想的那么難,我自己對分布式事務理解的非常非常透徹,如何純手寫一個分布式事務解決框架,因為如果你們自己能夠寫出來的情況下,模仿lcn,因為我看過源碼的,因為寫的話才能夠理解的深刻些,我看過一些人寫過的分布式方案,他們講的不是很詳細,尤其底層這塊,他們只講應用層這塊,用什么atomic,jdk,這些都會用,更重要的還是在一個底層的實現,比較喜歡講寫一個框架出來,其實分布式方案里面還有很多,后面會學到的,叫做一個分布式的配置中心,你們要了解一下,分布式的配置中心,分布式也是和集群沒有關系的,它是屬于分布式解決方案,但是他不屬于集群關系的,這個你們可能現在不懂沒關系,在這里我大致的講一下分布式解決方案,我在這邊就大體說一下,分布式鎖有點偏向于全局ID,你在做項目的時候遇到哪些問題,那么我在這邊講一下,當問到這個東西以后,我之前在項目中報了一個錯,報了一個空指針,我想知道空指針嗎,我在項目中遇到很多問題,因為我們的項目是分布式的,一旦我們的項目做了集群之后,他可能會遇到很多問題,因為session它是存在服務器里面的,可能使用sessionId去服務器找Session的時候找不到,還有定時JOB

?

總結

以上是生活随笔為你收集整理的服务器集群后产生那些问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。