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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

怎么确保网站的可用性

發(fā)布時(shí)間:2024/4/11 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么确保网站的可用性 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。


歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/architect/how-to-ensure-the-usability-of-your-website/

??網(wǎng)站的高可用架構(gòu)設(shè)計(jì)的主要目的就是保證服務(wù)器硬件故障時(shí)服務(wù)依然可用、數(shù)據(jù)依然保存并能夠被訪問(wèn)。
??實(shí)現(xiàn)上述高可用架構(gòu)的主要手段是數(shù)據(jù)和服務(wù)的冗余備份失效轉(zhuǎn)移
??典型的分層模型是三層,即應(yīng)用層、服務(wù)層、數(shù)據(jù)層;各層之間具有相對(duì)獨(dú)立性,應(yīng)用層主要負(fù)責(zé)具體頁(yè)面邏輯處理;服務(wù)層負(fù)責(zé)提供可復(fù)用的服務(wù);數(shù)據(jù)層負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)于訪問(wèn)。中小型網(wǎng)站在具體部署時(shí),通常將應(yīng)用層和服務(wù)層部署在一起,而數(shù)據(jù)層則另外部署。
??在復(fù)雜的大型網(wǎng)站架構(gòu)中,劃分的粒度會(huì)更小、更詳細(xì),結(jié)構(gòu)更加復(fù)雜,服務(wù)器規(guī)模更加龐大,但通常還是能夠把這些服務(wù)劃分到這三層中。
##高可用的應(yīng)用


??應(yīng)用層主要處理網(wǎng)站應(yīng)用的業(yè)務(wù)邏輯,因此有時(shí)也稱(chēng)作為業(yè)務(wù)邏輯層,應(yīng)用的一個(gè)顯著特點(diǎn)是應(yīng)用的無(wú)狀態(tài)性。

  • 通過(guò)負(fù)載均衡進(jìn)行無(wú)狀態(tài)服務(wù)的失效轉(zhuǎn)移
    負(fù)載均衡,顧名思義,主要使用在業(yè)務(wù)量和數(shù)據(jù)量較高的情況下,當(dāng)單臺(tái)服務(wù)器不足以承擔(dān)所有的負(fù)載壓力時(shí),通過(guò)負(fù)載均衡手段,將流量和數(shù)據(jù)分?jǐn)偟揭粋€(gè)集群組成的多臺(tái)服務(wù)器上,以提高整體的負(fù)載處理能力。
    目前,不管是開(kāi)源免費(fèi)的負(fù)載均衡軟件還是昂貴的負(fù)載均衡硬件,都提供失效轉(zhuǎn)移功能。
  • 應(yīng)用服務(wù)器集群的Session管理
    應(yīng)用服務(wù)器的高可用架構(gòu)設(shè)計(jì)主要基于服務(wù)無(wú)狀態(tài)這一特性,但是事實(shí)上,業(yè)務(wù)總是有狀態(tài)的。
    web應(yīng)用中將這些多次請(qǐng)求修改使用的上下文對(duì)象稱(chēng)作會(huì)話(Session),單機(jī)情況下,Session可由部署在服務(wù)器上的Web容器管理。在使用負(fù)載均衡的集群環(huán)境中,由于負(fù)載均衡服務(wù)器可能會(huì)將請(qǐng)求分發(fā)到集群任何一臺(tái)應(yīng)用服務(wù)器上,所以保證每次請(qǐng)求依然能夠獲得正確的Session比單機(jī)時(shí)要復(fù)雜很多。
  • ??集群環(huán)境下,Session管理主要有以下幾種手段。

  • Session復(fù)制:方案簡(jiǎn)單,從本機(jī)讀取session信息也很快速,但只能使用在集群規(guī)模比較小的情況下。當(dāng)集群規(guī)模較大時(shí),集群服務(wù)器間需要大量的通信進(jìn)行Session復(fù)制,占用服務(wù)器和網(wǎng)絡(luò)的大量資源,系統(tǒng)不堪重負(fù)。
  • Session綁定:可以利用負(fù)載均衡的源地址Hash算法實(shí)現(xiàn),負(fù)載均衡服務(wù)器總是將來(lái)源于同一ip的請(qǐng)求分發(fā)到同一臺(tái)服務(wù)器上(也可以更具Cookie信息將同一個(gè)用戶(hù)的請(qǐng)求總是分發(fā)到同一臺(tái)服務(wù)器上,當(dāng)然這是負(fù)載均衡服務(wù)器必須工作在http層上)。但是session綁定的方案顯然不符合我們隊(duì)系統(tǒng)高可用的需求,因?yàn)橐坏┠撑_(tái)服務(wù)器宕機(jī),那么該機(jī)器的session就不復(fù)存在了,用戶(hù)請(qǐng)求切換到其他機(jī)器后因?yàn)闆](méi)有session而無(wú)法完成業(yè)務(wù)處理。
  • 利用Cookie記錄session:可以利用瀏覽器支持的Cookie記錄session,但是有一些缺點(diǎn),比如受Cookie大小限制,能記錄的信息有限,每次請(qǐng)求響應(yīng)都需要傳輸cookie;如果關(guān)閉cookie,訪問(wèn)就會(huì)不正常。
  • Session服務(wù)器:利用獨(dú)立部署的Session服務(wù)器(集群)統(tǒng)一管理Session,應(yīng)用服務(wù)器每次讀寫(xiě)Session時(shí),都訪問(wèn)Session服務(wù)器。這種解決方案實(shí)際上是將應(yīng)用服務(wù)器的狀態(tài)分離,分為無(wú)狀態(tài)的應(yīng)用服務(wù)器和有狀態(tài)的Session服務(wù)器,然后針對(duì)這兩種服務(wù)器的不同惡性分別設(shè)計(jì)其架構(gòu)。
  • ##高可用的服務(wù)


    ??可復(fù)用的服務(wù)模塊為業(yè)務(wù)產(chǎn)品提供公共服務(wù),大型網(wǎng)站中這些服務(wù)通常都獨(dú)立分布式部署,被具體應(yīng)用遠(yuǎn)程調(diào)用。可復(fù)用的服務(wù)和應(yīng)用一樣,也是無(wú)狀態(tài)的服務(wù),因此可以使用類(lèi)似負(fù)載均衡的失效轉(zhuǎn)移策略實(shí)現(xiàn)高可用的服務(wù)。
    ??除此之外,具體實(shí)踐中,還有以下幾點(diǎn)高可用的服務(wù)策略。

  • 分級(jí)管理
    運(yùn)維上將服務(wù)器進(jìn)行分機(jī)管理,核心應(yīng)用和服務(wù)有限使用更好的硬件,在運(yùn)維響應(yīng)速度上爺格外迅速。顯然,用戶(hù)及時(shí)付款購(gòu)物比能不能評(píng)價(jià)商品更重要,所以訂單、支付服務(wù)比評(píng)價(jià)服務(wù)有更高優(yōu)先級(jí)。同事在服務(wù)部署上也進(jìn)行必要的隔離,避免故障的連鎖反應(yīng)。
  • 超時(shí)設(shè)置
    在應(yīng)用程序中設(shè)置服務(wù)調(diào)用的超時(shí)時(shí)間,一旦超時(shí),通信框架就拋出異常,應(yīng)用程序根據(jù)服務(wù)調(diào)度策略,可選擇繼續(xù)重試或者將請(qǐng)求轉(zhuǎn)移到提供相同服務(wù)的其他服務(wù)器上
  • 異步調(diào)用
    應(yīng)用對(duì)服務(wù)的調(diào)用通過(guò)消息隊(duì)列等異步方式完成,避免一個(gè)服務(wù)失敗導(dǎo)致整個(gè)應(yīng)用請(qǐng)求失敗的情況。
    當(dāng)然不是多有服務(wù)調(diào)用都可以異步調(diào)用,對(duì)于獲取用戶(hù)信息這類(lèi)調(diào)用,采用異步方式會(huì)延長(zhǎng)響應(yīng)時(shí)間,得不償失。對(duì)于那些必須確認(rèn)服務(wù)調(diào)用成功才能繼續(xù)下一步操作的應(yīng)用也不合適使用異步調(diào)用。
  • 服務(wù)降級(jí)
    降級(jí)有兩種手段:拒絕服務(wù)及關(guān)閉服務(wù)
  • 冪等性設(shè)計(jì)
    有些服務(wù)天然具有冪等性,比如講用戶(hù)性別設(shè)置為男性,不管設(shè)置多少次,結(jié)果都一樣。但是對(duì)轉(zhuǎn)賬交易等操作,問(wèn)題就會(huì)比較復(fù)雜,需要通過(guò)交易編號(hào)等信息進(jìn)行服務(wù)調(diào)用有效性校驗(yàn),只有有效的操作才能繼續(xù)執(zhí)行。
    (注:冪等性是系統(tǒng)的接口對(duì)外一種承諾(而不是實(shí)現(xiàn)), 承諾只要調(diào)用接口成功, 外部多次調(diào)用對(duì)系統(tǒng)的影響是一致的. 聲明為冪等的接口會(huì)認(rèn)為外部調(diào)用失敗是常態(tài), 并且失敗之后必然會(huì)有重試.)
  • ##高可用的數(shù)據(jù)


    ??保證數(shù)據(jù)存儲(chǔ)高可用的手段主要是數(shù)據(jù)備份和失效轉(zhuǎn)移機(jī)智。
    ##網(wǎng)站運(yùn)行監(jiān)控


    ??“不允許沒(méi)有監(jiān)控的系統(tǒng)上線“,這是許多網(wǎng)站架構(gòu)師在做項(xiàng)目上線評(píng)審時(shí)常說(shuō)的一句話。網(wǎng)站運(yùn)行監(jiān)控對(duì)于網(wǎng)站運(yùn)維和架構(gòu)設(shè)計(jì)優(yōu)化至關(guān)重要,運(yùn)維沒(méi)有監(jiān)控的網(wǎng)站,猶如駕駛沒(méi)有儀表的飛機(jī)。盲人騎瞎馬,夜班臨深淵而不知,生死尚且未卜,提高可用性、減少故障率就更無(wú)從做起了。

  • 監(jiān)控?cái)?shù)據(jù)采集:用戶(hù)行為日志收集;服務(wù)器性能監(jiān)控;運(yùn)行數(shù)據(jù)報(bào)告;
  • 監(jiān)控管理:系統(tǒng)報(bào)警;失效轉(zhuǎn)移;自動(dòng)優(yōu)雅降級(jí);
  • 歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/architect/how-to-ensure-the-usability-of-your-website/

    歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。


    總結(jié)

    以上是生活随笔為你收集整理的怎么确保网站的可用性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。