大數(shù)據(jù)用戶畫像系統(tǒng)架構(gòu)設(shè)計(jì)

文章目錄

一畔濒、用戶畫像數(shù)據(jù)倉(cāng)庫(kù)搭建、數(shù)據(jù)抽取部分

二、大數(shù)據(jù)平臺(tái)稍浆、用戶畫像集市分層設(shè)計(jì)、處理

三猜嘱、離線計(jì)算部分

四衅枫、實(shí)時(shí)計(jì)算部分

五、Solr/ES搜索引擎部分

六朗伶、Java Web毫秒級(jí)實(shí)時(shí)用戶畫像接口服務(wù)

七弦撩、用戶畫像實(shí)時(shí)展示異步觸發(fā)獲取Web自助后臺(tái)

總結(jié)

用戶畫像是一個(gè)非常通用普遍使用的系統(tǒng),從我們的架構(gòu)圖中可以看出论皆,從數(shù)據(jù)計(jì)算時(shí)效性上來(lái)講分離線計(jì)算和實(shí)時(shí)計(jì)算益楼。離線計(jì)算一般是每天晚上全量計(jì)算所有用戶,或者按需把用戶數(shù)據(jù)發(fā)生變化的那批用戶重新計(jì)算点晴。離線計(jì)算主要是使用Hive SQL語(yǔ)句處理感凤、Spark數(shù)據(jù)處理、或者基于機(jī)器學(xué)習(xí)算法來(lái)算用戶忠誠(chéng)度模型粒督、用戶價(jià)值模型陪竿、用戶心理模型等。實(shí)時(shí)計(jì)算指定的通過(guò)Flume實(shí)時(shí)日志收集用戶行為數(shù)據(jù)傳輸?shù)終afka消息隊(duì)列屠橄,讓流計(jì)算框架Flink/Storm/SparkStreaming等去實(shí)時(shí)消費(fèi)處理用戶數(shù)據(jù)族跛,并觸發(fā)實(shí)時(shí)計(jì)算模型,計(jì)算完成后把新增的用戶畫像數(shù)據(jù)更新搜索索引锐墙。個(gè)性化推薦礁哄、運(yùn)營(yíng)推廣需要獲取某個(gè)或某些用戶畫像數(shù)據(jù)的時(shí)候直接可以毫秒級(jí)別從搜索索引里搜索出結(jié)果,快速返回給調(diào)用方數(shù)據(jù)溪北。這是從計(jì)算架構(gòu)大概分了兩條線離線處理和實(shí)時(shí)桐绒。

下面我們從上到下詳細(xì)看下每個(gè)架構(gòu)模塊如圖2.3所示:

圖2.3 用戶畫像系統(tǒng)架構(gòu)圖

一、用戶畫像數(shù)據(jù)倉(cāng)庫(kù)搭建刻盐、數(shù)據(jù)抽取部分

(1)收集和用戶畫像相關(guān)的Mysql業(yè)務(wù)數(shù)據(jù)庫(kù)每天增量抽取到Hadoop平臺(tái)掏膏,當(dāng)然第一次的時(shí)候需要全量的來(lái)做初始化,數(shù)據(jù)轉(zhuǎn)化工具可以用Sqoop敦锌,它可以分布式的批量導(dǎo)入數(shù)據(jù)到Hadoop的Hive馒疹;

(2)和用戶畫像相關(guān)的Flume分布式日志收集可以從各個(gè)Web服務(wù)器實(shí)時(shí)收集比如用戶行為、埋點(diǎn)數(shù)據(jù)等乙墙,可以指定source和sink直接把數(shù)據(jù)傳輸?shù)紿adoop平臺(tái)颖变。

二生均、大數(shù)據(jù)平臺(tái)、用戶畫像集市分層設(shè)計(jì)腥刹、處理

在大數(shù)據(jù)平臺(tái)建設(shè)用戶畫像相關(guān)的數(shù)據(jù)集市马胧,分層設(shè)計(jì),道理和推薦衔峰、搜索相似的佩脊。

三、離線計(jì)算部分

(1)Hive SQL可以對(duì)一部分用戶數(shù)據(jù)進(jìn)行計(jì)算垫卤,得到一部用戶畫像屬性威彰,如果是特別的復(fù)雜用戶屬性,比如需要用到機(jī)器學(xué)習(xí)的穴肘,我們可以用下面的Spark平臺(tái)來(lái)處理歇盼。

(2)Spark從Hadoop平臺(tái)加載用戶數(shù)據(jù)一個(gè)是進(jìn)行一部分?jǐn)?shù)據(jù)處理、另外用機(jī)器學(xué)習(xí)模算法來(lái)計(jì)算一些復(fù)雜的用戶屬性评抚,比如用戶忠誠(chéng)度模型豹缀、用戶價(jià)值模型、用戶心理模型等慨代,當(dāng)然這些模型也不一定用機(jī)器學(xué)習(xí)邢笙,用規(guī)則實(shí)現(xiàn)也是可以的。

(3)不管是用Hive SQL計(jì)算侍匙,還是用Spark來(lái)處理鸣剪,最終的用戶模型結(jié)果多會(huì)在Hadoop的Hive倉(cāng)庫(kù)存一份,然后會(huì)單獨(dú)寫一個(gè)Spark任務(wù)把這個(gè)用戶畫像模型加載更新到Solr或ES搜索索引里丈积,供線上接口實(shí)時(shí)調(diào)用獲取。另外Hadoop上面存的這份Hive用戶畫像表的數(shù)據(jù)也會(huì)根據(jù)公司的其他部門定制需求债鸡,按需異步的執(zhí)行Hive SQL然后落地到本地文件江滨,然后分發(fā)到需求方的服務(wù)器上,或者返回落地文件訪問(wèn)地址厌均,讓其它部門主動(dòng)wget這個(gè)文件數(shù)據(jù)唬滑。

四、實(shí)時(shí)計(jì)算部分

(1)Flume實(shí)時(shí)日志收集用戶行為數(shù)據(jù)傳輸?shù)終afka消息隊(duì)列棺弊,讓流計(jì)算框架Flink/Storm/SparkStreaming等去實(shí)時(shí)消費(fèi)處理用戶數(shù)據(jù)晶密,并觸發(fā)實(shí)時(shí)計(jì)算模型,計(jì)算完成后把新增的用戶畫像數(shù)據(jù)更新搜索索引模她。實(shí)時(shí)計(jì)算是按需計(jì)算稻艰,那個(gè)用戶行為有變化才會(huì)觸發(fā)計(jì)算,沒(méi)有變化用戶行為數(shù)據(jù)不會(huì)收集到消息隊(duì)列里侈净,自然也不會(huì)觸發(fā)計(jì)算尊勿。

(2)如果有需要實(shí)時(shí)計(jì)算完成后僧凤,除了更新Solr或ES索引,也可以更新到Hbase里面元扔,然后建一個(gè)Hive到Hbase的映射表躯保,就可以對(duì)Hbase里的實(shí)時(shí)用戶畫像數(shù)據(jù)做統(tǒng)計(jì)分析。當(dāng)然也可以Hbase Shell腳本澎语,但沒(méi)有Hive SQL方便靈活途事。

五、Solr/ES搜索引擎部分

這是毫秒級(jí)提供實(shí)時(shí)用戶畫像數(shù)據(jù)的核心擅羞,不但可以根據(jù)用戶ID來(lái)查詢尸变,而且能根據(jù)任意的定制查詢字段來(lái)精確的篩選。另外祟滴,因?yàn)槭撬阉饕嬲穸瑁匀豢梢酝ㄟ^(guò)關(guān)鍵詞來(lái)做一些模糊的相關(guān)度搜索。

六垄懂、Java Web毫秒級(jí)實(shí)時(shí)用戶畫像接口服務(wù)

(1)因?yàn)槲覀冇玫腟olr/ES搜索引擎骑晶,它們是用Java開發(fā)的,所以Web接口建議也使用Java來(lái)做草慧。

(2)這個(gè)Web接口是實(shí)時(shí)提供給需求方的桶蛔,比如推薦接口獲取某個(gè)用戶畫像的數(shù)據(jù)直接根據(jù)用戶ID就能幾毫秒內(nèi)把對(duì)應(yīng)的用戶畫像數(shù)據(jù)實(shí)時(shí)返回。當(dāng)然也可以根據(jù)其他篩選條件或指定關(guān)鍵詞搜索獲取topN前面幾個(gè)用戶畫像數(shù)據(jù)漫谷,注意這種方式不是把符合篩選條件的所有用戶數(shù)據(jù)返回仔雷,一般是前幾十或幾百個(gè)。最多的話一般一次就幾千舔示。太多的話碟婆,一個(gè)是慢,另一個(gè)是可能會(huì)把Web服務(wù)器比如Tomcat整掛了惕稻。

七竖共、用戶畫像實(shí)時(shí)展示異步觸發(fā)獲取Web自助后臺(tái)

(1)為什么說(shuō)這是個(gè)Web自助后臺(tái)呢?一般是這種應(yīng)用場(chǎng)景俺祠,運(yùn)營(yíng)團(tuán)隊(duì)要篩選一部分用戶做廣告投放公给,這個(gè)時(shí)候通過(guò)Web后臺(tái)指定篩選條件,點(diǎn)擊異步獲取蜘渣,然后這個(gè)異步獲取會(huì)觸發(fā)后臺(tái)異步指定Hive SQL或者其它比如Spark處理程序淌铐、Spark SQL等從用戶畫像集市里查詢出對(duì)應(yīng)的所有用戶集合,這個(gè)用戶集合會(huì)比較大蔫缸,不是幾千條腿准,一般是幾十萬(wàn)、幾百萬(wàn)這個(gè)量級(jí)捂龄,然后落地生成文件释涛。異步計(jì)算完成后會(huì)返回一個(gè)文件地址加叁,自助人員就可以把這個(gè)文件下載下來(lái)做后續(xù)的其他處理去了。

(2)什么叫實(shí)時(shí)展示異步觸發(fā)呢唇撬?實(shí)時(shí)展示指的是我篩選的那部分用戶它匕,可以先實(shí)時(shí)調(diào)用搜索結(jié)果先看下前面一些樣本數(shù)據(jù)如何,能返回多少個(gè)用戶窖认,這次推廣能有多少用戶觸達(dá)豫柬。因?yàn)檎{(diào)用搜索接口是毫秒級(jí)的在頁(yè)面上分頁(yè)展示數(shù)據(jù),很快能看到大概的一個(gè)效果扑浸。如果是異步獲取數(shù)據(jù)烧给,一般計(jì)算時(shí)間會(huì)很長(zhǎng),比如最少幾分鐘喝噪、甚至幾個(gè)小時(shí)等础嫡。執(zhí)行了這么久,不是自己想要的數(shù)據(jù)就白搞了酝惧。所以實(shí)時(shí)展示是快速驗(yàn)證下是不是自己想要的數(shù)據(jù)榴鼎,確定了再去異步大批量的獲取數(shù)據(jù)。

用戶畫像系統(tǒng)架構(gòu)基本上是這個(gè)架構(gòu)晚唇,每個(gè)公司大同小異巫财。用戶畫像系統(tǒng)是一個(gè)通用和核心的系統(tǒng),如果公司有預(yù)算的情況下哩陕,一般是安排一個(gè)用戶畫像小組專門負(fù)責(zé)這塊的研發(fā)平项。

從上面幾個(gè)系統(tǒng)的架構(gòu)大家也能看出來(lái),基于大數(shù)據(jù)的分布式人工智能應(yīng)用系統(tǒng)悍及,一般必須得掌握核心的Hadoop闽瓢、Hive、Hbase心赶、Spark等大數(shù)據(jù)平臺(tái)和框架鸳粉,分布式機(jī)器學(xué)習(xí)也是以它們?yōu)榛A(chǔ)的横浑,所以下面的章節(jié)專門講一下大數(shù)據(jù)基礎(chǔ)核心框架廷雅。

總結(jié)

除了大數(shù)據(jù)用戶畫像系統(tǒng)架構(gòu)設(shè)計(jì)

其它深度學(xué)習(xí)框架也有不錯(cuò)的開源實(shí)現(xiàn)祝峻,比如MXNet,后面請(qǐng)大家關(guān)注充電了么app弯汰,課程,微信群湖雹,更多內(nèi)容請(qǐng)看新書《分布式機(jī)器學(xué)習(xí)實(shí)戰(zhàn)(人工智能科學(xué)與技術(shù)叢書)》

【新書介紹】

《分布式機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》(人工智能科學(xué)與技術(shù)叢書)【陳敬雷編著】【清華大學(xué)出版社】

新書特色:深入淺出咏闪,逐步講解分布式機(jī)器學(xué)習(xí)的框架及應(yīng)用配套個(gè)性化推薦算法系統(tǒng)、人臉識(shí)別摔吏、對(duì)話機(jī)器人等實(shí)戰(zhàn)項(xiàng)目

【新書介紹視頻】

分布式機(jī)器學(xué)習(xí)實(shí)戰(zhàn)(人工智能科學(xué)與技術(shù)叢書)新書【陳敬雷】

視頻特色:重點(diǎn)對(duì)新書進(jìn)行介紹鸽嫂,最新前沿技術(shù)熱點(diǎn)剖析纵装,技術(shù)職業(yè)規(guī)劃建議!聽完此課你對(duì)人工智能領(lǐng)域?qū)⒂幸粋€(gè)嶄新的技術(shù)視野据某!職業(yè)發(fā)展也將有更加清晰的認(rèn)識(shí)橡娄!

【精品課程】

《分布式機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》大數(shù)據(jù)人工智能AI專家級(jí)精品課程

【免費(fèi)體驗(yàn)視頻】:

人工智能百萬(wàn)年薪成長(zhǎng)路線/從Python到最新熱點(diǎn)技術(shù)

從Python編程零基礎(chǔ)小白入門到人工智能高級(jí)實(shí)戰(zhàn)系列課

視頻特色: 本系列專家級(jí)精品課有對(duì)應(yīng)的配套書籍《分布式機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》,精品課和書籍可以互補(bǔ)式學(xué)習(xí)癣籽,彼此相互補(bǔ)充挽唉,大大提高了學(xué)習(xí)效率。本系列課和書籍是以分布式機(jī)器學(xué)習(xí)為主線筷狼,并對(duì)其依賴的大數(shù)據(jù)技術(shù)做了詳細(xì)介紹瓶籽,之后對(duì)目前主流的分布式機(jī)器學(xué)習(xí)框架和算法進(jìn)行重點(diǎn)講解,本系列課和書籍側(cè)重實(shí)戰(zhàn)埂材,最后講幾個(gè)工業(yè)級(jí)的系統(tǒng)實(shí)戰(zhàn)項(xiàng)目給大家塑顺。 課程核心內(nèi)容有互聯(lián)網(wǎng)公司大數(shù)據(jù)和人工智能那些事、大數(shù)據(jù)算法系統(tǒng)架構(gòu)俏险、大數(shù)據(jù)基礎(chǔ)严拒、Python編程、Java編程寡喝、Scala編程糙俗、Docker容器、Mahout分布式機(jī)器學(xué)習(xí)平臺(tái)预鬓、Spark分布式機(jī)器學(xué)習(xí)平臺(tái)巧骚、分布式深度學(xué)習(xí)框架和神經(jīng)網(wǎng)絡(luò)算法、自然語(yǔ)言處理算法格二、工業(yè)級(jí)完整系統(tǒng)實(shí)戰(zhàn)(推薦算法系統(tǒng)實(shí)戰(zhàn)劈彪、人臉識(shí)別實(shí)戰(zhàn)、對(duì)話機(jī)器人實(shí)戰(zhàn))顶猜、就業(yè)/面試技巧/職業(yè)生涯規(guī)劃/職業(yè)晉升指導(dǎo)等內(nèi)容沧奴。

【充電了么公司介紹】

充電了么App是專注上班族職業(yè)培訓(xùn)充電學(xué)習(xí)的在線教育平臺(tái)。

專注工作職業(yè)技能提升和學(xué)習(xí)长窄,提高工作效率滔吠,帶來(lái)經(jīng)濟(jì)效益!今天你充電了么挠日?

充電了么官網(wǎng)

http://www.chongdianleme.com/

充電了么App官網(wǎng)下載地址

https://a.app.qq.com/o/simple.jsp?pkgname=com.charged.app

功能特色如下:

【全行業(yè)職位】 - 專注職場(chǎng)上班族職業(yè)技能提升

覆蓋所有行業(yè)和職位疮绷,不管你是上班族,高管嚣潜,還是創(chuàng)業(yè)都有你要學(xué)習(xí)的視頻和文章冬骚。其中大數(shù)據(jù)智能AI、區(qū)塊鏈、深度學(xué)習(xí)是互聯(lián)網(wǎng)一線工業(yè)級(jí)的實(shí)戰(zhàn)經(jīng)驗(yàn)只冻。

除了專業(yè)技能學(xué)習(xí)庇麦,還有通用職場(chǎng)技能,比如企業(yè)管理喜德、股權(quán)激勵(lì)和設(shè)計(jì)山橄、職業(yè)生涯規(guī)劃、社交禮儀住诸、溝通技巧驾胆、演講技巧、開會(huì)技巧贱呐、發(fā)郵件技巧丧诺、工作壓力如何放松、人脈關(guān)系等等奄薇,全方位提高你的專業(yè)水平和整體素質(zhì)驳阎。

【牛人課堂】 - 學(xué)習(xí)牛人的工作經(jīng)驗(yàn)

1.智能個(gè)性化引擎:

海量視頻課程,覆蓋所有行業(yè)馁蒂、所有職位呵晚,通過(guò)不同行業(yè)職位的技能詞偏好挖掘分析,智能匹配你目前職位最感興趣的技能學(xué)習(xí)課程沫屡。

2.聽課全網(wǎng)搜索

輸入關(guān)鍵詞搜索海量視頻課程饵隙,應(yīng)有盡有,總有適合你的課程沮脖。

3.聽課播放詳情

視頻播放詳情金矛,除了播放當(dāng)前視頻,更有相關(guān)視頻課程和文章閱讀勺届,對(duì)某個(gè)技能知識(shí)點(diǎn)強(qiáng)化驶俊,讓你輕松成為某個(gè)領(lǐng)域的資深專家。

【精品閱讀】 - 技能文章興趣閱讀

1.個(gè)性化閱讀引擎:

千萬(wàn)級(jí)文章閱讀免姿,覆蓋所有行業(yè)饼酿、所有職位,通過(guò)不同行業(yè)職位的技能詞偏好挖掘分析胚膊,智能匹配你目前職位最感興趣的技能學(xué)習(xí)文章故俐。

2.閱讀全網(wǎng)搜索

輸入關(guān)鍵詞搜索海量文章閱讀,應(yīng)有盡有紊婉,總有你感興趣的技能學(xué)習(xí)文章购披。

【機(jī)器人老師】 - 個(gè)人提升趣味學(xué)習(xí)

基于搜索引擎和智能深度學(xué)習(xí)訓(xùn)練,為您打造更懂你的機(jī)器人老師肩榕,用自然語(yǔ)言和機(jī)器人老師聊天學(xué)習(xí),寓教于樂(lè),高效學(xué)習(xí)株汉,快樂(lè)人生筐乳。

【精短課程】 - 高效學(xué)習(xí)知識(shí)

海量精短牛人課程,滿足你的時(shí)間碎片化學(xué)習(xí)乔妈,快速提高某個(gè)技能知識(shí)點(diǎn)蝙云。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市路召,隨后出現(xiàn)的幾起案子勃刨,更是在濱河造成了極大的恐慌,老刑警劉巖股淡,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件身隐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡唯灵,警方通過(guò)查閱死者的電腦和手機(jī)贾铝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)埠帕,“玉大人垢揩,你說(shuō)我怎么就攤上這事×泊桑” “怎么了叁巨?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)呐籽。 經(jīng)常有香客問(wèn)我锋勺,道長(zhǎng),這世上最難降的妖魔是什么绝淡? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任宙刘,我火速辦了婚禮,結(jié)果婚禮上牢酵,老公的妹妹穿的比我還像新娘悬包。我一直安慰自己,他們只是感情好馍乙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布布近。 她就那樣靜靜地躺著,像睡著了一般丝格。 火紅的嫁衣襯著肌膚如雪撑瞧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天显蝌,我揣著相機(jī)與錄音预伺,去河邊找鬼订咸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛酬诀,可吹牛的內(nèi)容都是我干的脏嚷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瞒御,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼父叙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起肴裙,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤趾唱,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蜻懦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甜癞,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年阻肩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了带欢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烤惊,死狀恐怖乔煞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情柒室,我是刑警寧澤渡贾,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站雄右,受9級(jí)特大地震影響空骚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜擂仍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一囤屹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逢渔,春花似錦肋坚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至盲赊,卻和暖如春铣鹏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哀蘑。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工诚卸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留葵第,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓合溺,卻偏偏與公主長(zhǎng)得像羹幸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辫愉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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