實(shí)戰(zhàn)回顧:蘇寧金融營銷系統(tǒng)的重構(gòu)之路

轉(zhuǎn)載字?聊聊架構(gòu)?微信公眾號

蘇寧集團(tuán)業(yè)務(wù)涉獵非常廣,主要包括:蘇寧易購里初,蘇寧金融啃勉,蘇寧體育,蘇寧文創(chuàng)双妨,蘇寧置業(yè)淮阐,蘇寧門店等業(yè)務(wù)領(lǐng)域叮阅。本文所闡述的是從 2015 年至今,蘇寧金融營銷系統(tǒng)的發(fā)展歷程泣特。蘇寧金融營銷系統(tǒng)不僅支撐了蘇寧金融營銷業(yè)務(wù)浩姥,也支撐了蘇寧易購,蘇寧體育状您,蘇寧門店等部分營銷業(yè)務(wù)勒叠。

一切源頭:業(yè)務(wù)發(fā)展

2015 年至今,為了適應(yīng)蘇寧集團(tuán)的發(fā)展膏孟,蘇寧金融營銷業(yè)務(wù)方陸續(xù)提出了很多目標(biāo)眯分。

可以總結(jié)為五大功能目標(biāo):

建立營銷活動全流程的閉環(huán)管控。

現(xiàn)有的滿減柒桑,立減弊决,返券等促銷形式遠(yuǎn)不夠,支持更多的營銷形式魁淳。

實(shí)現(xiàn)營銷活動數(shù)據(jù)可視化飘诗。

實(shí)現(xiàn)從活動申請、預(yù)算先改、結(jié)算疚察、到效果評估的自動化。

與蘇寧易購仇奶,蘇寧體育貌嫡,蘇寧門店等進(jìn)行深度配合。

為了適應(yīng)業(yè)務(wù)的發(fā)展该溯,解決業(yè)務(wù)的需求岛抄,我們團(tuán)隊開啟了蘇寧金融營銷系統(tǒng)重構(gòu)之路。

混沌時代:蘇寧金融營銷系統(tǒng)架構(gòu) V1.0

2015 年狈茉,系統(tǒng)架構(gòu) V1.0 時代夫椭,蘇寧金融營銷系統(tǒng)包括:促銷服務(wù)、電子券服務(wù)氯庆、任務(wù)服務(wù)蹭秋。

促銷服務(wù):提供促銷活動查詢、扣減堤撵、管理仁讨、規(guī)則處理、活動配置等功能实昨。

電子券服務(wù):提供電子券管理洞豁、查詢、使用、退券丈挟、規(guī)則處理刁卜、活動配置等功能。

任務(wù)服務(wù):提供判斷用戶是否滿足任務(wù)的規(guī)則曙咽,且事后發(fā)放營銷福利的功能蛔趴。

經(jīng)過梳理上述系統(tǒng)的上下文,應(yīng)用架構(gòu)例朱,核心功能夺脾。針對架構(gòu)方面分析出如下問題:

1. 職責(zé)不清晰。

當(dāng)時系統(tǒng)架構(gòu)茉继,電子券服務(wù)與促銷服務(wù)咧叭,互相調(diào)用,兩者的上下游系統(tǒng)基本一致烁竭。其實(shí)電子券服務(wù)和促銷服務(wù)都是一種營銷“實(shí)體”菲茬,它們只需要具備“實(shí)體”管理的基本功能,而且相對獨(dú)立派撕,各自為政婉弹。

2. 缺乏統(tǒng)一的活動管理。

當(dāng)時系統(tǒng)架構(gòu)终吼,電子券服務(wù)和促銷服務(wù)都包含活動管理和配置镀赌,并且分散管理。

這種情況下际跪,無法滿足活動全流程閉環(huán)管控商佛,活動申請、預(yù)算控制等需求姆打。

3. 缺乏營銷數(shù)據(jù)分析良姆。

當(dāng)時系統(tǒng)架構(gòu),所有的營銷行為數(shù)據(jù)都未記錄幔戏,或者是分散記錄玛追。

這種情況下,無法滿足營銷數(shù)據(jù)可視化闲延,活動效果數(shù)據(jù)分析等需求痊剖。

規(guī)則引擎引發(fā)的“血案”。

規(guī)則引擎及規(guī)則資格校驗(yàn)是一個計算資源消耗非常大的功能垒玲。營銷前臺陆馁、促銷服務(wù)、電子券侍匙、任務(wù)服務(wù)都包含此功能氮惯。隨著活動形式的持續(xù)增長,消耗的計算資源也持續(xù)上升想暗。多個系統(tǒng)同時申請資源妇汗,導(dǎo)致資源的浪費(fèi)。尤其是 818说莫、1111 大促期間杨箭。資源申請需要與資源管理部進(jìn)行博弈,有時會引發(fā)‘血案’储狭。

大刀闊斧:蘇寧金融營銷系統(tǒng)架構(gòu) V2.0

對癥下藥

2015 年至今互婿,針對系統(tǒng)架構(gòu)問題,系統(tǒng)不斷的迭代辽狈,我們采用了很多針對性的解決方法慈参。

1. 分工明確化。

電子券服務(wù)和促銷服務(wù)作為一種營銷“實(shí)體”刮萌,它們只需要具備“實(shí)體”管理的基本功能驮配,而且相對獨(dú)立。在它們的上層抽出一個統(tǒng)一營銷服務(wù)着茸,統(tǒng)一的對外服務(wù)壮锻。

2. 建設(shè)統(tǒng)一活動中心。

建設(shè)統(tǒng)一活動中心涮阔,包括:營銷活動管理猜绣、營銷活動審批、預(yù)算管控敬特、促銷狀態(tài)管理掰邢、促銷結(jié)算等。滿足活動全流程閉環(huán)管控伟阔,活動申請尸变、預(yù)算控制等需求。

3. 建設(shè)營銷數(shù)據(jù)中心减俏。

建設(shè)營銷數(shù)據(jù)中心恤煞,包括:營銷行為數(shù)據(jù)都采集,存儲茅姜,分析桩匪,報表。滿足營銷數(shù)據(jù)可視化历筝,活動效果數(shù)據(jù)分析等需求酗昼。

4. 拆分出規(guī)則引擎。

獨(dú)立的規(guī)則引擎系統(tǒng)梳猪,承載上游所有促銷形式的規(guī)則計算麻削,節(jié)省資源蒸痹。

整體“藥方”

現(xiàn)在,蘇寧金融營銷系統(tǒng)架構(gòu) V2.0 時代呛哟,總體架構(gòu)圖如下叠荠,蘇寧金融營銷系統(tǒng)以整體的形式一致對外服務(wù),不再是“單干”扫责。

圖 1:整體系統(tǒng)架構(gòu) V2.0

核心系統(tǒng)包括:營銷統(tǒng)一服務(wù)榛鼎、促銷服務(wù)、電子券服務(wù)鳖孤、任務(wù)服務(wù)者娱、商品詳情頁促銷前置服務(wù)、營銷規(guī)則引擎苏揣、營銷規(guī)則資格校驗(yàn)黄鳍、營銷活動中心、營銷數(shù)據(jù)中心平匈。

營銷統(tǒng)一服務(wù):促銷查詢际起、扣減;電子券查詢吐葱、使用街望、退券等統(tǒng)一對外服務(wù)。

促銷服務(wù):提供促銷活動查詢弟跑、扣減等功能灾前。

電子券服務(wù):提供電子券管理、查詢孟辑、使用哎甲、退券等功能。

任務(wù)服務(wù):提供判斷用戶是否滿足任務(wù)的規(guī)則饲嗽,且事后發(fā)放營銷福利的功能炭玫。

商品詳情頁促銷前置服務(wù):應(yīng)對流量較高的商品詳情頁、搜索等頁面提供的促銷查詢服務(wù)貌虾。

營銷規(guī)則引擎:提供促銷吞加、電子券、任務(wù)等規(guī)則引擎處理服務(wù)

營銷規(guī)則資格校驗(yàn):提供促銷尽狠、電子券衔憨、任務(wù)等規(guī)則資格校驗(yàn)服務(wù)

營銷活動中心:包括營銷活動管理、營銷活動審批袄膏、預(yù)算管控践图、促銷狀態(tài)管理、促銷結(jié)算沉馆、規(guī)則分發(fā)码党、促銷活動下發(fā)德崭。

部分系統(tǒng)上下文如下:

圖 2:統(tǒng)一營銷服務(wù)系統(tǒng)上下文 V2.0

圖 3: 任務(wù)服務(wù)系統(tǒng)上下文 V2.0

圖 4: 商品詳情頁促銷前置服務(wù)系統(tǒng)上下文 V2.0

各個突破:解決問題的方法論

自蘇寧金融營銷系統(tǒng)建立以來,尤其是 2015 年開始至今揖盘,業(yè)務(wù)迅猛發(fā)展眉厨,團(tuán)隊在實(shí)際系統(tǒng)運(yùn)行過程中,遇到了不少麻煩扣讼,但我們的小伙伴堅忍不拔,各個突破缨叫,讓系統(tǒng)穩(wěn)定的度過每個大促節(jié)點(diǎn)椭符。

1. 用戶流量上升,活動種類增加耻姥,導(dǎo)致規(guī)則引擎與資格校驗(yàn)性能下降

2015 年销钝,同一時間同時生效的營銷活動已經(jīng)接近 300 個。由于蘇寧集團(tuán)業(yè)務(wù)復(fù)雜琐簇,涉及線上蒸健,線下。因此婉商,業(yè)務(wù)的活動種類訴求會越來越多似忧。另一方面,蘇寧金融與蘇寧易購合作之后丈秩,用戶訪問量爆發(fā)性增長盯捌,業(yè)務(wù)及產(chǎn)品層面上,越來越重視用戶體驗(yàn)蘑秽。

2015 年饺著,蘇寧金融營銷系統(tǒng)架構(gòu) V1.0 時代,未對營銷場景做細(xì)致的區(qū)分肠牲,導(dǎo)致每次匹配相關(guān)規(guī)則是全量匹配幼衰,全量匹配結(jié)束后的資格校驗(yàn)也是全量校驗(yàn),導(dǎo)致單人次請求后缀雳,系統(tǒng)過濾規(guī)則數(shù)據(jù)量較大渡嚣,并且校驗(yàn)次數(shù)增多,特別是大促中活動增加的情況肥印,單次用戶請求严拒,規(guī)則校驗(yàn)平均需要執(zhí)行大約 1000 次以上方能匹配到用戶實(shí)際能夠享受的營銷活動信息。

圖 5:營銷活動規(guī)則校驗(yàn)流程 V1.0

另外竖独,規(guī)則引擎和資格校驗(yàn)服務(wù)未獨(dú)立裤唠,促銷服務(wù)、電子券服務(wù)莹痢、任務(wù)服務(wù)只能不斷通過橫向擴(kuò)容种蘸,提高系統(tǒng)并發(fā)能力墓赴。顯然這樣做,一方面資源浪費(fèi)航瞭,另一方面當(dāng)活動種類增加后诫硕,單機(jī)的計算耗時上升,橫向擴(kuò)容能夠提升的并發(fā)能力有限刊侯。

現(xiàn)在章办,蘇寧金融營銷系統(tǒng)架構(gòu) V2.0 時代,統(tǒng)一活動中心配置營銷活動滨彻,且區(qū)分實(shí)時營銷藕届、事后營銷(任務(wù)),同時區(qū)分線上活動亭饵、線下活動休偶、全渠道活動。規(guī)則服務(wù)在接收營銷活動配置后根據(jù)相關(guān)配置來生成不同的規(guī)則文件辜羊,以此減少規(guī)則匹配中的數(shù)據(jù)量問題踏兜,并且根據(jù)不同類型和渠道分開存儲資格校驗(yàn)數(shù)據(jù)。統(tǒng)一營銷服務(wù)和任務(wù)服務(wù)統(tǒng)一對外服務(wù)八秃,請求數(shù)據(jù)區(qū)分系統(tǒng)碱妆、及區(qū)分線上、線下活動昔驱,降低規(guī)則匹配和資格校驗(yàn)的復(fù)雜度山橄。

當(dāng)然在系統(tǒng)架構(gòu)層面上,還有規(guī)則服務(wù)獨(dú)立舍悯。規(guī)則服務(wù)的資源擴(kuò)容航棱,完全根據(jù)規(guī)則的性能需求。

圖 6:營銷活動規(guī)則校驗(yàn)流程 V2.0

2. 活動總數(shù)的校驗(yàn)存在數(shù)據(jù)熱點(diǎn)問題

2016 年萌衬,蘇寧金融營銷系統(tǒng)架構(gòu) V1.0 時代饮醇,有些活動允許所有會員參與,但有總次數(shù)秕豫、金額限制朴艰。這種類型的活動,每次用戶請求必須校驗(yàn)混移,為了避免數(shù)據(jù)不一致性祠墅,總次數(shù)、金額需要集中存儲歌径,根據(jù) key= 活動 ID 存儲到某臺緩存設(shè)備毁嗦,一旦活動訪問流量比較大,那么就會導(dǎo)致緩存熱點(diǎn)問題回铛。還有些配置了月次數(shù)狗准、金額克锣;周次數(shù)、金額腔长;日次數(shù)袭祟、金額的活動,均會出現(xiàn)緩存熱點(diǎn)問題捞附。

現(xiàn)在巾乳,蘇寧金融營銷系統(tǒng)架構(gòu) V2.0 時代,緩存設(shè)備申請一主兩從多組方式鸟召,并且設(shè)置 slave 參與讀模式減少讀取熱點(diǎn)胆绊,而且通過類型及渠道的緩存分組,提高系統(tǒng)整體的緩存服務(wù)能力药版。

圖 7:數(shù)據(jù)熱點(diǎn)解決方案 V2.0

3. 面向會員的 6 個唯一資格校驗(yàn)問題

2016 年辑舷,蘇寧金融營銷系統(tǒng)架構(gòu) V1.0 時代喻犁,參與營銷活動的會員的唯一校驗(yàn)槽片,活動參與次數(shù)限定到個人。手機(jī)號肢础、帳號还栓、設(shè)備、身份證传轰、銀行卡剩盒、銀行綁定手機(jī)號。

針對此種校驗(yàn)慨蛙,單次請求數(shù)據(jù) 6 個唯一條件都需要一一進(jìn)行判斷辽聊,這樣就對同一個活動增加了跟緩存交互次數(shù)∑谄叮活動越多跟匆、應(yīng)用跟緩存交互次數(shù)越多,耗時就越長通砍,系統(tǒng)性能必然降低。同時為了保證相關(guān)唯一校驗(yàn)的可靠性封孙,系統(tǒng)在處理中還對唯一數(shù)據(jù)入庫處理,增加了系統(tǒng)負(fù)擔(dān)虎忌。

現(xiàn)在泡徙,系統(tǒng)架構(gòu) V2.0 時代锋勺,通過合并請求蚀瘸,同一個活動相關(guān)的唯一性查詢進(jìn)行合并庶橱,減少跟緩存的請求次數(shù),且應(yīng)用的緩存采用持久化策略苏章。

4. 活動存儲數(shù)據(jù)已經(jīng)約 1 億

2017 年,蘇寧金融營銷系統(tǒng)架構(gòu) V1.0 時代枫绅,做了分表處理,由于營銷活動較多并淋,用戶使用較多。促銷活動雖然做了歷史數(shù)據(jù)規(guī)整處理县耽,但仍然存在單表數(shù)據(jù)量過大問題,導(dǎo)致對表操作產(chǎn)出性能瓶頸兔毙;尤其是撤銷支付功能。撤銷支付功能為了能取消用戶占用資格澎剥,還需要對用戶占用的資格數(shù)據(jù)進(jìn)行回退,那么撤銷操作會涉及歷史表哑姚,而歷史表數(shù)據(jù)量非常大,已經(jīng)約 1 億叙量,因此影響到整體的性能。

現(xiàn)在宛乃,蘇寧金融營銷系統(tǒng)架構(gòu) V2.0 時代,活動業(yè)務(wù)數(shù)據(jù)進(jìn)行業(yè)務(wù)分庫分表操作(大約分為 10 個庫征炼,約 2000 張表),通過這樣的分配減少單表數(shù)據(jù)量谆奥,提高數(shù)據(jù)庫并發(fā)處理能力眼坏。

圖 8:數(shù)據(jù)存儲分片方案 V2.0

底盤扎實(shí):完善的基礎(chǔ)設(shè)施

2015 年至今,蘇寧金融營銷系統(tǒng)重構(gòu)宰译,居于微服務(wù)架構(gòu)思路檐蚜。對于微服務(wù)架構(gòu),有人認(rèn)為是銀彈沿侈,有人認(rèn)為是焦油坑闯第。

認(rèn)為是焦油坑的人,一般都陷入微服務(wù)架構(gòu)的幾個坑缀拭,第一咳短,服務(wù)數(shù)量太多,團(tuán)結(jié)效率下降蛛淋;第二咙好,調(diào)用鏈路太長,性能下降褐荷;第三勾效,調(diào)用鏈太長,問題定位困難叛甫;第四层宫,沒有自動化支持,無法快速交付合溺∽涿埽總之缀台,基礎(chǔ)設(shè)施不健全棠赛。

幸運(yùn)的是,對于蘇寧金融團(tuán)隊來說膛腐,微服務(wù)架構(gòu)被認(rèn)為是銀彈睛约。這得歸功于蘇寧金融研發(fā)團(tuán)隊小伙伴們,提供了完整的基礎(chǔ)設(shè)施哲身,公共組件辩涝,基礎(chǔ)服務(wù),中間件勘天;解決了微服務(wù)的坑怔揩。

簡單介紹下蘇寧具備的微服務(wù)基礎(chǔ)設(shè)施:

自動化測試:蛙測

自動化部署(持續(xù)交付):蘇寧開放云

配置中心:SCM

接口框架: 魔客平臺

API 網(wǎng)關(guān):金融一站式網(wǎng)關(guān)

服務(wù)發(fā)現(xiàn)、服務(wù)路由脯丝、服務(wù)容錯商膊、服務(wù)調(diào)用:RSF

服務(wù)監(jiān)控:穆加、紫金大盤

服務(wù)跟蹤:穆加

服務(wù)安全:金融開放平臺

展望未來

2017 年 -2018 年初蘇寧提出了數(shù)據(jù)驅(qū)動經(jīng)營戰(zhàn)略宠进。蘇寧金融營銷系統(tǒng)也沿著這個思路發(fā)展晕拆,規(guī)劃系統(tǒng)的發(fā)展方向,未來規(guī)劃包含:營銷流程全閉環(huán)材蹬,營銷過程實(shí)時數(shù)據(jù),智能報表昆庇,營銷數(shù)據(jù)挖掘,營銷活動推薦未舟,營銷活動預(yù)算自控掂为。

圖 9 展望未來

作者介紹

王清平勇哗,蘇寧金融研發(fā)中心資深架構(gòu)師欲诺,精通微服務(wù)架構(gòu)模式,熟悉 Java 領(lǐng)域技術(shù)架構(gòu)蛹含。在廣告塞颁、營銷祠锣、電商領(lǐng)域的技術(shù)研發(fā)、架構(gòu)設(shè)計等方面擁有多年實(shí)戰(zhàn)經(jīng)驗(yàn)蓬推,擅長提升系統(tǒng)的高可用沸伏,高性能动分,擴(kuò)展性等能力〈汤玻現(xiàn)在主要負(fù)責(zé)蘇寧金融會員及互聯(lián)網(wǎng)研發(fā)中心的應(yīng)用架構(gòu)與技術(shù)架構(gòu)工作。

王海民蜕青,蘇寧金融研發(fā)中心高級技術(shù)經(jīng)理右核,主要負(fù)責(zé)蘇寧金融會員及互聯(lián)網(wǎng)研發(fā)中心的營銷部門工作。具有營銷贺喝、電商躏鱼、支付、金融等相關(guān)領(lǐng)域 10 年以上工作經(jīng)歷鹊漠;擅長互聯(lián)網(wǎng)產(chǎn)品服務(wù)端應(yīng)用技術(shù)架構(gòu)躯概。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娶靡,一起剝皮案震驚了整個濱河市看锉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌艾凯,老刑警劉巖懂傀,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹬蚁,死亡現(xiàn)場離奇詭異犀斋,居然都是意外死亡叽粹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門锤灿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來但校,“玉大人状囱,你說我怎么就攤上這事倘是⊥ぜ希” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵搀崭,是天一觀的道長。 經(jīng)常有香客問我宣鄙,道長冻晤,這世上最難降的妖魔是什么绸吸? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任锦茁,我火速辦了婚禮,結(jié)果婚禮上度帮,老公的妹妹穿的比我還像新娘稿存。我一直安慰自己瓣履,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布冕臭。 她就那樣靜靜地躺著,像睡著了一般丘喻。 火紅的嫁衣襯著肌膚如雪念颈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天嗡靡,我揣著相機(jī)與錄音讨彼,去河邊找鬼柿祈。 笑死,一個胖子當(dāng)著我的面吹牛蜜自,可吹牛的內(nèi)容都是我干的重荠。 我是一名探鬼主播虚茶,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼婆殿!你這毒婦竟也來了罩扇?” 一聲冷哼從身側(cè)響起暮蹂,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后滩届,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浓体,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年辈讶,在試婚紗的時候發(fā)現(xiàn)自己被綠了贱除。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡碍讯,死狀恐怖扯躺,靈堂內(nèi)的尸體忽然破棺而出录语,到底是詐尸還是另有隱情,我是刑警寧澤逗栽,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布失暂,位于F島的核電站弟塞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏摧冀。R本人自食惡果不足惜系宫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一扩借、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧康谆,春花似錦、人聲如沸沃暗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唬涧。三九已至爵卒,卻和暖如春撵彻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陌僵。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工受葛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留偎谁,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓闰渔,卻偏偏與公主長得像冈涧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子督弓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

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