大型網(wǎng)站架構(gòu)技術(shù)一覽

大型網(wǎng)站的挑戰(zhàn)主要來(lái)自龐大的用戶(hù)劲件,高并發(fā)的訪問(wèn)和海量數(shù)據(jù)未巫,任何簡(jiǎn)單的業(yè)務(wù)一旦需要處理數(shù)以P計(jì)的數(shù)據(jù)和面對(duì)數(shù)以?xún)|計(jì)的用戶(hù)唇敞,問(wèn)題就會(huì)變得棘手蔗草。大型網(wǎng)站架構(gòu)主要就是解決這類(lèi)問(wèn)題。更多內(nèi)容也可以閱讀各大互聯(lián)網(wǎng)公司架構(gòu)演進(jìn)之路匯總疆柔、大型網(wǎng)站架構(gòu)演化歷程兩篇文章蕉世。

整體架構(gòu)圖

image.png

這個(gè)網(wǎng)站架構(gòu)層次,共分為8個(gè)層次婆硬,其中數(shù)據(jù)庫(kù)中心機(jī)房架構(gòu)是上面所有架構(gòu)的物理基礎(chǔ);安全架構(gòu)和數(shù)據(jù)庫(kù)采集監(jiān)控架構(gòu)是貫穿在各個(gè)層次的重要保障奸例,這兩個(gè)架構(gòu)主要解決五個(gè)業(yè)務(wù)相關(guān)層次的安全問(wèn)題和數(shù)據(jù)采集監(jiān)控問(wèn)題彬犯,是一直都需要關(guān)注的地方; 對(duì)于目前的大型網(wǎng)絡(luò)來(lái)看查吊,可以分為前端谐区、應(yīng)用層、服務(wù)層逻卖、存儲(chǔ)層宋列、后臺(tái)等5個(gè)方面,簡(jiǎn)單來(lái)說(shuō)评也,前端存放的是靜態(tài)網(wǎng)頁(yè)炼杖,不涉及業(yè)務(wù),就是為了客戶(hù)端能夠及時(shí)響應(yīng)盗迟,并展現(xiàn)一些靜態(tài)內(nèi)容坤邪;應(yīng)用層是處理業(yè)務(wù)邏輯的地方,前端開(kāi)發(fā)的代碼罚缕,主要就是發(fā)布在這個(gè)地方艇纺,實(shí)際用戶(hù)的各種業(yè)務(wù)處理,也主要在這個(gè)地方進(jìn)行邮弹;服務(wù)層介于應(yīng)用層和存儲(chǔ)層之間黔衡,主要為兩者提供各種分布式服務(wù),比如分布式緩存腌乡,能減少存儲(chǔ)層的壓力盟劫,并盡快響應(yīng)應(yīng)用層的請(qǐng)求,提高性能导饲;存儲(chǔ)層是存放各種業(yè)務(wù)數(shù)據(jù)的地方捞高,包括關(guān)系型氯材、非關(guān)系型數(shù)據(jù)庫(kù)、文件已經(jīng)它們之間的數(shù)據(jù)同步硝岗;上面4個(gè)層次可以說(shuō)是實(shí)時(shí)的業(yè)務(wù)功能氢哮,有一個(gè)層次出現(xiàn)問(wèn)題,就會(huì)直接影響用戶(hù)體驗(yàn)型檀,在這4個(gè)層次后面冗尤,還有一個(gè)后臺(tái),它是不直接與用戶(hù)溝通胀溺,但從上面的業(yè)務(wù)中通過(guò)搜索引擎裂七、數(shù)據(jù)倉(cāng)庫(kù)、推薦系統(tǒng)等仓坞,創(chuàng)造更加有價(jià)值的信息背零,在后臺(tái)為業(yè)務(wù)提供支撐。

1.前端架構(gòu)


前端指用戶(hù)請(qǐng)求到達(dá)網(wǎng)站應(yīng)用服務(wù)器之前經(jīng)歷的環(huán)節(jié)无埃,通常不包含網(wǎng)站業(yè)務(wù)邏輯徙瓶,不處理動(dòng)態(tài)內(nèi)容。

瀏覽器優(yōu)化技術(shù)

并不是優(yōu)化瀏覽器嫉称,而是通過(guò)優(yōu)化響應(yīng)頁(yè)面侦镇,加快瀏覽器頁(yè)面的加載和顯示,常用的有頁(yè)面緩存织阅、合并HTTP減少請(qǐng)求次數(shù)壳繁、使用頁(yè)面壓縮等。

CDN

內(nèi)容分發(fā)網(wǎng)絡(luò)荔棉,部署在網(wǎng)絡(luò)運(yùn)營(yíng)商機(jī)房闹炉,通過(guò)將靜態(tài)頁(yè)面內(nèi)容分發(fā)到離用戶(hù)最近最近的CDN服務(wù)器,使用戶(hù)可以通過(guò)最短路徑獲取內(nèi)容润樱。

動(dòng)靜分離剩胁,靜態(tài)資源獨(dú)立部署

靜態(tài)資源,如JS祥国、CSS等文件部署在專(zhuān)門(mén)的服務(wù)器集群上昵观,和Web應(yīng)用動(dòng)態(tài)內(nèi)容服務(wù)分離,并使用專(zhuān)門(mén)的(二級(jí))域名舌稀。

圖片服務(wù)

圖片不是指網(wǎng)站Logo啊犬、按鈕圖標(biāo)等,這些文件屬于上面提到的靜態(tài)資源壁查,應(yīng)該和JS觉至、CSS部署在一起。這里的圖片指用戶(hù)上傳的圖片睡腿,如產(chǎn)品圖片语御、用戶(hù)頭像等峻贮,圖片服務(wù)同樣適用獨(dú)立部署的圖片服務(wù)器集群,并使用獨(dú)立(二級(jí))域名应闯。

反向代理

部署在網(wǎng)站機(jī)房纤控,在應(yīng)用服務(wù)器、靜態(tài)資源服務(wù)器碉纺、圖片服務(wù)器之前船万,提供頁(yè)面緩存服務(wù)。

DNS

域名服務(wù)骨田,將域名解析成IP地址耿导,利用DNS可以實(shí)現(xiàn)DNS負(fù)載均衡,配置CDN也需要修改DNS态贤,使域名解析后指向CDN服務(wù)器舱呻。

2.應(yīng)用層架構(gòu)


應(yīng)用層是處理網(wǎng)站主要業(yè)務(wù)邏輯的地方。

開(kāi)發(fā)框架

網(wǎng)站業(yè)務(wù)是多變的悠汽,網(wǎng)站的大部分軟件工程師都是在加班加點(diǎn)開(kāi)發(fā)網(wǎng)站業(yè)務(wù)狮荔,一個(gè)好的開(kāi)發(fā)框架至關(guān)重要。一個(gè)號(hào)的開(kāi)發(fā)框架應(yīng)該能夠分離關(guān)注面介粘,使美工、開(kāi)發(fā)工程師可以各司其事晚树,易于協(xié)作姻采。同時(shí)還應(yīng)該內(nèi)置一些安全策略,防護(hù)Web用攻擊爵憎。

頁(yè)面渲染

將分別開(kāi)發(fā)維護(hù)的動(dòng)態(tài)內(nèi)容和靜態(tài)頁(yè)面模板集成起來(lái)慨亲,組合成最終顯示給用戶(hù)的完整頁(yè)面。

負(fù)載均衡

將多臺(tái)應(yīng)用服務(wù)器組成一個(gè)集群宝鼓,通過(guò)負(fù)載均衡技術(shù)將用戶(hù)請(qǐng)求分發(fā)到不同的服務(wù)器上刑棵,以應(yīng)對(duì)大量用戶(hù)同時(shí)訪問(wèn)時(shí)產(chǎn)生的高并發(fā)負(fù)載壓力。

Session管理

為了實(shí)現(xiàn)高可用的應(yīng)用服務(wù)器集群愚铡,應(yīng)用服務(wù)器通常設(shè)計(jì)為無(wú)狀態(tài)蛉签,不保存用戶(hù)請(qǐng)求上下文信息,但是網(wǎng)站業(yè)務(wù)通常需要保持用戶(hù)會(huì)話信息沥寥,需要專(zhuān)門(mén)的機(jī)制管理Session碍舍,使集群內(nèi)甚至跨集群的應(yīng)用服務(wù)器可以共享Session。

動(dòng)態(tài)頁(yè)面靜態(tài)化

對(duì)于訪問(wèn)量特別大而更新又不很頻繁的動(dòng)態(tài)頁(yè)面邑雅,可以將其靜態(tài)化片橡,即生成一個(gè)靜態(tài)頁(yè)面,利用靜態(tài)頁(yè)面的優(yōu)化手段加速用戶(hù)訪問(wèn)淮野,如反向代理捧书、CDN吹泡、瀏覽器緩存等。

業(yè)務(wù)拆分

將復(fù)雜而龐大的業(yè)務(wù)拆分開(kāi)來(lái)经瓷,形成多個(gè)規(guī)模較小的產(chǎn)品爆哑,獨(dú)立開(kāi)發(fā)、部署了嚎、維護(hù)泪漂,除了降低系統(tǒng)耦合度,也便于數(shù)據(jù)庫(kù)業(yè)務(wù)分庫(kù)歪泳。按業(yè)務(wù)對(duì)關(guān)系數(shù)據(jù)庫(kù)進(jìn)行拆分萝勤,技術(shù)難度相對(duì)較小,而效果又相對(duì)較好呐伞。

虛擬化服務(wù)器

將一臺(tái)物理服務(wù)器虛擬化成多態(tài)虛擬服務(wù)器敌卓,對(duì)于并發(fā)訪問(wèn)較低的業(yè)務(wù),更容易用較少的資源構(gòu)架高可用的應(yīng)用服務(wù)器集群伶氢。

3.服務(wù)層架構(gòu)


提供基礎(chǔ)服務(wù)趟径,供應(yīng)用層調(diào)用,完成網(wǎng)站業(yè)務(wù)癣防。

分布式消息

利用消息隊(duì)列機(jī)制蜗巧,實(shí)現(xiàn)業(yè)務(wù)和業(yè)務(wù)、業(yè)務(wù)和服務(wù)之間的異步消息發(fā)送及低耦合的業(yè)務(wù)關(guān)系蕾盯。

分布式服務(wù)

提供高性能幕屹、低耦合、易復(fù)用级遭、易管理的分布式服務(wù)望拖,在網(wǎng)站實(shí)現(xiàn)面向服務(wù)架構(gòu)(SOA)。

分布式緩存

通過(guò)可伸縮的服務(wù)器集群提供大規(guī)模熱點(diǎn)數(shù)據(jù)的緩存服務(wù)挫鸽,是網(wǎng)站性能優(yōu)化的重要手段说敏。

分布式配置

系統(tǒng)運(yùn)行需要配置許多參數(shù),如果這些參數(shù)需要修改丢郊,比如分布式緩存集群加入新的緩存服務(wù)器盔沫,需要修改應(yīng)用程序客戶(hù)端的緩存服務(wù)器列表配置,并重啟應(yīng)用程序服務(wù)器枫匾。分布式配置在系統(tǒng)運(yùn)行期提供配置動(dòng)態(tài)推送服務(wù)迅诬,將配置修改實(shí)時(shí)推送到應(yīng)用系統(tǒng),無(wú)需重啟服務(wù)器婿牍。

4.存儲(chǔ)層架構(gòu)


提供數(shù)據(jù)侈贷、文件的持久化存儲(chǔ)訪問(wèn)與管理服務(wù)。

分布式文件

網(wǎng)站在線業(yè)務(wù)需要存儲(chǔ)的文件大部分都是圖片、網(wǎng)頁(yè)俏蛮、視頻等比較小的文件撑蚌,但是這些文件的數(shù)量非常龐大,而且通常都在持續(xù)增加搏屑,需要伸縮性設(shè)計(jì)比較好的分布式文件系統(tǒng)争涌。

關(guān)系數(shù)據(jù)庫(kù)

大部分萬(wàn)丈的主要業(yè)務(wù)是基于關(guān)系數(shù)據(jù)庫(kù)開(kāi)發(fā)的,但是關(guān)系數(shù)據(jù)庫(kù)對(duì)集群伸縮性的支持表較差辣恋。通過(guò)在應(yīng)用程序的數(shù)據(jù)訪問(wèn)層增加數(shù)據(jù)庫(kù)訪問(wèn)的路由功能亮垫,根據(jù)業(yè)務(wù)配置將數(shù)據(jù)庫(kù)訪問(wèn)路由到不同的物理數(shù)據(jù)庫(kù)上,可實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫(kù)的分布式訪問(wèn)伟骨。

NoSQL數(shù)據(jù)庫(kù)

目前各種NoSQL數(shù)據(jù)庫(kù)層出不窮饮潦,在內(nèi)存管理、數(shù)據(jù)模型携狭、集群分布式管理等方面各有優(yōu)勢(shì)继蜡,不過(guò)從社區(qū)活動(dòng)性角度看,HBase無(wú)疑是目前最好的逛腿。

數(shù)據(jù)同步

在支持全球范圍內(nèi)數(shù)據(jù)共享的分布式數(shù)據(jù)庫(kù)技術(shù)成熟之前稀并,擁有多個(gè)數(shù)據(jù)中心的網(wǎng)站必須在多個(gè)數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)同步,以保證每個(gè)數(shù)據(jù)中心都擁有完整的數(shù)據(jù)单默。在實(shí)踐中碘举,為了減輕數(shù)據(jù)庫(kù)壓力,將數(shù)據(jù)庫(kù)的事物日志(或者NoSQL的寫(xiě)操作Log)同步到其他數(shù)據(jù)中心搁廓,根據(jù)Log進(jìn)行數(shù)據(jù)重演引颈,實(shí)現(xiàn)數(shù)據(jù)同步。

5.后臺(tái)架構(gòu)


網(wǎng)站應(yīng)用中枚抵,除了要處理用戶(hù)的實(shí)時(shí)訪問(wèn)請(qǐng)求外,還有一些后臺(tái)非實(shí)時(shí)數(shù)據(jù)分析要處理明场。

搜索引擎

即使是網(wǎng)站內(nèi)部的搜索引擎汽摹,也需要進(jìn)行數(shù)據(jù)增量更新及全量更新、構(gòu)建索引等苦锨。這些操作通過(guò)后臺(tái)系統(tǒng)定時(shí)執(zhí)行逼泣。

數(shù)據(jù)倉(cāng)庫(kù)

根據(jù)離線數(shù)據(jù),提供數(shù)據(jù)分析與數(shù)據(jù)挖掘服務(wù)舟舒。

推薦系統(tǒng)

社交網(wǎng)站及購(gòu)物網(wǎng)站通過(guò)挖掘人與人之間的關(guān)系拉庶,人和商品之間的關(guān)系,發(fā)展?jié)撛诘娜穗H關(guān)系和購(gòu)物興趣秃励,為用戶(hù)提供個(gè)性化推薦服務(wù)氏仗。

6.數(shù)據(jù)采集與監(jiān)控


監(jiān)控網(wǎng)站訪問(wèn)情況與系統(tǒng)運(yùn)行情況,為網(wǎng)站運(yùn)營(yíng)決策和運(yùn)維管理提供支持保障

瀏覽器數(shù)據(jù)采集

通過(guò)在網(wǎng)站頁(yè)面中嵌入JS腳本采集用戶(hù)瀏覽器環(huán)境與操作記錄夺鲜,分析用戶(hù)行為皆尔。

服務(wù)器業(yè)務(wù)數(shù)據(jù)采集

服務(wù)器業(yè)務(wù)數(shù)據(jù)包括兩種呐舔,一種是采集在服務(wù)器端記錄的用戶(hù)請(qǐng)求操作日志;一種是采集應(yīng)用程序運(yùn)行期業(yè)務(wù)數(shù)據(jù)慷蠕,比如待處理消息數(shù)目等珊拼。

服務(wù)器性能數(shù)據(jù)采集

采集服務(wù)器性能數(shù)據(jù),如系統(tǒng)負(fù)載流炕、內(nèi)存使用率澎现、網(wǎng)卡流量等。

系統(tǒng)監(jiān)控

將前述采集的數(shù)據(jù)以圖表的方式展示每辟,以便運(yùn)營(yíng)和運(yùn)維人員監(jiān)控網(wǎng)站運(yùn)行狀況剑辫,做到這一步僅僅是系統(tǒng)監(jiān)視。更先進(jìn)的做法是根據(jù)采集的數(shù)據(jù)進(jìn)行自動(dòng)化運(yùn)維影兽,自動(dòng)處理系統(tǒng)異常狀況揭斧,是吸納自動(dòng)化控制。

系統(tǒng)報(bào)警

如果采集來(lái)的數(shù)據(jù)超過(guò)預(yù)設(shè)的正常情況的閥值峻堰,比如系統(tǒng)負(fù)載過(guò)高讹开,就通過(guò)郵件、短信捐名、語(yǔ)音電話等方式發(fā)出警報(bào)信號(hào)旦万,等待工程師干預(yù)。

7.安全架構(gòu)


保護(hù)網(wǎng)站免遭攻擊及敏感信息泄露镶蹋。

Web攻擊

以HTTP請(qǐng)求的方式發(fā)起的攻擊成艘,危害最大的就是XSS和SQL注入攻擊。但是只要措施得當(dāng)贺归,這兩種攻擊都是比較容易防范的淆两。

數(shù)據(jù)保護(hù)

敏感信息加密傳輸與存儲(chǔ),保護(hù)網(wǎng)站和用戶(hù)資產(chǎn)拂酣。

8.數(shù)據(jù)中心機(jī)房架構(gòu)


大型網(wǎng)站需要的服務(wù)器規(guī)模數(shù)以十萬(wàn)計(jì)秋冰,機(jī)房物理架構(gòu)也需要關(guān)注。

機(jī)房架構(gòu)

對(duì)于一個(gè)擁有十萬(wàn)臺(tái)服務(wù)器的大型網(wǎng)站婶熬,每臺(tái)服務(wù)器耗電(包括服務(wù)器本身耗電及空調(diào)耗電)每年大約需要人民幣2000元剑勾,那么網(wǎng)站每年機(jī)房電費(fèi)就需要兩億人民幣。數(shù)據(jù)中心能耗問(wèn)題日趨嚴(yán)重赵颅,Google虽另、Facebook選擇數(shù)據(jù)中心地理位置的時(shí)候趨向選擇散熱良好,供電充裕的地方饺谬。

機(jī)柜架構(gòu)

包括機(jī)柜大小捂刺,網(wǎng)線布局、指示燈規(guī)格、不間斷電源叠萍、電壓規(guī)格(是48V直流電還是220V民用交流電)等一系列問(wèn)題芝发。

服務(wù)器架構(gòu)

大型網(wǎng)站由于服務(wù)器采購(gòu)規(guī)模龐大,大都采用定制服務(wù)器的方式代替購(gòu)買(mǎi)服務(wù)器整機(jī)苛谷。根據(jù)網(wǎng)站應(yīng)用需求辅鲸,定制硬盤(pán)、內(nèi)存腹殿、甚至CPU独悴,同時(shí)去除不必要的外設(shè)接口(顯示器輸出接口,鼠標(biāo)锣尉、鍵盤(pán)輸入接口)刻炒,并使空間結(jié)構(gòu)利于散熱。

文章來(lái)源:http://blog.csdn.net/yumushui/article/details/45563527

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末自沧,一起剝皮案震驚了整個(gè)濱河市坟奥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拇厢,老刑警劉巖爱谁,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異孝偎,居然都是意外死亡访敌,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)衣盾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)寺旺,“玉大人,你說(shuō)我怎么就攤上這事势决∽杷埽” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵果复,是天一觀的道長(zhǎng)陈莽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)据悔,這世上最難降的妖魔是什么传透? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任耘沼,我火速辦了婚禮极颓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘群嗤。我一直安慰自己菠隆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著骇径,像睡著了一般躯肌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上破衔,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天清女,我揣著相機(jī)與錄音,去河邊找鬼晰筛。 笑死嫡丙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的读第。 我是一名探鬼主播曙博,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼怜瞒!你這毒婦竟也來(lái)了父泳?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吴汪,失蹤者是張志新(化名)和其女友劉穎惠窄,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體浇坐,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡睬捶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了近刘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擒贸。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖觉渴,靈堂內(nèi)的尸體忽然破棺而出介劫,到底是詐尸還是另有隱情,我是刑警寧澤案淋,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布座韵,位于F島的核電站,受9級(jí)特大地震影響踢京,放射性物質(zhì)發(fā)生泄漏誉碴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一瓣距、第九天 我趴在偏房一處隱蔽的房頂上張望黔帕。 院中可真熱鬧,春花似錦蹈丸、人聲如沸成黄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奋岁。三九已至思瘟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間闻伶,已是汗流浹背滨攻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蓝翰,地道東北人铡买。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像霎箍,于是被迫代替她去往敵國(guó)和親奇钞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容