愛奇藝微服務(wù)監(jiān)控的探索與實(shí)踐

文章來源于公眾號(hào)愛奇藝技術(shù)產(chǎn)品團(tuán)隊(duì) 咱旱,作者隨刻信息流團(tuán)隊(duì)

背景&初探

經(jīng)過一年多的野蠻生長(zhǎng)更鲁,信息流團(tuán)隊(duì)微服務(wù)發(fā)展快速搬素,人均負(fù)責(zé)5個(gè)微服務(wù)以上呵晨,為了全面了解每個(gè)微服務(wù)運(yùn)行情況,第一時(shí)間感知微服務(wù)異常熬尺,快速定位線上問題摸屠,提高運(yùn)維效率,微服務(wù)建設(shè)初期我們嘗試了多種監(jiān)控方案粱哼。

這個(gè)階段季二,我們對(duì)微服務(wù)監(jiān)控缺少系統(tǒng)的理論認(rèn)知和實(shí)踐經(jīng)驗(yàn),所以更多是對(duì)已有的監(jiān)控基礎(chǔ)設(shè)施和框架低成本的整合和適配。下面分別從日志監(jiān)控胯舷,Hystrix監(jiān)控刻蚯,Actuator監(jiān)控,撥測(cè)監(jiān)控5個(gè)方面介紹桑嘶。

日志監(jiān)控

基于日志的監(jiān)控方案炊汹,原理如下圖,業(yè)界技術(shù)方案成熟(例ELK)逃顶,公司也提供了通用解決方案(Venus)讨便,容易落地。缺點(diǎn)是以政,日志監(jiān)控鏈路較長(zhǎng)霸褒,延遲時(shí)間大,報(bào)警可能不夠及時(shí)盈蛮。

image

Hystrix監(jiān)控

很長(zhǎng)一段時(shí)間Hystrix是服務(wù)熔斷降級(jí)監(jiān)控的代名詞废菱,Spring Cloud應(yīng)用中使用hystrix極致易用,從低成本埋點(diǎn)眉反,到配置動(dòng)態(tài)調(diào)整昙啄,再到原生的可視化Dashboard穆役,使用成本都很低寸五。缺點(diǎn)是,指標(biāo)數(shù)據(jù)原生沒有持久化耿币,二次開發(fā)有一定成本梳杏。

下圖描述基于Hystrix監(jiān)控的方案。

image

Actuator 監(jiān)控
Actuator端點(diǎn)是Spring Boot應(yīng)用開發(fā)者的最大福利之一淹接,可以零成本了解單實(shí)例運(yùn)行情況十性。缺點(diǎn)是,同服務(wù)多實(shí)例指標(biāo)聚合塑悼,指標(biāo)持久化劲适,指標(biāo)時(shí)序可視化,都需要二次開發(fā)厢蒜。下圖描述Actuator端點(diǎn)監(jiān)控的方案霞势。

image

撥測(cè)監(jiān)控

對(duì)于面向用戶的服務(wù),用戶所處網(wǎng)絡(luò)斑鸦,地域差異性很大愕贡,應(yīng)用本身可用不代表用戶可以正常使用服務(wù),這就需要從用戶角度巷屿,對(duì)服務(wù)可用性進(jìn)行定時(shí)撥測(cè)固以。

下圖描述撥測(cè)監(jiān)控的方案,主要包括微服務(wù)實(shí)例自發(fā)的健康檢查和各撥測(cè)點(diǎn)定時(shí)撥測(cè)。

image

鏈路監(jiān)控

鏈路監(jiān)控既可用于調(diào)用鏈路分析憨琳,快速定位具體問題诫钓,又可用于梳理服務(wù)拓?fù)浣Y(jié)構(gòu)和依賴合理性,是微服務(wù)監(jiān)控必不可少的一環(huán)篙螟。

我們使用公司服務(wù)云提供的日志收集組件Venus(如前所述)和鏈路跟蹤組件Rover(基于Skywalking+Brave)實(shí)現(xiàn)該功能尖坤。實(shí)現(xiàn)方案如下圖所示。

image

其中闲擦,接入固定成本表示為引入相應(yīng)監(jiān)控而產(chǎn)生的一次性固定投入慢味,包括學(xué)習(xí)調(diào)研,二次開發(fā)墅冷,集成適配等成本纯路。接入邊際成本表示每新增一個(gè)微服務(wù)或一個(gè)監(jiān)控指標(biāo),新產(chǎn)生的開發(fā)配置成本寞忿。幾種監(jiān)控方案對(duì)比和適用場(chǎng)景如下表所示驰唬。

| 監(jiān)控類型 |

接入固

定成本

|

接入邊

際成本

| 時(shí)效性 |

持久化

可追溯

| 適用場(chǎng)景 |
| 日志監(jiān)控 |

極低

基于現(xiàn)有日志收集系統(tǒng)

| 中腔彰,日志埋點(diǎn)叫编、解析有一定成本 | 秒級(jí),鏈路長(zhǎng)霹抛,有時(shí)延遲較大 | 日志持久化搓逾,可查看歷史 | 時(shí)效性要求不高的監(jiān)控;具體問題排查 |
|

Hystrix

監(jiān)控

|

杯拐,

需要部署Hystrix Dashboard

| 低,簡(jiǎn)單配置 | 秒級(jí) | 需二次開發(fā) | 依賴接口實(shí)時(shí)監(jiān)控端逼;熔斷降級(jí) |
|

Actuator

監(jiān)控

| 朗兵,需要部署Spring Boot Admin | 無,應(yīng)用內(nèi)置 | 秒級(jí) | 需二次開發(fā) | 單實(shí)例指標(biāo)查看 |
| 撥測(cè)監(jiān)控 | 顶滩,基于公司云撥測(cè)服務(wù) | 低余掖,簡(jiǎn)單配置 | 分鐘級(jí),取決于撥測(cè)間隔 | 有報(bào)警歷史 | 面向用戶服務(wù)可用性定時(shí)撥測(cè) |
| 鏈路監(jiān)控 | 礁鲁,需要適配各種中間件 | 低盐欺,簡(jiǎn)單配置 | 秒級(jí),依賴日志流 | 可以 | 跨系統(tǒng)調(diào)用鏈路分析 |

演進(jìn)&實(shí)踐

如上所述救氯,我們?cè)谖⒎?wù)監(jiān)控建設(shè)初期嘗試了多種監(jiān)控方案找田,實(shí)現(xiàn)了不同場(chǎng)景下的監(jiān)控需求,也遇到了新的問題着憨。概括起來墩衙,有以下幾個(gè):

? 缺少對(duì)監(jiān)控項(xiàng)的統(tǒng)一認(rèn)知和定義

? 重復(fù)性埋點(diǎn)配置工作,監(jiān)控成本高

? 各種監(jiān)控方案簡(jiǎn)單組合,可視化分散漆改,報(bào)警不統(tǒng)一

? 日志監(jiān)控心铃,報(bào)警時(shí)效性無保障

比如,每新增一個(gè)監(jiān)控指標(biāo)挫剑,需要把接入去扣,埋點(diǎn),可視化樊破,報(bào)警愉棱,從頭來一遍,隨著微服務(wù)和指標(biāo)增加哲戚,這種重復(fù)性工作嚴(yán)重制約了監(jiān)控體系的推廣落地奔滑。特別是metrics監(jiān)控,指標(biāo)繁雜顺少,維度多變朋其,應(yīng)用廣泛。

為此脆炎,建設(shè)一套監(jiān)控模型統(tǒng)一梅猿,接入成本低,可視化集中管理秒裕,報(bào)警時(shí)效性高袱蚓,監(jiān)控指標(biāo)全面的微服務(wù)監(jiān)控體系勢(shì)在必行。下面著重介紹信息流監(jiān)控系統(tǒng)針對(duì)metrics監(jiān)控的實(shí)踐簇爆。

image

信息流Metrics監(jiān)控在Prometheus基礎(chǔ)上癞松,以構(gòu)建簡(jiǎn)單易用的監(jiān)控系統(tǒng)為目標(biāo)爽撒,對(duì)Spring Cloud框架進(jìn)行適配整合和定制開發(fā)入蛆。整體結(jié)構(gòu)如上圖,我們主要做了以下工作硕勿。

監(jiān)控模型

監(jiān)控指標(biāo)是監(jiān)控系統(tǒng)的基本對(duì)象哨毁,監(jiān)控哪些指標(biāo),如何定義描述這些指標(biāo)源武,是首要解決的問題扼褪。我們通過引入指標(biāo)-維度-數(shù)值多維度數(shù)據(jù)模型,對(duì)常用監(jiān)控指標(biāo)和維度進(jìn)行梳理和定義粱栖,形成對(duì)監(jiān)控對(duì)象的統(tǒng)一描述和共識(shí)话浇,為后續(xù)實(shí)現(xiàn)維度靈活聚合、定義統(tǒng)一的可視化模板和報(bào)警模板奠定基礎(chǔ)闹究。通用指標(biāo)定義:

| 指標(biāo) | 說明 |
| QPS | 系統(tǒng)每秒處理業(yè)務(wù)請(qǐng)求量幔崖,反應(yīng)系統(tǒng)的容量 |
| TP指標(biāo) | TP99、TP95、MEAN等赏寇,反應(yīng)的是系統(tǒng)的時(shí)效性 |
| 錯(cuò)誤量 | http錯(cuò)誤響應(yīng)碼的次數(shù)吉嫩,方法調(diào)用異常次數(shù)等,反應(yīng)系統(tǒng)的錯(cuò)誤面 |
| 資源使用率 | CPU利用率嗅定、內(nèi)存利用率自娩、磁盤利用率等,反應(yīng)系統(tǒng)資源利用面 |

通用維度定義:

| 維度 | 說明 |
| service_name | 服務(wù)名渠退,例:Order |
| dc | 機(jī)房,例:bjdx |
| instance | 服務(wù)實(shí)例忙迁,例:1.1.1.1:2222 |
| url | 接口API,例:/order/list |
| method | 方法簽名 |
| status | http 響應(yīng)碼 |

定制擴(kuò)展

自動(dòng)接入&埋點(diǎn)

前期我們嘗試了多種監(jiān)控方案碎乃,發(fā)現(xiàn)能夠順利推廣落地的动漾,都有一個(gè)共同點(diǎn),就是服務(wù)接入監(jiān)控的成本很低荠锭。最好是不要求應(yīng)用做任何改動(dòng)旱眯,就可以自動(dòng)接入,享受監(jiān)控系統(tǒng)帶來的便利证九。為此我們做了以下工作:

? 每個(gè)服務(wù)引入sdk自動(dòng)完成通用指標(biāo)(Http請(qǐng)求删豺,JVM指標(biāo)等)采集,并暴露指標(biāo)拉取端點(diǎn)

? 每個(gè)服務(wù)自動(dòng)注冊(cè)到Eureka注冊(cè)中心

? Eureka增加Adapter愧怜,提供監(jiān)控系統(tǒng)可識(shí)別的接口方法

? 監(jiān)控系統(tǒng)從注冊(cè)中心呀页,自動(dòng)發(fā)現(xiàn)要監(jiān)控的服務(wù)實(shí)例列表

? 監(jiān)控系統(tǒng)定期從服務(wù)指標(biāo)端點(diǎn)拉取監(jiān)控?cái)?shù)據(jù)

image

聲明式方法監(jiān)控

很多情況下,需要對(duì)某些業(yè)務(wù)方法耗時(shí)進(jìn)行監(jiān)控拥坛,傳統(tǒng)的埋點(diǎn)方式是在方法入口和出口添加監(jiān)控代碼蓬蝶,業(yè)務(wù)代碼侵入高,開發(fā)成本高猜惋。

image

PUSH模式擴(kuò)展

如前所述丸氛,Prometheus是用PULL模式獲取應(yīng)用埋點(diǎn)數(shù)據(jù),但是有的場(chǎng)景下PULL模式并不適用(比如短生命周期的任務(wù))著摔,因此我們基于Prometheus提供的Pushgateway組件缓窜,實(shí)現(xiàn)PUSH模式獲取監(jiān)控埋點(diǎn)數(shù)據(jù)。

一種應(yīng)用場(chǎng)景是谍咆,實(shí)時(shí)收集各個(gè)服務(wù)日志流中的異常信息禾锤。我們監(jiān)聽日志采集的Kafka消息,F(xiàn)link實(shí)時(shí)解析出服務(wù)異常名稱摹察,將各個(gè)服務(wù)產(chǎn)生的異常實(shí)時(shí)推送到監(jiān)控系統(tǒng)恩掷,并在Grafana上集中展示」┖浚基于Pushgateway的異常監(jiān)控方案及效果圖如下黄娘。

image

集中可視化

不同的監(jiān)控系統(tǒng)旦签,往往會(huì)提供不同的可視化方案。分散的可視化寸宏,不利于監(jiān)控?cái)?shù)據(jù)的集中展示和全局問題分析宁炫。我們使用Grafana實(shí)現(xiàn)所有微服務(wù),所有指標(biāo)的集中可視化氮凝。

每個(gè)微服務(wù)使用統(tǒng)一的監(jiān)控模板羔巢,集中展示各服務(wù)入口流量、內(nèi)部方法罩阵、JVM等相關(guān)指標(biāo)竿秆。Dashboard模板主要包含以下模塊:

? 維度篩選模塊

image

? JVM和系統(tǒng)指標(biāo)模塊

image

? 入口流量機(jī)房分布&狀態(tài)碼&QPS&響應(yīng)延時(shí)模塊

image

? 方法監(jiān)控指標(biāo)模塊

image

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

基于前邊定義的通用指標(biāo)和維度,對(duì)所有指標(biāo)配置默認(rèn)的報(bào)警規(guī)則稿壁,同時(shí)支持自定義報(bào)警規(guī)則和閾值幽钢。基于Grafana Web hook將報(bào)警通知發(fā)送給Alert Manager傅是,Alert Manager對(duì)報(bào)警進(jìn)行相同合并匪燕、重復(fù)過濾、并格式化為統(tǒng)一報(bào)警模板后喧笔,投遞到愛奇藝統(tǒng)一報(bào)警平臺(tái)帽驯,業(yè)務(wù)owner通過統(tǒng)一報(bào)警平臺(tái)完成報(bào)警訂閱。統(tǒng)一報(bào)警方案及報(bào)警樣例如下圖书闸。

image

以上所述尼变,愛奇藝信息流監(jiān)控整體方案總結(jié)如下。

image

自下至上包括4層:

  • 監(jiān)控對(duì)象既包括常駐進(jìn)程微服務(wù)浆劲,也包括短生命周期的非常駐進(jìn)程嫌术。

  • 指標(biāo)獲取方式既可以基于Prometheus實(shí)時(shí)拉取,也可以基于Venus日志收集牌借,前者用于指標(biāo)實(shí)時(shí)獲取度气,保證監(jiān)控報(bào)警時(shí)效性,后者記錄詳細(xì)日志走哺,用于具體問題排查和鏈路分析蚯嫌。

  • 監(jiān)控維度從4個(gè)維度監(jiān)控應(yīng)用:

  1. Metrics監(jiān)控宏觀上檢測(cè)系統(tǒng)QPS,響應(yīng)耗時(shí)丙躏,錯(cuò)誤率和資源利用率;

  2. 撥測(cè)監(jiān)控從用戶角度監(jiān)控服務(wù)可用性束凑;

  3. 鏈路監(jiān)控提供單個(gè)請(qǐng)求完整生命周期的跟蹤路徑晒旅,專門應(yīng)對(duì)微服務(wù)架構(gòu)帶來的分布式調(diào)用復(fù)雜性;

  4. 日志查詢提供應(yīng)用監(jiān)控最精細(xì)化的信息汪诉,用于具體問題排障废恋。

  • 集中管理谈秫,集中可視化和統(tǒng)一報(bào)警管理,在最上面一層鱼鼓,便于排查問題時(shí)全面快速獲取應(yīng)用所有監(jiān)控報(bào)警信息拟烫。另外,微服務(wù)監(jiān)控的統(tǒng)一認(rèn)知和必要的流程規(guī)范迄本,貫穿監(jiān)控系統(tǒng)落地始終硕淑。

監(jiān)控系統(tǒng)落地1年多,新增服務(wù)基本實(shí)現(xiàn)零成本100%接入自動(dòng)埋點(diǎn)嘉赎、集中可視化和統(tǒng)一報(bào)警置媳,業(yè)務(wù)owner不需要為接入監(jiān)控做額外工作,就可以享受監(jiān)控帶來的各種便利公条;系統(tǒng)異常發(fā)生后拇囊,可以做到秒級(jí)收到報(bào)警,借助微服務(wù)監(jiān)控大盤靶橱,配合鏈路監(jiān)控和日志查詢寥袭,分鐘級(jí)確認(rèn)異常影響范圍并定位問題,大大減少故障恢復(fù)時(shí)間关霸,提升運(yùn)維效率纠永;目前該方案也在多個(gè)其他團(tuán)隊(duì)推廣落地。

總結(jié)&規(guī)劃

本文介紹了愛奇藝信息流團(tuán)隊(duì)微服務(wù)監(jiān)控的探索和實(shí)踐谒拴,涵蓋了日志監(jiān)控尝江,Hystrix監(jiān)控,撥測(cè)監(jiān)控英上,鏈路監(jiān)控炭序,Prometheus監(jiān)控等,從最初的多種監(jiān)控方案兼容并包苍日,到基于多維度數(shù)據(jù)模型和集中可視化的定制開發(fā)惭聂。不能簡(jiǎn)單說,后面的監(jiān)控方案比前期的好相恃,而是在微服務(wù)監(jiān)控不同發(fā)展階段辜纲,監(jiān)控體系建設(shè)投入和收益的折中選擇。下面是微服務(wù)監(jiān)控探索過程中一些心得拦耐。

  1. 簡(jiǎn)單有效耕腾。簡(jiǎn)單有效是評(píng)測(cè)監(jiān)控系統(tǒng)好壞的最高準(zhǔn)則,埋點(diǎn)是否簡(jiǎn)單甚至可省去杀糯,是否存在重復(fù)性的配置工作扫俺,都會(huì)影響監(jiān)控方案能否最終落地推廣。好的監(jiān)控方案一定是固翰,沒有故障時(shí)狼纬,開發(fā)人員無感知羹呵,出現(xiàn)故障時(shí),想看的指標(biāo)都能拿到疗琉。

  2. 集成定制冈欢。業(yè)界和公司提供了固定場(chǎng)景下的監(jiān)控框架和方案,基于這些成熟的方案和基礎(chǔ)設(shè)施盈简,會(huì)大大減少監(jiān)控系統(tǒng)建設(shè)投入凑耻;另一方面,必要的定制開發(fā)封裝送火,會(huì)進(jìn)一步推動(dòng)自動(dòng)化監(jiān)控落地拳话。

  3. 集中管理≈治考慮監(jiān)控指標(biāo)的多樣性(系統(tǒng)弃衍,應(yīng)用,業(yè)務(wù)等)坚俗,不同監(jiān)控方案關(guān)注點(diǎn)不同镜盯,指標(biāo)埋點(diǎn),收集猖败,獲取未必僅用一套速缆,但是可視化應(yīng)該盡可能集中,方便統(tǒng)一管理和全局分析恩闻。

  4. 流程規(guī)范艺糜。微服務(wù)監(jiān)控不是一個(gè)人或少數(shù)幾個(gè)人的事,也不應(yīng)該微服務(wù)上線后才被關(guān)注幢尚,它需要每位微服務(wù)owner破停,從編碼,甚至設(shè)計(jì)階段尉剩,就要考慮監(jiān)控指標(biāo)和維度真慢。為了減少監(jiān)控帶來的額外負(fù)擔(dān),保障落地效果理茎,必要的流程規(guī)范和分享培訓(xùn)是必要的黑界。

以上是監(jiān)控實(shí)踐的階段性探索實(shí)踐總結(jié),未來還有很多方面需要持續(xù)的優(yōu)化和改進(jìn)皂林,例如靈活的報(bào)警規(guī)則朗鸠,恰如其分的報(bào)警,更低成本的埋點(diǎn)式撼、可視化童社,服務(wù)質(zhì)量評(píng)測(cè)報(bào)告等。另外著隆,依托大數(shù)據(jù)分析和人工智能能力扰楼,系統(tǒng)異常檢測(cè),根因分析美浦,智能合并弦赖,故障預(yù)測(cè)和自恢復(fù)技術(shù)愈發(fā)成熟,推動(dòng)AI賦能數(shù)字化運(yùn)維落地也是我們努力的方向浦辨。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蹬竖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子流酬,更是在濱河造成了極大的恐慌币厕,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芽腾,死亡現(xiàn)場(chǎng)離奇詭異旦装,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)摊滔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門阴绢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人艰躺,你說我怎么就攤上這事呻袭。” “怎么了腺兴?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵左电,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我页响,道長(zhǎng)篓足,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任拘泞,我火速辦了婚禮纷纫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘陪腌。我一直安慰自己辱魁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布诗鸭。 她就那樣靜靜地躺著染簇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪强岸。 梳的紋絲不亂的頭發(fā)上锻弓,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音蝌箍,去河邊找鬼青灼。 笑死暴心,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杂拨。 我是一名探鬼主播专普,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼弹沽!你這毒婦竟也來了檀夹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤策橘,失蹤者是張志新(化名)和其女友劉穎炸渡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丽已,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚌堵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了促脉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辰斋。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瘸味,靈堂內(nèi)的尸體忽然破棺而出宫仗,到底是詐尸還是另有隱情,我是刑警寧澤旁仿,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布藕夫,位于F島的核電站,受9級(jí)特大地震影響枯冈,放射性物質(zhì)發(fā)生泄漏毅贮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一尘奏、第九天 我趴在偏房一處隱蔽的房頂上張望滩褥。 院中可真熱鬧,春花似錦炫加、人聲如沸瑰煎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酒甸。三九已至,卻和暖如春赋铝,著一層夾襖步出監(jiān)牢的瞬間插勤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留农尖,地道東北人析恋。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像卤橄,于是被迫代替她去往敵國和親绿满。 傳聞我的和親對(duì)象是個(gè)殘疾皇子臂外,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344