freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

淘寶技術(shù)及webx3框架分析(第一版)-文庫(kù)吧

2025-09-20 08:54 本頁(yè)面


【正文】 (我覺得最大的好處 )是你可以看到軟件的源碼,你可以研究了解軟件內(nèi)部的工作過(guò)程、原理。這對(duì)于應(yīng)用設(shè)計(jì)、開發(fā)、查錯(cuò)、優(yōu)化都是非常有幫助的。 淘寶網(wǎng)的開源觀 對(duì)于開源軟件的應(yīng)用,有些人可能擔(dān)心質(zhì)量的問(wèn)題,有些人可能擔(dān)心軟件本身發(fā)展更新的問(wèn)題,等等。對(duì)于質(zhì)量的問(wèn)題 ,我想現(xiàn)在很多的開源軟件尤其是一些很著名的開源軟件都有很完善的組織,有完善的開發(fā)、測(cè)試、發(fā)布流程。在一個(gè)新版本完成前,會(huì)有多次的測(cè)試版本發(fā)布,最后才是正式版。這和商業(yè)軟件是一樣的。并且因?yàn)榇a公開,反而更加的容易發(fā)現(xiàn)錯(cuò)誤,提高質(zhì)量。至于第二個(gè)問(wèn)題,我想跟第一個(gè)問(wèn)題一樣,關(guān)鍵是組織和規(guī)劃而不在是否開源,并且在很多著名的開源軟件背后,會(huì)有廠商在進(jìn)行支持。軟件本身的發(fā)展應(yīng)該是不會(huì)成為問(wèn)題的,不太會(huì)出現(xiàn)軟件突然停止發(fā)展的情況。 在今后的發(fā)展中,我們還是會(huì)一如既往的關(guān)注開源軟件的發(fā)展,也還會(huì)根據(jù)需要采用不同的開源軟件 。在選擇一個(gè)開源產(chǎn)品的時(shí)候,我會(huì)考慮以下幾點(diǎn): 1. 這個(gè)軟件目前的功能和它的 RoadMap 2. 軟件本身的架構(gòu) 3. 該軟件開發(fā)的活躍度 4. 該開源軟件是否是遵守該領(lǐng)域內(nèi)的國(guó)際規(guī)范的 5. 在同類產(chǎn)品中,要挑選有比較優(yōu)勢(shì)的。并且要考慮可能存在的移植代價(jià)。這個(gè)移植指的是采用了這款開源軟件后現(xiàn)有系統(tǒng)的移植,或者是從這個(gè)開源軟件到其他軟件的移植。 對(duì)于企業(yè)級(jí)系統(tǒng)、互聯(lián)網(wǎng)應(yīng)用來(lái)說(shuō),采用開源軟件不僅可以降低成本,更重要的是能夠真正了解軟件的內(nèi)部工作機(jī)制。還可以在現(xiàn)在的基礎(chǔ)上進(jìn)行增強(qiáng)和定制,也能夠從開源軟件 第 4 頁(yè) 中借鑒 到很多好的設(shè)計(jì)和實(shí)現(xiàn)。希望國(guó)內(nèi)能有更多的企業(yè)在使用開源軟件的同時(shí),也能開源自身的一些軟件,或者能夠成為一些開源軟件的貢獻(xiàn)者。而作為淘寶網(wǎng),我們也會(huì)非常積極的參與到開源的活動(dòng)中,也會(huì)努力為開源的發(fā)展做出我們應(yīng)有的貢獻(xiàn)。 . 高性能可伸縮 . 應(yīng)用無(wú)狀態(tài) 一個(gè)系統(tǒng)的伸縮性的好壞取決于應(yīng)用的狀態(tài)如何管理。試想一下,假如我們?cè)?session中保存了大量與客戶端的狀態(tài)信息的話,那么當(dāng)保存狀態(tài)信息的 server 宕機(jī)的時(shí)候,我們?cè)趺崔k ? 通常來(lái)說(shuō),我們都是通過(guò)集群來(lái)解決這個(gè)問(wèn)題,而通常所說(shuō)的集群,不僅有負(fù)載均衡,更重要的是要有失效 恢復(fù) failover,比如 tomcat 采用的集群節(jié)點(diǎn)廣播復(fù)制, jboss 采用的配對(duì)復(fù)制等 session 狀態(tài)復(fù)制策略,但是集群中的狀態(tài)恢復(fù)也有其缺點(diǎn),那就是嚴(yán)重影響了系統(tǒng)的伸縮性 , 系統(tǒng)不能通過(guò)增加更多的機(jī)器來(lái)達(dá)到良好的水平伸縮,因?yàn)榧汗?jié)點(diǎn)間 session的通信會(huì)隨著節(jié)點(diǎn)的增多而開銷增大,因此要想做到應(yīng)用本身的伸縮性,我們需要保證應(yīng)用的無(wú)狀態(tài)性,這樣集群中的各個(gè)節(jié)點(diǎn)來(lái)說(shuō)都是相同的,從而是的系統(tǒng)更好的水平伸縮。 上面說(shuō)了無(wú)狀態(tài)的重要性,那么具體如何實(shí)現(xiàn)無(wú)狀態(tài)呢?此時(shí)一個(gè) session 框架就會(huì)發(fā)揮作用了。幸運(yùn)的是 公司已經(jīng)具有了此類框架。公司的 session 框架采用的是 client cookie實(shí)現(xiàn),主要將狀態(tài)保存到了 cookie 里面,這樣就使得應(yīng)用節(jié)點(diǎn)本身不需要保存任何狀態(tài)信息 , 這樣在系統(tǒng)用戶變多的時(shí)候,就可以通過(guò)增加更多的應(yīng)用節(jié)點(diǎn)來(lái)達(dá)到水平擴(kuò)展的目的 。但是采用客戶端 cookie 的方式來(lái)保存狀態(tài)也會(huì)遇到限制,比如每個(gè) cookie 一般不能超過(guò) 4K的大小,同時(shí)很多瀏覽器都限制一個(gè)站點(diǎn)最多保存 20個(gè) cookie。 公司 cookie 框架采用的是“ 多值 cookie” ,就是一個(gè)組合鍵對(duì)應(yīng)多個(gè) cookie 的值 , 這樣不僅可以防止 cookie 數(shù)量超過(guò) 20, 同時(shí)還節(jié)省了 cookie 存儲(chǔ)有效信息的空間,因?yàn)槟J(rèn)每個(gè) cookie 都會(huì)有大約 50 個(gè)字節(jié)的元信息來(lái)描述 cookie。 除了公司目前的 session 框架的實(shí)現(xiàn)方式以外,其實(shí)集中式 session 管理來(lái)完成,說(shuō)具體點(diǎn)就是多個(gè)無(wú)狀態(tài)的應(yīng)用節(jié)點(diǎn)連接一個(gè) session 服務(wù)器 , session 服務(wù)器將 session 保存到緩存中, session 服務(wù)器后端再配有底層持久性數(shù)據(jù)源,比如數(shù)據(jù)庫(kù),文件系統(tǒng)等等。 第 5 頁(yè) . 有效使用緩存 做互聯(lián)網(wǎng)應(yīng)用的兄弟應(yīng)該都清楚,緩存對(duì)于一個(gè)互聯(lián)網(wǎng)應(yīng)用是多么的重要,從瀏覽器緩存,反向 代理緩存,頁(yè)面緩存,局部頁(yè)面緩存,對(duì)象緩存等等都是緩存應(yīng)用的場(chǎng)景。 一般來(lái)說(shuō)緩存根據(jù)與應(yīng)用程序的遠(yuǎn)近程度不同可以分為 : local cache 和 remote cache。 一般系統(tǒng)中要么采用 local cache,要么采用 remote cache, 兩者混合使用的話對(duì)于 local cache 和 remote cache 的數(shù)據(jù)一致性處理會(huì)變大比較麻煩 。 在大部分情況下 , 我們所說(shuō)到的緩存都是讀緩存 , 緩存還有另外一個(gè)類型 : 寫緩存 。 對(duì)于一些讀寫比不高,同時(shí)對(duì)數(shù)據(jù)安全性需求不高的數(shù)據(jù),我們可以將其緩存起來(lái)從而減少對(duì)底層 數(shù)據(jù)庫(kù)的訪問(wèn) , 比如統(tǒng)計(jì)商品的訪問(wèn)次數(shù) , 統(tǒng)計(jì) API 的調(diào)用量等等 , 可以采用先寫內(nèi)存緩存然后延遲持久化到數(shù)據(jù)庫(kù),這樣可以大大減少對(duì)數(shù)據(jù)庫(kù)的寫壓力。 以店鋪線的系統(tǒng)為例,在用戶瀏覽店鋪的時(shí)候,比如店鋪介紹,店鋪交流區(qū)頁(yè)面,店鋪服務(wù)條款頁(yè)面,店鋪試衣間頁(yè)面,以及店鋪內(nèi)搜索界面這些界面更新不是非常頻繁,因此適合放到緩存中,這樣可以大大減低 DB 的負(fù)載。另外寶貝詳情頁(yè)面相對(duì)也更新比較少,因此也適合放到緩存中來(lái)減低 DB 負(fù)載。 . 應(yīng)用拆分 首先,在說(shuō)明應(yīng)用拆分之前,我們先來(lái)回顧一下一個(gè)系統(tǒng)從小變大的過(guò)程中遇到的一些問(wèn)題,通過(guò)這些 問(wèn)題我們會(huì)發(fā)現(xiàn)拆分對(duì)于構(gòu)建一個(gè)大型系統(tǒng)是如何的重要。 系統(tǒng)剛上線初期,用戶數(shù)并不多,所有的邏輯也許都是放在一個(gè)系統(tǒng)中的,所有邏輯跑到一個(gè)進(jìn)程或者一個(gè)應(yīng)用當(dāng)中,這個(gè)時(shí)候因?yàn)楸容^用戶少,系統(tǒng)訪問(wèn)量低,因此將全部的邏輯都放在一個(gè)應(yīng)用未嘗不可。但是,兄弟們都清楚,好景不長(zhǎng),隨著系統(tǒng)用戶的不斷增加,系統(tǒng)的訪問(wèn)壓力越來(lái)越多,同時(shí)隨著系統(tǒng)發(fā)展,為了滿足用戶的需求,原有的系統(tǒng)需要增加新的功能進(jìn)來(lái),系統(tǒng)變得越來(lái)越復(fù)雜的時(shí)候,我們會(huì)發(fā)現(xiàn)系統(tǒng)變得越來(lái)越難維護(hù),難擴(kuò)展,同時(shí)系統(tǒng)伸縮性和可用性也會(huì)受到影響。那么這個(gè)時(shí)候我們?nèi)绾谓鉀Q這 些問(wèn)題呢?明智的辦法就是拆分(這也算是一種解耦),我們需要將原來(lái)的系統(tǒng)根據(jù)一定的標(biāo)準(zhǔn),比如業(yè)務(wù)相關(guān)性等分為不同的子系統(tǒng),不同的系統(tǒng)負(fù)責(zé)不同的功能,這樣切分以后,我們可以對(duì)單獨(dú)的子系統(tǒng)進(jìn)行擴(kuò)展和維護(hù),從而提高系統(tǒng)的擴(kuò)展性和可維護(hù)性,同時(shí)我們系統(tǒng)的水平伸縮性 scale out 大大的提升了,因?yàn)槲覀兛梢杂嗅槍?duì)性的對(duì)壓力大的子系統(tǒng)進(jìn)行水平擴(kuò)展而不會(huì)影響到其它的子系統(tǒng),而不會(huì)像拆分以前,每次系統(tǒng)壓力變大的時(shí)候,我們都 需要對(duì)整 個(gè)大系統(tǒng) 第 6 頁(yè) 進(jìn)行伸縮,而這樣的成本是比較大的,另外經(jīng)過(guò)切分,子系統(tǒng)與子系統(tǒng)之間的耦合減低了,當(dāng) 某個(gè)子系統(tǒng)暫時(shí)不可用的時(shí)候,整體系統(tǒng)還是可用的,從而整體系統(tǒng)的可用性也大大增強(qiáng)了。 因此一個(gè)大型的互聯(lián)網(wǎng)應(yīng)用,肯定是要經(jīng)過(guò)拆分,因?yàn)橹挥胁鸱至?,系統(tǒng)的擴(kuò)展性,維護(hù)性 , 伸縮性,可用性才會(huì)變的更好。但是拆分也給系統(tǒng)帶來(lái)了問(wèn)題,就是子系統(tǒng)之間如何通信的問(wèn)題,而具體的通信方式有哪些呢?一般有同步通信和異步通信,這里我們首先來(lái)說(shuō)下同步通信,下面的主題 “ 消息系統(tǒng) ” 會(huì)說(shuō)到異步通信。既然需要通信,這個(gè)時(shí)候一個(gè)高性能的遠(yuǎn)程調(diào)用框架就顯得非??傄?,因此咱們公司也有了自己的 HSF 框架。 上面所說(shuō)的都是拆分的好處,但是拆分以后必 然的也會(huì)帶來(lái)新的問(wèn)題,除了剛才說(shuō)的子系統(tǒng)通信問(wèn)題外,最值得關(guān)注的問(wèn)題就是系統(tǒng)之間的依賴關(guān)系,因?yàn)橄到y(tǒng)多了,系統(tǒng)的依賴關(guān)系就會(huì)變得復(fù)雜,此時(shí)就需要更好的去關(guān)注拆分標(biāo)準(zhǔn),比如能否將一些有依賴的系統(tǒng)進(jìn)行垂直化,使得這些系統(tǒng)的功能盡量的垂直,這也是目前公司正在做的系統(tǒng)垂直化,同時(shí)一定要注意系統(tǒng)之間的循環(huán)依賴,如果出現(xiàn)循環(huán)依賴一定要小心,因?yàn)檫@可能導(dǎo)致系統(tǒng)連鎖啟動(dòng)失敗。 既然明白了拆分的重要性,我們看看隨著公司的發(fā)展,公司本身是如何拆分系統(tǒng)的。 在這個(gè)演變的過(guò)程中,我們所說(shuō)的拆分就出現(xiàn) 和 之間。在 ,公司幾乎所有的邏輯都放在一個(gè)系統(tǒng)中,這樣導(dǎo)致的問(wèn)題就是系統(tǒng)擴(kuò)展和修改非常麻煩,并且更加致命的是隨著公司業(yè)務(wù)量的增加,如果按照 的架構(gòu)已經(jīng)沒(méi)有辦法支撐以后公司的快速發(fā)展,因此大家決定對(duì)整個(gè)系統(tǒng)進(jìn)行拆分 , 版本的系統(tǒng)對(duì)整個(gè)系統(tǒng)進(jìn)行了水平和垂直兩個(gè)方向的拆分,水平方向上,按照功能分為交易,評(píng)價(jià),用戶,商品等系統(tǒng),同樣垂直 方向上,劃分為業(yè)務(wù)系統(tǒng),核心業(yè)務(wù)系統(tǒng)以及 基礎(chǔ)服務(wù),這樣以來(lái),各個(gè)系統(tǒng)都可以獨(dú)立維護(hù)和獨(dú)立的進(jìn)行水平伸縮,比如交易系統(tǒng)可以在不影響其它系統(tǒng)的情況下獨(dú)立的進(jìn)行水平伸縮以及功能擴(kuò)展 。 從上面可以看出,一個(gè)大型系統(tǒng)要想變得可維護(hù),可擴(kuò)展,可伸縮,我們必須的對(duì)它進(jìn)行拆分,拆分必然也帶來(lái)系統(tǒng)之間如何通信以及系統(tǒng)之間依賴管理等問(wèn)題,關(guān)于通信方面,公司目前獨(dú)立開發(fā)了自己的高性能服務(wù)框架 HSF,此框架主要解決了公司目前所有子系統(tǒng)之間的同步和異步通信(目前 HSF 主要用于同步場(chǎng)合, FutureTask 方式的調(diào)用場(chǎng)景還比較少)。至于系統(tǒng)間的依賴管理,目前公司還做的不夠好,這應(yīng)該也是我們以后努力解決的問(wèn)題。 第 7 頁(yè) . 數(shù)據(jù)庫(kù)拆分 在前面 “ 應(yīng)用拆分 ” 主題中,我們提到了一個(gè)大型互聯(lián)網(wǎng)應(yīng)用需要進(jìn)行良好的拆分,而那里我們 僅僅說(shuō)了 “ 應(yīng)用級(jí)別 ” 的拆分,其實(shí)我們的互聯(lián)網(wǎng)應(yīng)用除了應(yīng)用級(jí)別的拆分以外,還有另外一個(gè)很重要的層面就是存儲(chǔ)如何拆分的。因此這個(gè)主題主要涉及到如何對(duì)存儲(chǔ)系統(tǒng),通常就是所說(shuō)的 RDBMS 進(jìn)行拆分。 好了,確定了這個(gè)小節(jié)的主題之后,我們回顧一下,一個(gè)互聯(lián)網(wǎng)應(yīng)用從小變大的過(guò)程中遇到的一些問(wèn)題,通過(guò)遇到的問(wèn)題來(lái)引出我們拆分 RDBMS 的重要性。 系統(tǒng)剛開始的時(shí)候,因?yàn)橄到y(tǒng)剛上線,用戶不多,那個(gè)時(shí)候,所有的數(shù)據(jù)都放在了同一個(gè)數(shù)據(jù)庫(kù)中,這個(gè)時(shí)候因?yàn)橛脩羯賶毫π?,一個(gè)數(shù)據(jù)庫(kù)完全可以應(yīng)付的了,但是隨著運(yùn)營(yíng)那些哥們辛苦的吶喊和拼命的 推廣以后,突然有一天發(fā)現(xiàn), oh,god,用戶數(shù)量突然變多了起來(lái),隨之而來(lái)的就是數(shù)據(jù)庫(kù)這哥們受不了,它終于在某一天大家都和愜意的時(shí)候掛掉啦。此時(shí),咱們搞技術(shù)的哥們,就去看看究竟是啥原因,我們查了查以后,發(fā)現(xiàn)原來(lái)是數(shù)據(jù)庫(kù)讀取壓力太大了,此時(shí)咱們都清楚是到了讀寫分離的時(shí)候,這個(gè)時(shí)候我們會(huì)配置一個(gè) server 為 master節(jié)點(diǎn),然后配幾個(gè) salve 節(jié)點(diǎn),這樣以來(lái)通過(guò)讀寫分離,使得讀取數(shù)據(jù)的壓力分?jǐn)偟搅瞬煌?salve 節(jié)點(diǎn)上面,系統(tǒng)終于又恢復(fù)了正常,開始正常運(yùn)行了。但是好景還是不長(zhǎng),有一天我們發(fā)現(xiàn) master 這哥們撐 不住了,它負(fù)載老高了,汗流浹背,隨時(shí)都有翹掉的風(fēng)險(xiǎn),這個(gè)時(shí)候就需要咱們垂直分區(qū)啦(也就是所謂的分庫(kù)),比如將商品信息,用戶信息,交易信息分別存儲(chǔ)到不同的數(shù)據(jù)庫(kù)中,同時(shí)還可以針對(duì)商品信息的庫(kù)采用 master, salve 模式, OK,通過(guò)分庫(kù)以后,各個(gè)按照功能拆分的數(shù)據(jù)庫(kù)寫壓力被分擔(dān)到了不同的 server 上面,這樣數(shù)據(jù)庫(kù)的壓力終于有恢復(fù)到正常狀態(tài)。但是是不是這樣,我們就可以高枕無(wú)憂了呢? NO,這個(gè) NO,不是我說(shuō)的,是前輩們通過(guò)經(jīng)驗(yàn)總結(jié)出來(lái)的,隨著用戶量的不斷增加,你會(huì)發(fā)現(xiàn)系統(tǒng)中的某些表會(huì)變的異常龐大,比如好友關(guān)系 表,店鋪的參數(shù)配置表等,這個(gè)時(shí)候 無(wú)論是寫入還是讀取這些表的數(shù)據(jù),對(duì)數(shù)據(jù)庫(kù)來(lái)說(shuō)都是一個(gè)很耗費(fèi)精力的事情,因此此時(shí)就需要我們進(jìn)行 “ 水平分區(qū) ” 了(這就是俗話說(shuō)的分表,或者說(shuō) sharding) 。 上面說(shuō)了一大堆,無(wú)非就是告訴大家一個(gè)事實(shí) “ 數(shù)據(jù)庫(kù)是系統(tǒng)中最不容易 scale out 的一層 ” ,一個(gè)大型的互聯(lián)網(wǎng)應(yīng)用必然會(huì)經(jīng)過(guò)一個(gè)從單一 DB server, 到 Master/salve, 再到垂直分區(qū)(分庫(kù)) , 然后再到水平分區(qū)(分表 , sharding)的過(guò)程,而在這個(gè)過(guò)程中, Master/salve 以及垂直分區(qū)相對(duì)比較容易,對(duì) 應(yīng)用的影響也不是很大,但是分表會(huì)引起一些棘手的問(wèn)題,比如不能跨越多個(gè)分區(qū) join 查詢數(shù)據(jù),如何平衡各個(gè) shards 的負(fù)載等等,這個(gè)時(shí)候 第 8 頁(yè) 就需要一個(gè)通用的 DAL 框架來(lái)屏蔽底層數(shù)據(jù)存儲(chǔ)對(duì)應(yīng)用邏輯的影響,使得底層數(shù)據(jù)的訪問(wèn)對(duì)應(yīng)用透明化。 拿公司目前的情況來(lái)說(shuō),公司目前也正在從昂貴的高端存儲(chǔ)(小型機(jī) +ORACLE)切換到 MYSQL, 切換到 MYSQL 以后,勢(shì)必會(huì)遇到垂直分區(qū)(分庫(kù))以及水平分區(qū)( Sharding)的問(wèn)題,因此目前公司根據(jù)自己的業(yè)務(wù)特點(diǎn)也開發(fā)了自己的 TDDL 框架,此框架主要解決了分庫(kù)分表對(duì)應(yīng)用的透明化以及 異構(gòu)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)復(fù)制。 . 異步通信 在 “ 遠(yuǎn)程調(diào)用框架 ” 的介紹中 , 我們說(shuō)了一個(gè)大型的系統(tǒng)為了擴(kuò)展性和伸縮性方面的需求 , 肯定是要進(jìn)行拆分 , 但是拆分了以后 , 子系統(tǒng)之間如何通信就成了我們首要的問(wèn)題 , 在“ 遠(yuǎn)程調(diào)用框架 ” 小節(jié)中 , 我們說(shuō)了同步通信在一個(gè)大型分布式系統(tǒng)中的應(yīng)用 , 那么這一小節(jié)我們就來(lái)說(shuō)說(shuō)異步通信 。 好了 , 既然說(shuō)到了異步通信 ,那么 “ 消息中間件 ” 就要登場(chǎng)了 ,采用異步通信這其實(shí)也是關(guān)系到系統(tǒng)的伸縮性 , 以及最大化的對(duì)各個(gè)子系統(tǒng)進(jìn)行解耦 。 說(shuō)到異步通信,我們需要關(guān)注的一點(diǎn)是這里的異步一定是根據(jù)業(yè)務(wù)特點(diǎn)來(lái)的,一定是針對(duì)業(yè) 務(wù)的異步,通常適合異步的場(chǎng)合是一些松耦合的通信場(chǎng)合,而對(duì)于本身業(yè)務(wù)上關(guān)聯(lián)度比較大的業(yè)務(wù)系統(tǒng)之間,我們還是要采用同步通信比較靠譜。 那么下一步我們說(shuō)說(shuō)異步能給系統(tǒng)帶
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1