每特教育學(xué)院螞蟻課堂-3期分布式解決方案徹底解決網(wǎng)站跨域求_第1頁
每特教育學(xué)院螞蟻課堂-3期分布式解決方案徹底解決網(wǎng)站跨域求_第2頁
每特教育學(xué)院螞蟻課堂-3期分布式解決方案徹底解決網(wǎng)站跨域求_第3頁
每特教育學(xué)院螞蟻課堂-3期分布式解決方案徹底解決網(wǎng)站跨域求_第4頁
每特教育學(xué)院螞蟻課堂-3期分布式解決方案徹底解決網(wǎng)站跨域求_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

客戶對向服務(wù)器端發(fā)送請求后,SessionSessionid給客戶端瀏覽器sessionId獲取對應(yīng)的從服務(wù)器上獲取對應(yīng)的SesisonSession保證在那里關(guān)閉瀏覽器Session會失效嗎相關(guān)代創(chuàng)建session會@RequestMappublicStringcreateSession(HttpServletRequestrequest,StringnameValue)HttpSessionsession=System.out.println("存入Sessionsessionid:信息session.getId()",nameValue:"nameValue);session.setAttribute("name",nameValue);returnreturn} publicObjectgetSession(HttpServletRequestrequest)HttpSessionsession=System.out.println("獲取Sessionsessionid:信息"+Objectvalue=return}publicstaticvoidmain(String[]args)SpringApplication.run(TestSessionController.class,}}Nginx配置Nginx負(fù)載均衡提供上游服務(wù)器(真實(shí)業(yè)務(wù)邏輯的服務(wù)器),負(fù)載均衡故障轉(zhuǎn)移失敗重試容錯(cuò)健康檢查等。當(dāng)上游服務(wù)器(真實(shí)業(yè)務(wù)邏輯的服務(wù)器)發(fā)生故障時(shí),可以轉(zhuǎn)移到其他上游服務(wù)器(真實(shí)業(yè)務(wù)邏輯的服務(wù)器)。UpstreamServerupstream要配置如下IP地址和端:配置上游服務(wù)器的IP地址和端###定義上###定義上游服務(wù)器(需要被nginx真的服務(wù)器)默認(rèn)是輪訓(xùn)機(jī)backServer{server127001:8080;server12700serverserver_namewwwitmayiedulocation/###指定上游服務(wù)器負(fù)載均衡服務(wù);indexindexhtmlindex}}負(fù)載均衡算法輪詢(默認(rèn)每個(gè)請求按時(shí)間順序逐一分配到不同的后端服務(wù),如果后端某臺服務(wù)器死機(jī),自動剔除故障系統(tǒng),使用戶不受影響weight(輪詢權(quán)值weigt的值越大分配到的概率越高,主要用于后端每臺服務(wù)器性能不均衡的情況下?;蛘邇H僅為在主從的情況下設(shè)置不同的權(quán)值,達(dá)到合理有效的地利用主機(jī)資源。每個(gè)請求按IP的哈希結(jié)果分配,使來自同一個(gè)IP的訪客固定一臺后端服務(wù)器,并且可以有效解決頁session享問題IPfair(第比weihtip_hah更加智能的負(fù)載均衡算法,fair算法可以根據(jù)頁面大小和加載時(shí)間長短智能地進(jìn)行負(fù)載均衡,也就是根據(jù)后端服務(wù)器的響應(yīng)時(shí)間來分配請求,響應(yīng)時(shí)間短的優(yōu)先分配。Nginx本身不支持fair,如果需要這種調(diào)度算法,則必須安裝upstream_far模塊。url_hash(第按的URL的希結(jié)果來分配請求,使每個(gè)URL定到臺服器可進(jìn)步高緩服器效Nginx本身不支持url_hsh,如果需要這種調(diào)度算法,則必須安裝Nginx的ash包。privateStringpublicStringindex()return}創(chuàng)建session會publicStringcreateSession(HttpServletRequestrequest,StringnameValue)HttpSessionsession=session.setAttribute("name",return"success-"+} publicObjectgetSession(HttpServletRequestrequest)HttpSessionsession=if(session==null)returnserverPort+"沒有找到對應(yīng)的session值}Objectvalue=returnserverPort+"-"+}publicstaticvoidmain(String[]args)SpringApplication.run(TestSessionController.class,}}nginxhaproxyIP利用數(shù)據(jù)庫同步使用Session集群存放maven <artifactId>spring-boot-starter-<relativePath/><!--lookupparentfromrepository--<weixin-java-mp.version>2.8.0</weixin-java-<<><piler.encoding>UTF-<project.build.sourceEncoding>UTF- <artifactId>spring-boot-starter-<!--<exclusions><exclusion><artifactId>jackson-databind</artifactId></exclusion></exclusions>--<!-- .alibaba/fastjson--<!--TestingDependencies-- <artifactId>spring-boot-starter- <artifactId>spring-boot-starter-data-<!--springsessionredis應(yīng)用基本環(huán)境配置,需要開啟redis后才Spring會報(bào)錯(cuò) <artifactId>spring-session-data- <artifactId>commons- piler- <artifactId>spring-boot-maven-YML配置信port:/ importimport//這個(gè)類用配置redis服務(wù)器的連接//maxInactiveIntervalInSeconds為SpringSession的過期時(shí)間(單位:秒@EnableRedisHttpSession(maxInactiveIntervalInSeconds=publicclassSessionConfig//StringintpublicJedisConnectionFactoryconnectionFactory()JedisConnectionFactoryconnection=newreturn}}初始////初始化Session配置publicclassSessionInitializerpublicpublic{}}最靠譜的分布式Session解決方publicclassTokenServiceprivateRedisService新增返回publicStringput(Objectobject)Stringtoken=redisService.setString(token,return}獲取信publicStringget(Stringtoken)Stringreuslt=return}publicpublicStringgetToken()return}}privateTokenServiceprivateStringpublicStringput(StringnameValue)Stringtoken=returntoken+"-"+}publicStringget(Stringtoken)Stringvalue=returnvalue+"-"+}}跨域報(bào) :8081/ajaxB:No'Access-Control-Allow-Origin'headerispresentontherequestedresource.Origin'http :8080'isthereforenotallowedaccess.五種跨域解決方使用JSONP解決跨前端代<<scriptmon/jquery-1.7.2.min.js?t=2017-07-<script).ready(function()type:async:url:dataType:jsonp:" allback",//服務(wù)端用于接收callback調(diào)用的functionsuccess:function(data)error:function()}后端代 (value="/ajaxB",method=public JSONObjectroot=newroot.put("errorCode",root.put("errorMsg","登陸成功response.setHeader("Content- "text/html;charset=UTF-PrintWriterwriter= allback+"("+root.toString()+}使用設(shè)置響應(yīng)頭允許跨域前端代<<scriptmon/jquery-1.7.2.min.js?t=2017-07-<script).ready(function()type:async:url:dataTypedataType:success:function(data)error:function()}后端代 publicMap<String,Object>ajaxB(HttpServletResponseresponse)response.setHeader("Access-Control-Allow-Origin",Map<String,Object>result=newHashMap<String,result.put("errorMsg","登陸成功return}response.setHeader("Access-Control-Allow-Origin","*");使用HttpClient進(jìn)行轉(zhuǎn)前端代<<scriptmon/jquery-1.7.2.min.js?t=2017-07-<script).ready(function()type:async:url:dataType:success:function(data)error:function()}后端代 publicJSONObjectforwardB()JSONObjectresult=System.out.println("result:"+return} publicMap<String,Object>ajaxB(HttpServletResponseresponse)response.setHeader("Access-Control-Allow-Origin",Map<String,Object>result=newHashMap<String,result.put("errorMsg","登陸成功return}搭建企業(yè)級API接口使用NginxAPI接口網(wǎng)Nginx相關(guān)配serverserverlocation/a index.html}###Blocation/b index.html}}前端代碼<<script /jquery-<script ).ready(function()type:async:url:dataType:success:function(data)errorerror:function()}后端代碼 publicMap<String,Object>ajaxB(HttpServletResponse{response.setHeader("Access-Control-Allow-Origin","*");Map<String,Object>result=newHashMap<String,Object>();result.put("errorCode","200");result.put("errorMsg","登陸成功}SpringCloud搭建API接口網(wǎng)Maven初始化依賴參數(shù) <artifactId>spring-boot-starter-SpringBootlombok<groupId><!--SpringBootweb組件--<groupId><artifactId>spring-boot-starter-<groupId><artifactId>spring-boot-starter-SpringBoot外部tomcat支持<groupId><artifactId>tomcat-embed-<!--<!--springboot-log4j-- <artifactId>spring-boot-starter- <artifactId>spring-boot-starter-<!-- .alibaba/fastjson--port:port:prefix:/WEB-suffix:HttpClientUtils工具privatestaticLoggerlogger=LoggerFactory.getLogger(HttpClientUtils.class);//日志記privatestaticonfigonfig=static//設(shè)置請求和傳輸超時(shí)onfig=}*post請求傳輸json參**@param*url*@param*參*//post請求返回結(jié)CloseableHttpClienthttpClient=JSONObjectjsonResult=HttpPosthttpPost=new//設(shè)置請求和傳輸超時(shí) tryif(null!=jsonParam)//解決中文亂碼問StringEntityentity=newStringEntity(jsonParam.toString(),"utf-entity.setContentEncoding("UTF-}CloseableHttpResponseresult=//請求發(fā)送成功,并得到響if(result.getStatusLine().getStatusCode()==HttpStatus.SC_OK)Stringstr=try 服務(wù)器返回過來的jsonstr=EntityUtils.toString(result.getEntity(),"utf-//json字符串轉(zhuǎn)換成json對jsonResult=}catch(Exceptione)}}}catch(IOExceptione)logger.error("post請求提交失敗:"+url,}finally}return}post請求傳輸String參數(shù)Content-type:application/x-www-form-@paramurl@param參publicstaticJSONObjecthttpPost(Stringurl,StringstrParam)//post請求返回結(jié)CloseableHttpClienthttpClient=JSONObjectjsonResult=HttpPosthttpPost=new tryif(null!=strParam)//解決中文亂碼問StringEntityentity=newStringEntity(strParam,"utf-entity.setContentEncoding("UTF-entity.setContentType("application/x-www-form-}CloseableHttpResponseresult=//請求發(fā)送成功,并得到響if(result.getStatusLine().getStatusCode()==HttpStatus.SC_OK)Stringstr=try 服務(wù)器返回過來的jsonstr=EntityUtils.toString(result.getEntity(),"utf-//json字符串轉(zhuǎn)換成json對jsonResult=}catch(Exceptione)}}}catch(IOExceptione)logger.err

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論