關(guān)于線上監(jiān)控的思考總結(jié)

前言

  • 近期和大佬們對(duì)規(guī)劃霍衫,梳理新財(cái)年要做的事情,有非常重要的一項(xiàng)就是線上監(jiān)控侯养,對(duì)于線上監(jiān)控敦跌,大家都最熟悉不過(guò),凡是在生產(chǎn)環(huán)境上運(yùn)行的系統(tǒng)逛揩,或多或少都會(huì)有監(jiān)控峰髓,但是否有思考過(guò)哪些監(jiān)控是有效的,監(jiān)控的目的是什么息尺,監(jiān)控告警出來(lái)之后又是怎么的一輪操作携兵,今天我們來(lái)探討關(guān)于線上監(jiān)控的相關(guān)經(jīng)驗(yàn)

業(yè)務(wù)系統(tǒng)分析

  • 在實(shí)施線上監(jiān)控之前的梳理,核心還是要對(duì)業(yè)務(wù)系統(tǒng)有比較深刻的了解搂誉,才能對(duì)癥下藥徐紧,對(duì)于業(yè)務(wù)系統(tǒng)的梳理,可以套一下的框架


    image.png
  • 簡(jiǎn)單舉個(gè)例子炭懊,從階段來(lái)說(shuō)并级,一般初創(chuàng)期和快速迭代的系統(tǒng),業(yè)務(wù)和功能都未必穩(wěn)定侮腹,這時(shí)就不宜去做比較深度的監(jiān)控嘲碧,把核心場(chǎng)景覆蓋即可,結(jié)合系統(tǒng)的核心目標(biāo)父阻,如用戶活躍和流水愈涩,對(duì)流水和用戶活躍數(shù)據(jù)的敏感度的監(jiān)控等,同時(shí)一般面向外部用戶的業(yè)務(wù)系統(tǒng)都是一個(gè)前臺(tái)的角色加矛,用戶敏感度比較高履婉,所以把一些用戶高頻操作的功能給監(jiān)控起來(lái),再者要結(jié)合當(dāng)前的技術(shù)方向以及業(yè)務(wù)方向斟览,如技術(shù)方向毁腿,可以引入一些新技術(shù),或者在原有的邏輯上補(bǔ)充監(jiān)控點(diǎn),技術(shù)方向有個(gè)前提是技術(shù)棧統(tǒng)一或相近已烤,不然會(huì)加大監(jiān)控點(diǎn)建立的難度和后期的維護(hù)成本鸠窗,有了前置對(duì)業(yè)務(wù)系統(tǒng)的分析,再實(shí)施監(jiān)控時(shí)才少走彎路胯究,降低成本

監(jiān)控梳理

  • 按照個(gè)人的經(jīng)驗(yàn)總結(jié)塌鸯,我們可以按這樣子的一個(gè)框架去建立監(jiān)控體系


    image.png
  • 依據(jù)上圖,我們具體說(shuō)一下里面的幾個(gè)大點(diǎn)

監(jiān)控目標(biāo)

  • 監(jiān)控的核心目標(biāo)唐片,就是為了在發(fā)現(xiàn)線上問(wèn)題時(shí)第一時(shí)間能夠了解到情況丙猬,同時(shí)通過(guò)告警信息精準(zhǔn)地定位到問(wèn)題出現(xiàn)在哪里,比較專業(yè)的描述就是提升線上問(wèn)題感知能力费韭,迅速地感知到線上問(wèn)題茧球,并迅速地定位到問(wèn)題,用最少的成本將線上問(wèn)題的影響降到最低星持,下來(lái)的一切措施都是圍繞著這個(gè)目標(biāo)去開(kāi)展

監(jiān)控范圍

  • 做監(jiān)控梳理的第一個(gè)步驟是要明確監(jiān)控的范圍抢埋,哪些點(diǎn)是要監(jiān)控起來(lái)的,那就要清晰明確業(yè)務(wù)系統(tǒng)的架構(gòu)督暂,技術(shù)棧以及依賴方等各種方面揪垄,并梳理優(yōu)先級(jí),簡(jiǎn)單總結(jié)為查缺補(bǔ)漏
    1.查找整理當(dāng)前有哪些監(jiān)控點(diǎn)逻翁,具體的監(jiān)控范圍饥努,從業(yè)務(wù)覆蓋度(功能層面)和系統(tǒng)覆蓋度(資源層面,如cpu資源等)盤點(diǎn)當(dāng)前已應(yīng)用的監(jiān)控點(diǎn)及其價(jià)值
    2.檢查是否已有監(jiān)控中是否有由于迭代等因素八回,已經(jīng)廢棄的監(jiān)控點(diǎn)酷愧,或者是有影響到正常排查問(wèn)題思路的監(jiān)控點(diǎn),已經(jīng)失去監(jiān)控的價(jià)值的缠诅,可以廢棄
    3.檢查是否有核心功能或核心數(shù)據(jù)等沒(méi)有監(jiān)控起來(lái)溶浴,出現(xiàn)問(wèn)題的時(shí)候往往都是用戶反饋才發(fā)現(xiàn),補(bǔ)全監(jiān)控點(diǎn)
    4.檢查告警機(jī)制是否到位管引,是否出現(xiàn)確實(shí)有監(jiān)控起來(lái)但沒(méi)有很好的反饋到需要關(guān)注的相關(guān)人員處士败,補(bǔ)全告警機(jī)制

監(jiān)控類型

  • 我把監(jiān)控的類型分為兩個(gè)大類,分別是系統(tǒng)監(jiān)控和業(yè)務(wù)監(jiān)控
系統(tǒng)監(jiān)控
  • 首先講一下系統(tǒng)監(jiān)控褥伴,如下圖


    image.png
  • 系統(tǒng)監(jiān)控更多的是關(guān)注業(yè)務(wù)系統(tǒng)所在的環(huán)境及其資源的情況谅将,簡(jiǎn)單理解就是能讓系統(tǒng)正常運(yùn)行起來(lái)的先決條件的監(jiān)控,這里將系統(tǒng)監(jiān)控分為資源層噩翠,基礎(chǔ)架構(gòu)層戏自,數(shù)據(jù)層以及依賴方
  • 資源層會(huì)關(guān)注運(yùn)行環(huán)境的硬件等資源邦投,如cpu伤锚,內(nèi)存,磁盤的使用率以及網(wǎng)絡(luò)流量等,這也是通用的監(jiān)控點(diǎn)屯援,同時(shí)也是會(huì)中間網(wǎng)絡(luò)服務(wù)監(jiān)控起來(lái)猛们,比如DNS的訪問(wèn),保證域名等有效性狞洋,是否負(fù)載均衡弯淘,機(jī)器流量分布不均會(huì)導(dǎo)致業(yè)務(wù)流程阻塞,資源也未必很好地利用起來(lái)吉懊,中間件如一些消息服務(wù)是否有出現(xiàn)消息堆積等情況
  • 基礎(chǔ)架構(gòu)層會(huì)關(guān)注實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)的技術(shù)底層運(yùn)行情況,以java開(kāi)發(fā)的系統(tǒng)為例庐橙,比如jvm,一般會(huì)對(duì)其線程進(jìn)行監(jiān)控借嗽,如線程占用的內(nèi)存态鳖,內(nèi)存回收機(jī)制是否正常,是否有內(nèi)存泄漏恶导,同時(shí)在方法區(qū)浆竭,方法的調(diào)用情況是否正常,堆棧使用是否合理惨寿,代碼邏輯異常時(shí)是否有正常拋出邦泄,日志是否清晰等等
  • 數(shù)據(jù)層為關(guān)注數(shù)據(jù)庫(kù)讀寫情況,比如proxy連接數(shù)是否在運(yùn)行范圍內(nèi)裂垦,慢查詢的數(shù)量顺囊,數(shù)據(jù)量的大小以及表的大小會(huì)影響讀寫情況,在一些耗時(shí)超時(shí)的跟蹤上是可以通過(guò)監(jiān)控手段跟蹤起來(lái)
  • 依賴方這里更多的是關(guān)注調(diào)用情況蕉拢,調(diào)用鏈路是否正常包蓝,是否有越權(quán)調(diào)用的情況,調(diào)用耗時(shí)等各種方面
業(yè)務(wù)監(jiān)控
  • 不同的業(yè)務(wù)系統(tǒng)有不的監(jiān)控方式企量,這里只例舉一些通用的場(chǎng)景测萎,如下圖:


    image.png
  • 業(yè)務(wù)監(jiān)控主要關(guān)注兩個(gè)方面,就是系統(tǒng)功能以及數(shù)據(jù)
功能監(jiān)控
  • 先說(shuō)說(shuō)功能監(jiān)控届巩,這個(gè)很好理解就是對(duì)用戶的操作行為進(jìn)行打點(diǎn)監(jiān)控硅瞧,比如用戶在使用某一功能過(guò)于頻繁,導(dǎo)致操作被限制恕汇,用戶由于對(duì)功能不理解反饋功能異常腕唧,又或者對(duì)于獲得利益的功能,比如領(lǐng)取代金券領(lǐng)取獎(jiǎng)品等瘾英,領(lǐng)取是否正常等等枣接,同時(shí)關(guān)注到業(yè)務(wù)接口尤其是幾個(gè)關(guān)聯(lián)接口的使用場(chǎng)景,比如領(lǐng)獎(jiǎng)的幾個(gè)關(guān)聯(lián)接口中的某一個(gè)不通或者異常導(dǎo)致整個(gè)鏈路失敗的缺谴,這時(shí)就可以直接根據(jù)告警信息來(lái)準(zhǔn)確地處理問(wèn)題了但惶,當(dāng)然這也可以是交互上解決的問(wèn)題,這里就不扯遠(yuǎn)了,
  • 同時(shí)對(duì)于頁(yè)面訪問(wèn)的情況膀曾,是否出現(xiàn)白屏县爬,load超時(shí),頁(yè)面不兼容的情況添谊,可以通過(guò)打點(diǎn)監(jiān)控獲取到相關(guān)的信息财喳,如果是bug或其他優(yōu)化問(wèn)題就可以記錄并做日后優(yōu)化的一個(gè)工作項(xiàng)
  • 定時(shí)任務(wù),在業(yè)務(wù)場(chǎng)景用應(yīng)用是非常廣泛的斩狱,如定時(shí)更新游戲里面的任務(wù)耳高,定時(shí)給用戶發(fā)獎(jiǎng),定時(shí)去獲取某些信息等等所踊,監(jiān)控定時(shí)任務(wù)的執(zhí)行情況保證業(yè)務(wù)流程的正常執(zhí)行
數(shù)據(jù)監(jiān)控
  • 數(shù)據(jù)監(jiān)控就是針對(duì)業(yè)務(wù)數(shù)據(jù)來(lái)說(shuō)的祝高,有些業(yè)務(wù)系統(tǒng)每天都會(huì)出業(yè)務(wù)報(bào)表,如果報(bào)表中的業(yè)務(wù)數(shù)據(jù)變化比較大的話污筷,就必須通過(guò)告警讓相關(guān)關(guān)注人員去確認(rèn)業(yè)務(wù)數(shù)據(jù)的變化是否合理工闺,現(xiàn)這種場(chǎng)景,一般就是通過(guò)環(huán)比同比設(shè)置預(yù)警閥值進(jìn)行監(jiān)控瓣蛀,比如環(huán)比超過(guò)10%陆蟆,就需要告警到對(duì)應(yīng)人員
  • 結(jié)合業(yè)務(wù)場(chǎng)景來(lái)說(shuō),如上面提到的發(fā)獎(jiǎng)品等惋增,數(shù)據(jù)層面就要關(guān)注發(fā)出量和領(lǐng)取量以及庫(kù)存量叠殷,如果有設(shè)置了每天發(fā)出量的限制的話就要監(jiān)控是否有超出預(yù)值,同時(shí)當(dāng)庫(kù)存量不足支持發(fā)獎(jiǎng)活動(dòng)的需求的诈皿,就要即時(shí)的告警出來(lái)
  • 除了數(shù)據(jù)量相關(guān)的監(jiān)控以外林束,還有就是數(shù)據(jù)邏輯功能,比如數(shù)據(jù)計(jì)算稽亏,是否和預(yù)期值是正常的壶冒,尤其是在大數(shù)據(jù)量的計(jì)算的時(shí)候,如果一條條找錯(cuò)誤數(shù)據(jù)的話明顯非常低效截歉,于是就可以通過(guò)監(jiān)控告警的方式胖腾,將不符合既定規(guī)則的數(shù)據(jù)告警出來(lái),就可以精準(zhǔn)定位到是哪條數(shù)據(jù)出現(xiàn)問(wèn)題瘪松,然后再去追溯跟進(jìn)問(wèn)題原因
  • 不同的業(yè)務(wù)系統(tǒng)有不同的監(jiān)控點(diǎn)咸作,所以這里只能聊一下比較通用的場(chǎng)景,業(yè)務(wù)監(jiān)控是建立在具體的業(yè)務(wù)邏輯上宵睦,依據(jù)其具體的邏輯去實(shí)現(xiàn)監(jiān)控點(diǎn)

監(jiān)控關(guān)注方

  • 監(jiān)控關(guān)注方直白意思就是看監(jiān)控的人记罚,做了一堆監(jiān)控,對(duì)于整個(gè)團(tuán)隊(duì)來(lái)說(shuō)壳嚎,是所有建立起監(jiān)控的點(diǎn)都要關(guān)注桐智,但每種職能關(guān)注的監(jiān)控點(diǎn)的優(yōu)先級(jí)是不一樣的末早,產(chǎn)品業(yè)務(wù)側(cè)會(huì)更關(guān)注用戶行為以及相關(guān)的業(yè)務(wù)數(shù)據(jù),畢竟這些告警會(huì)影響到產(chǎn)品需求設(shè)計(jì)上的一些方向酵使,而技術(shù)側(cè)會(huì)更偏于系統(tǒng)層面的監(jiān)控荐吉,比如一些error日志和硬件資源使用的情況焙糟,如果作為基礎(chǔ)服務(wù)的系統(tǒng)口渔,涉及多關(guān)聯(lián)方調(diào)用的,關(guān)聯(lián)方也會(huì)關(guān)注其所涉及的一些依賴接口穿撮,依賴數(shù)據(jù)等告警
  • 舉個(gè)反例場(chǎng)景缺脉,線上出現(xiàn)一些資源上的bug,報(bào)了一堆代碼信息的告警悦穿,然后全往產(chǎn)品經(jīng)理處發(fā)攻礼,產(chǎn)品經(jīng)理看到后最后還是找技術(shù)側(cè)去處理,這樣的一個(gè)信息傳遞的鏈路實(shí)在是有點(diǎn)長(zhǎng)栗柒,所以在做監(jiān)控實(shí)施之前礁扮,就必須明確什么監(jiān)控是給什么人看的,這些信息傳遞得更準(zhǔn)確瞬沦,問(wèn)題感知的能力才會(huì)有提升

監(jiān)控實(shí)施

  • 監(jiān)控點(diǎn)都梳理情況之后太伊,就可以設(shè)計(jì)監(jiān)控實(shí)施的方案,這里會(huì)涉及需要用到的工具或技術(shù)棧逛钻,以及對(duì)于的一個(gè)預(yù)警方案和救火方案僚焦,可以通過(guò)這幾個(gè)明細(xì)項(xiàng)去設(shè)計(jì)實(shí)施方案
    1.監(jiān)控層:比如系統(tǒng)監(jiān)控中的運(yùn)行環(huán)境資源
    2.監(jiān)控項(xiàng):比如系統(tǒng)監(jiān)控中的運(yùn)行環(huán)境資源中的cpu,內(nèi)存等
    3.監(jiān)控點(diǎn):比如網(wǎng)絡(luò)使用中的網(wǎng)絡(luò)io曙痘,網(wǎng)絡(luò)連接數(shù)據(jù)芳悲,丟包率、重傳率等
    4.監(jiān)控工具(方案):其實(shí)就是應(yīng)用在這個(gè)監(jiān)控點(diǎn)上具體的工具或者是方法
    5.預(yù)警策略:當(dāng)監(jiān)控工具將對(duì)應(yīng)的監(jiān)控點(diǎn)都監(jiān)控起來(lái)边坤,我們就能得到相關(guān)的數(shù)據(jù)名扛,依據(jù)數(shù)據(jù)或信息設(shè)置一些預(yù)警策略,在業(yè)務(wù)層面上茧痒,比如當(dāng)庫(kù)存少于XXX量時(shí)罢洲,就告警,系統(tǒng)層面上比如磁盤使用率超過(guò)90%時(shí)就告警
    6.告警載體:如以郵件文黎,釘釘?shù)确绞酵ㄖ疥P(guān)注方
    7.關(guān)注方:如前文所說(shuō)

  • 舉個(gè)實(shí)際的例子惹苗,如下圖


    image.png
  • 上圖通過(guò)上述的一部分監(jiān)控類型舉例如果是設(shè)計(jì)監(jiān)控方案落地,大家可以參考一下

  • 在監(jiān)控工具(方案)上面耸峭,上述是通過(guò)一些點(diǎn)去選擇具體的工具或方案桩蓉,但尤其是在系統(tǒng)監(jiān)控方面,一個(gè)個(gè)點(diǎn)用工具去實(shí)施維護(hù)肯定是不切實(shí)際的劳闹,現(xiàn)在行業(yè)里面也有很多具體的方案或工具可以全面的對(duì)系統(tǒng)方面進(jìn)行監(jiān)控院究,比如新型監(jiān)控告警工具Prometheus洽瞬,像利用Prometheus+Grafana搭建起監(jiān)控運(yùn)維平臺(tái),就基本上面可以滿足系統(tǒng)監(jiān)控的實(shí)施需求

監(jiān)控價(jià)值評(píng)價(jià)

  • 從盤點(diǎn)到設(shè)計(jì)到落地业汰,監(jiān)控是起來(lái)了伙窃,但作為工程技術(shù)人員,實(shí)施方案都需要評(píng)價(jià)最后得到的價(jià)值和結(jié)果样漆,結(jié)合前文做監(jiān)控的目的为障,就是為了提升線上問(wèn)題感知能力,降低排查問(wèn)題的成本
  • 基于這點(diǎn)目的出發(fā)放祟,我們就可以記錄每實(shí)施一項(xiàng)監(jiān)控點(diǎn)是否滿足這個(gè)目的鳍怨,比如做數(shù)據(jù)計(jì)算規(guī)則的監(jiān)控,可以精準(zhǔn)定位到時(shí)哪一條數(shù)據(jù)出現(xiàn)問(wèn)題跪妥,而不是自己一條條去排查鞋喇,降低排查成本,告警梳理完善眉撵,信息更加精確地推送到關(guān)注方
  • 但也有反例侦香,就是實(shí)施了監(jiān)控之后讓告警信息復(fù)雜化,過(guò)多的無(wú)效告警信息纽疟,或者是不需要關(guān)注方關(guān)注的信息告警出來(lái)罐韩,長(zhǎng)期以來(lái)會(huì)讓關(guān)注方對(duì)告警信息麻木,最后真的有線上問(wèn)題的時(shí)候就忽略了重要信息仰挣,還有就是實(shí)現(xiàn)監(jiān)控之后對(duì)業(yè)務(wù)系統(tǒng)有較大的代碼插入伴逸,帶來(lái)系統(tǒng)bug,這樣也是得不償失膘壶,所以綜合來(lái)說(shuō)可以通過(guò)判斷實(shí)施監(jiān)控前和實(shí)現(xiàn)監(jiān)控后的效果來(lái)判斷監(jiān)控是否有效错蝴,對(duì)于無(wú)效監(jiān)控應(yīng)當(dāng)機(jī)立斷地廢棄掉

小結(jié)

  • 監(jiān)控方法千萬(wàn)條,有效告警第一條颓芭,監(jiān)控不規(guī)范顷锰,同學(xué)兩行淚,不管是線上監(jiān)控亡问,還是其他方案官紫,從業(yè)務(wù)的根本需求出發(fā),整體地思考州藕,細(xì)致地落地束世,希望通過(guò)本文能為大家在進(jìn)行線上監(jiān)控實(shí)施時(shí)起到一些幫助,謝謝

附錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末床玻,一起剝皮案震驚了整個(gè)濱河市毁涉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锈死,老刑警劉巖贫堰,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穆壕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡其屏,警方通過(guò)查閱死者的電腦和手機(jī)喇勋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)偎行,“玉大人川背,你說(shuō)我怎么就攤上這事∧烙牛” “怎么了渗常?”我有些...
    開(kāi)封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵壮不,是天一觀的道長(zhǎng)汗盘。 經(jīng)常有香客問(wèn)我,道長(zhǎng)询一,這世上最難降的妖魔是什么隐孽? 我笑而不...
    開(kāi)封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮健蕊,結(jié)果婚禮上菱阵,老公的妹妹穿的比我還像新娘。我一直安慰自己缩功,他們只是感情好晴及,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著嫡锌,像睡著了一般虑稼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上势木,一...
    開(kāi)封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天蛛倦,我揣著相機(jī)與錄音,去河邊找鬼啦桌。 笑死溯壶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的甫男。 我是一名探鬼主播且改,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼板驳!你這毒婦竟也來(lái)了又跛?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤笋庄,失蹤者是張志新(化名)和其女友劉穎效扫,沒(méi)想到半個(gè)月后倔监,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡菌仁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年浩习,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片济丘。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谱秽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出摹迷,到底是詐尸還是另有隱情疟赊,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布峡碉,位于F島的核電站近哟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鲫寄。R本人自食惡果不足惜吉执,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望地来。 院中可真熱鬧戳玫,春花似錦、人聲如沸未斑。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蜡秽。三九已至府阀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間载城,已是汗流浹背肌似。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诉瓦,地道東北人川队。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像睬澡,于是被迫代替她去往敵國(guó)和親固额。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359