自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JAVA架構(gòu)師面試分享—鏈家網(wǎng)

開發(fā) 架構(gòu)
本月7日去了一趟鏈家網(wǎng)面試,雖然沒有面上,但仍有不少收獲,在此做個(gè)簡(jiǎn)單的分 享,當(dāng)然了主要是分享給自己,讓大家見笑了。因?yàn)檫@次是第一次面試JAVA網(wǎng)站架構(gòu)師相關(guān)的職位,還是有些心虛的,畢竟之前大部分時(shí)間都是在做.NET相 關(guān)的技術(shù)工作,并且自己所負(fù)責(zé)過的項(xiàng)目規(guī)模都是比較小,并且差異也較大。

本月7日去了一趟鏈家網(wǎng)面試,雖然沒有面上,但仍有不少收獲,在此做個(gè)簡(jiǎn)單的分 享,當(dāng)然了主要是分享給自己,讓大家見笑了。因?yàn)檫@次是第一次面試JAVA網(wǎng)站架構(gòu)師相關(guān)的職位,還是有些心虛的,畢竟之前大部分時(shí)間都是在做.NET相 關(guān)的技術(shù)工作,并且自己所負(fù)責(zé)過的項(xiàng)目規(guī)模都是比較小,并且差異也較大。在高并發(fā)性,高伸縮性的互聯(lián)網(wǎng)網(wǎng)站的架構(gòu)方面沒有太多的經(jīng)驗(yàn),只是在之前空閑時(shí)閱 讀李智慧老師的《大型網(wǎng)站技術(shù)架構(gòu)》一書給了我不少的啟發(fā)。面試過程比較簡(jiǎn)單,首先是筆試,架構(gòu)師職位主要是一些知識(shí)的理解,也有一些數(shù)據(jù)庫(kù)查詢方面的基 礎(chǔ)試題。知識(shí)點(diǎn)方面比較偏重于NoSQL、緩存服務(wù)器集群、Session服務(wù)器等內(nèi)容。大體做的還湊合,因此面試官也比較客氣,和我更加深入的聊了相關(guān) 方面的知識(shí),也包括該公司主要的組織架構(gòu)和盈利來源。

由于鏈家網(wǎng)到目前為止仍然不算特別出名,但在各大網(wǎng)站上已經(jīng)能經(jīng)常看到該 公司基于房地產(chǎn)行業(yè)的研究報(bào)告。剛開始我最大的疑問就是這個(gè)公司和搜房網(wǎng)、安居客等有什么區(qū)別?這些網(wǎng)站都已經(jīng)存在多年,那么該公司有什么特別的地方可以 存活至今,并在這兩年內(nèi)發(fā)展迅速?在回答這些疑問之前,我稍微跑個(gè)題,介紹一下面試官老宋,這是我給他起的外號(hào),那次見面應(yīng)該是第一次也是最后一次見他 了,但他給我留下了極深的印象。技術(shù)水平很高,很注意自己的外在氣質(zhì),溝通時(shí)十分和善,影響最深的是在面試時(shí)他全程用鋼筆記錄相關(guān)的信息,非常的專業(yè)和尊 重面試者。之所以提這個(gè),主要是想說個(gè)人認(rèn)為程序員在找一份工作時(shí)除了收入,公司的未來發(fā)展外,最重要的就是直屬領(lǐng)導(dǎo)的性格契合度了,適合的才是最好的。 只有這樣,你才能無論遇到多大的困難,都堅(jiān)信團(tuán)隊(duì)、項(xiàng)目能順利發(fā)展,自己多奉獻(xiàn)一些也是值得的,當(dāng)然最終受益的也是自己了。

接下來,回答之前的問題,鏈家網(wǎng)是非常大型與房地產(chǎn)經(jīng)紀(jì)相關(guān)的公司,組織 架構(gòu)比較復(fù)雜和特殊,因?yàn)樗⒉皇且患移髽I(yè)慢慢發(fā)展起來的,而又由鏈家網(wǎng)牽頭,和各地不同的房產(chǎn)經(jīng)紀(jì)公司聯(lián)合組建起來的。由于房地產(chǎn)政策的地區(qū)差異,各地 客戶群體需求差異,很難有一個(gè)非常統(tǒng)一的運(yùn)營(yíng)模式來進(jìn)行管理。各地公司單獨(dú)運(yùn)營(yíng),總部主要是一個(gè)互聯(lián)網(wǎng)的用戶入口,數(shù)據(jù)信息服務(wù)系統(tǒng)也是各自獨(dú)立,感覺比 較像原來特許加盟的形式,也算是一種互聯(lián)網(wǎng)+的實(shí)踐了。該公司與搜房網(wǎng)、安居客的差異來源于它的數(shù)據(jù)完全來之于本公司,基本是真實(shí)有效的,而搜房網(wǎng)等公司 的數(shù)據(jù)來源于各個(gè)房產(chǎn)經(jīng)紀(jì)公司或者經(jīng)紀(jì)人,信息非常的不可靠。簡(jiǎn)單舉個(gè)例子,比如一套房子房東報(bào)價(jià)500萬,但一般來說這里面都有一定的砍價(jià)空間,那么房 產(chǎn)經(jīng)紀(jì)人在網(wǎng)上掛售這套房產(chǎn)時(shí)就會(huì)進(jìn)行一定的減價(jià),比如說495萬,于此同時(shí),房東一般會(huì)和多家經(jīng)紀(jì)公司聯(lián)系,那么其他經(jīng)紀(jì)人看到這個(gè)報(bào)價(jià),為了做成生 意,很自然的把價(jià)格報(bào)的更低,最后,甚至爆出400萬這種不可能成交的價(jià)格,只是為了接到潛在購(gòu)買者的電話。這樣就形成了"劣幣驅(qū)逐良幣"的情況,使得網(wǎng) 站信息不再可信,同時(shí)由于一套房屋可以由多家經(jīng)紀(jì)公司掛售,因而網(wǎng)站上的房源數(shù)量往往遠(yuǎn)多于實(shí)際的數(shù)量,給潛在購(gòu)買者產(chǎn)生了很大的困擾。此外,由于鏈家公 司所轄房產(chǎn)經(jīng)紀(jì)公司,比如說上海的德佑公司,已有一定的體量,為了更進(jìn)一步的保證房產(chǎn)的真實(shí)性,經(jīng)過房產(chǎn)局對(duì)在售房屋進(jìn)行了全面的核查。借用老宋的話說就 是,"搜房他們是淘寶,鏈家是京東"。以上是對(duì)該公司經(jīng)營(yíng)模式的介紹,對(duì)房產(chǎn)經(jīng)紀(jì)類企業(yè)深入互聯(lián)化有很大的借鑒作用。

然后開始技術(shù)部分的介紹,剛開始我也有很打困惑,為什么這家公司需要一個(gè) OA方面的架構(gòu)師,經(jīng)過溝通我才知道,該公司目前有大約3萬名的房產(chǎn)經(jīng)紀(jì),所以該公司的企業(yè)信息系統(tǒng),每天有將近1000萬得PV,抵得上一個(gè)中型網(wǎng)站, 每天的早上打卡(采用網(wǎng)上打卡)、爭(zhēng)搶客戶資源等活動(dòng)會(huì)產(chǎn)生大量的并發(fā),類似于電商網(wǎng)站的秒殺,因而需要有高并發(fā)相關(guān)經(jīng)驗(yàn)的工程師。

最后,是幾個(gè)主要的技術(shù)點(diǎn),包括權(quán)限系統(tǒng)的設(shè)計(jì),緩存服務(wù)器集群的架設(shè),消息隊(duì)列系統(tǒng)的構(gòu)建等。在此主要介紹前兩個(gè),其他的會(huì)在之后補(bǔ)充。權(quán)限系統(tǒng)基本參考資深博主天空行馬的方案,如下圖所示。

主體結(jié)構(gòu)比較簡(jiǎn)單,職位和項(xiàng)目組的設(shè)置可以同時(shí)滿足職能型和項(xiàng)目型的企業(yè) 組織架構(gòu),角色則對(duì)之前兩者進(jìn)行了有限的補(bǔ)充,比如系統(tǒng)管理員等不能通過職位和項(xiàng)目組描述的情況。一般來說,系統(tǒng)中包含兩種類型的權(quán)限:模塊的權(quán)限;行為 的權(quán)限。權(quán)限組通常用于表示某一模塊中所有行為權(quán)限的集合。這個(gè)思路簡(jiǎn)單清晰,便于實(shí)現(xiàn)和未來的擴(kuò)展。在實(shí)現(xiàn)中,可以通過相關(guān)的權(quán)限代碼組合規(guī)則

來將權(quán)限信息保存在數(shù)據(jù)庫(kù)中,例如權(quán)限的數(shù)字或字母的表示組合。

分布式緩存集群的伸縮性不同于Web服務(wù)器集群的伸縮性,對(duì)于后者來說, 每一臺(tái)Web服務(wù)器上內(nèi)容相同,伸縮性只需要簡(jiǎn)單的負(fù)載均衡算法即可達(dá)到。但每一臺(tái)分布式緩存服務(wù)器上數(shù)據(jù)各不相同,緩存訪問請(qǐng)求不可以再集群中任意服務(wù) 器上完成,需要先找到存儲(chǔ)該數(shù)據(jù)的服務(wù)器后訪問。同時(shí)新上線的服務(wù)器上沒有緩存數(shù)據(jù),下線的緩存服務(wù)器上有熱點(diǎn)數(shù)據(jù),會(huì)對(duì)分布式緩存集群的伸縮性設(shè)計(jì)造成 很大的困難。為了更好的闡述相關(guān)概念,接下來將以最常見的Memcached為例介紹相關(guān)設(shè)計(jì)與實(shí)現(xiàn),所圖所示。

過程非常簡(jiǎn)單,Memcached API將應(yīng)用程序傳入的key進(jìn)行哈希運(yùn)算,然后使用簡(jiǎn)單余數(shù)Hash算法(例如11/3=2),得到指定的節(jié)點(diǎn)Node2,然后存儲(chǔ)指定服務(wù)器。需要注 意的一旦涉及到服務(wù)器的擴(kuò)容,以上見余數(shù)Hash算法就會(huì)遇到很大的問題,例如當(dāng)要將3臺(tái)緩存服務(wù)器增加到4臺(tái)時(shí)(11/4=3),這時(shí)再Node3上找 不該緩存,緩存未命中的概率達(dá)到75%,并且會(huì)著擴(kuò)容,為命中的概率不斷增大(N/N+1)。這時(shí)就會(huì)使用到比較流行的一致性hash算法,該算法通過一 致性Hash環(huán)的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)KEY到緩存服務(wù)器的Hash映射,過程若下圖所示。

算法的具體過程為:首先構(gòu)造一個(gè)232的整數(shù)環(huán), 根據(jù)節(jié)點(diǎn)名稱的Hash值(極可能的散列)將緩存服務(wù)器節(jié)點(diǎn)防止在這個(gè)Hash環(huán)上,然后計(jì)算需要緩存數(shù)據(jù)KEY的Hash值,順時(shí)針查找最近的節(jié)點(diǎn),作 為目標(biāo)節(jié)點(diǎn)。如上圖中,在集群擴(kuò)容時(shí),即在原有Node0-2的基礎(chǔ)上加入Node3,可以看到,唯一受影響的數(shù)據(jù)為Key3,如此緩存的命中率就變?yōu)榱?N/N+1,能滿足實(shí)際需要。實(shí)際代碼中,該還一般由二叉查找樹實(shí)現(xiàn),通過鏈接最外側(cè)的葉子節(jié)點(diǎn)形成環(huán)。但以上設(shè)計(jì)仍然存在一個(gè)問題,就是再擴(kuò)容 后,Node0和1的負(fù)載量是Node2和Node3的兩倍。解決該痛點(diǎn)的方法是將物理緩存服務(wù)器節(jié)點(diǎn)虛擬化為N個(gè)虛擬節(jié)點(diǎn),均勻的分散到環(huán)中去,使得負(fù) 載盡可能的均衡。這樣就做到了新增物理服務(wù)器對(duì)原有物理服務(wù)器的影響一致,也就是該算法名稱的由來。

注:本文主要供自己學(xué)習(xí),不妥之處望見諒。

參考資料:

[1]天空行馬. OA系統(tǒng)權(quán)限管理設(shè)計(jì)方案[EB/OL]. http://www.cnblogs.com/kivenhou/archive/2009/10/19/1586106.html

[2]李智慧. 大型網(wǎng)站架構(gòu)技術(shù)[M]. 上海:電子工業(yè)出版社, 2012. 123-182

 
責(zé)任編輯:王雪燕 來源: 博客園
相關(guān)推薦

2018-07-06 11:25:40

Java架構(gòu)師面試

2015-09-14 18:10:50

鏈家網(wǎng)

2012-03-26 20:10:58

去哪兒架構(gòu)師藝術(shù)家

2024-10-09 08:22:45

2018-07-03 15:46:24

Java架構(gòu)師源碼

2019-10-21 09:32:48

緩存架構(gòu)分層

2018-03-12 15:21:20

2010-03-02 09:44:32

首席架構(gòu)師趙亮

2013-08-21 13:43:16

架構(gòu)師架構(gòu)師面試職場(chǎng)面試

2012-11-01 15:02:40

2012云計(jì)算架構(gòu)師峰

2012-04-26 10:29:55

新浪云計(jì)算SAE

2017-06-14 20:13:43

聯(lián)想超融合

2016-12-02 16:54:52

架構(gòu)大數(shù)據(jù)業(yè)務(wù)

2020-08-24 08:50:12

架構(gòu)師TL技術(shù)

2009-12-18 10:22:50

Ray Ozzie架構(gòu)師

2021-08-22 15:14:00

Vue開發(fā)前端

2012-08-04 16:02:00

架構(gòu)師

2011-03-11 15:38:08

Java

2015-12-09 15:16:03

架構(gòu)師京東架構(gòu)

2018-06-28 09:34:26

架構(gòu)師Python面試題
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)