SRE Goole運(yùn)維解密

不能將碰運(yùn)氣當(dāng)成戰(zhàn)略. —— SRe俗語

SRE:Site Reliability Engineering;專注于整個(gè)軟件系統(tǒng)的生命周期管理烛愧,goole將此職位稱為站點(diǎn)可靠性工程師(SRE);

1.SRE是工程師澈歉,SRE使用計(jì)算機(jī)科學(xué)和軟件工程手段來設(shè)計(jì)和研發(fā)大型草戈、分布式計(jì)算機(jī)軟件系統(tǒng)台颠。
2.SRE的關(guān)注焦點(diǎn)在于可靠性定嗓】莶溃可靠性應(yīng)該是任何產(chǎn)品設(shè)計(jì)中最基本的概念:任何一個(gè)系統(tǒng)如果沒有人能夠穩(wěn)定的使用注整,就沒有存在的意義。SRE專注于對(duì)其負(fù)責(zé)的軟件系統(tǒng)架構(gòu)設(shè)計(jì)度硝、運(yùn)維流程的不斷優(yōu)化肿轨,讓大型軟件系統(tǒng)運(yùn)行的更可靠,擴(kuò)展性更好蕊程,能更有效的利用資源椒袍。
3.SRE的主要工作是運(yùn)維在分布式集群管理系統(tǒng)上運(yùn)行的具體業(yè)務(wù)服務(wù),不論是儲(chǔ)存服務(wù)藻茂、web搜索服務(wù)驹暑、E-mail服務(wù)。

SRE職責(zé):

可用性改進(jìn)辨赐、延遲優(yōu)化优俘、性能優(yōu)化、效率優(yōu)化掀序、變更管理帆焕、監(jiān)控、緊急事務(wù)處理不恭、容量規(guī)劃與管理

SRE準(zhǔn)則:

1.在每8-12小時(shí)的on-call輪值期間最多只處理兩個(gè)緊急事件叶雹,事后撰寫事后報(bào)告。
2.如果一個(gè)產(chǎn)品事故沒有觸發(fā)警報(bào)县袱,事后總結(jié)意義更大,因?yàn)樗梢越沂颈O(jiān)控系統(tǒng)中的漏洞佑力。
3.事故報(bào)告:事故發(fā)生式散、發(fā)現(xiàn)、解決的全過程打颤、事故根本原因

產(chǎn)品預(yù)算- 研發(fā)團(tuán)隊(duì)與SRE團(tuán)隊(duì)

  • 基于用戶的使用習(xí)慣暴拄,服務(wù)可靠性要達(dá)到什么程度用戶才會(huì)滿意?
  • 如果這項(xiàng)服務(wù)的可靠程度不夠编饺,用戶是否有其它的替代選擇乖篷?
  • 服務(wù)的可靠程度是否會(huì)影響用戶對(duì)這項(xiàng)服務(wù)的使用模式?

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

監(jiān)控系統(tǒng)是SRE團(tuán)隊(duì)監(jiān)控服務(wù)質(zhì)量和可用性的一個(gè)主要手段透且。
最普遍的和傳統(tǒng)的報(bào)警策略是針對(duì)某個(gè)特定的情況或者監(jiān)控值撕蔼,一旦出現(xiàn)情況或者監(jiān)控超過閥值就觸發(fā)E-mai警報(bào)豁鲤。但是這樣的報(bào)警策略并不是非常有效:一個(gè)需要人工閱讀郵件和分析警報(bào)來決定目前是否需要采取某種行動(dòng)的系統(tǒng)從本質(zhì)上就是錯(cuò)誤的。監(jiān)控系統(tǒng)不應(yīng)該依賴人來分析警報(bào)信息鲸沮,而是應(yīng)該由系統(tǒng)自動(dòng)分析琳骡,僅當(dāng)需要用戶執(zhí)行某種操作時(shí),才需要通知用戶讼溺。

一個(gè)監(jiān)控系統(tǒng)應(yīng)該有三類輸出:

  • 緊急警報(bào)(意味著收到警報(bào)的用戶需要立即執(zhí)行某種操作楣号,目標(biāo)是解決某種已經(jīng)發(fā)生的問題或者避免即將發(fā)生的問題)
  • 工單(意味著接受工單的用戶應(yīng)該執(zhí)行某種操作,但是并非立即執(zhí)行怒坯。系統(tǒng)并不能自動(dòng)解決目前的情況炫狱,但是如果一個(gè)用戶在幾天內(nèi)執(zhí)行這項(xiàng)操作,系統(tǒng)不會(huì)受到任何影響)
  • 日志(平時(shí)沒有人需要關(guān)注日志信息剔猿,但是日志信息依然被收集起來以備調(diào)試和事后分析時(shí)使用视译。正確的做法是平時(shí)沒人會(huì)去主動(dòng)閱讀日志,除非有特殊需要)

應(yīng)急事件處理

一個(gè)可以自動(dòng)恢復(fù)的系統(tǒng)即使有更多的故障發(fā)生艳馒,也要比事事都需要人工干預(yù)的系統(tǒng)可用性更高憎亚。
通過事先預(yù)案并且將最佳方法記錄在“運(yùn)維手冊(cè)”上通常可以使MTTR(平均恢復(fù)時(shí)間)降低3倍以上弄慰。

變更管理

大概70%的生產(chǎn)事故由某種部署的變更而觸發(fā)第美。變更管理的最佳實(shí)踐是使用自動(dòng)化來完成以下幾個(gè)項(xiàng)目:

  • 采用漸進(jìn)式發(fā)布機(jī)制
  • 迅速而準(zhǔn)確的檢測(cè)到問題的發(fā)生
  • 當(dāng)出現(xiàn)問題時(shí),安全迅速的退回改動(dòng)

需求預(yù)測(cè)和容量規(guī)劃

需求預(yù)測(cè)和容量規(guī)劃就是保障一個(gè)業(yè)務(wù)有足夠的容量和冗余度去服務(wù)預(yù)測(cè)中的未來需求陆爽。一個(gè)業(yè)務(wù)容量的規(guī)劃什往,不僅要包含自然增長(zhǎng)(隨著用戶使用量上升,資源用量也上升)慌闭,也需要包括一些非自然增長(zhǎng)的因素(新功能發(fā)布别威、商業(yè)推廣、以及其它商業(yè)因素)

容量規(guī)劃的步驟:

  • 必須有一個(gè)準(zhǔn)確的自然增長(zhǎng)需求預(yù)測(cè)模型驴剔,需求預(yù)測(cè)的時(shí)間應(yīng)該超過資源獲取的時(shí)間
  • 規(guī)劃中必須有準(zhǔn)確的非自然增長(zhǎng)的需求來源的統(tǒng)計(jì)
  • 必須有周期性壓力測(cè)試省古,以便準(zhǔn)確的將系統(tǒng)原始資源信息與業(yè)務(wù)容量對(duì)應(yīng)起來

1.概覽

物理服務(wù)器(machine):
代表具體的硬件(有時(shí)候也代表一個(gè)VM虛擬機(jī))

軟件服務(wù)器(server):
代表一個(gè)對(duì)外提供服務(wù)的軟件系統(tǒng)。

2.分布式系統(tǒng)的監(jiān)控

監(jiān)控

收集丧失、處理豺妓、匯總、并且顯示關(guān)于某個(gè)系統(tǒng)的實(shí)時(shí)量化數(shù)據(jù)布讹,例如請(qǐng)求的數(shù)量和類型琳拭,錯(cuò)誤的數(shù)量和類型,以及處理用時(shí)描验,應(yīng)用服務(wù)器的存活時(shí)間等白嘁。

白盒監(jiān)控:
依靠系統(tǒng)內(nèi)部暴露的一些性能指標(biāo)進(jìn)行監(jiān)控。包括日志分析膘流、Java虛擬機(jī)提供的監(jiān)控接口絮缅、或者一個(gè)列出內(nèi)部統(tǒng)計(jì)數(shù)據(jù)的HTTP接口進(jìn)行監(jiān)控鲁沥。

黑盒監(jiān)控:
通過測(cè)試某種外部用戶可見的系統(tǒng)行為進(jìn)行監(jiān)控演顾。

控制臺(tái)頁面:
提供某個(gè)服務(wù)核心指標(biāo)一覽服務(wù)的應(yīng)用程序(一般基于Web)陈轿。該應(yīng)用程序可能會(huì)提供過濾功能它褪、選擇功能等扩淀,但是最主要的功能是用來顯示系統(tǒng)最重要的指標(biāo)桑寨。該程序同時(shí)可以顯示相應(yīng)團(tuán)隊(duì)的一些信息碉钠,包括目前工單的數(shù)量驳糯、高優(yōu)先級(jí)的Bug列表吼鳞、目前on-call工程師和最近進(jìn)行的生產(chǎn)發(fā)布等奄抽。

警報(bào):
目標(biāo)對(duì)象是某個(gè)人向發(fā)向某個(gè)系統(tǒng)地址的一個(gè)通知蔼两。目的地可以包括工單系統(tǒng)、E-mail地址逞度,或者某個(gè)傳呼機(jī)额划。

根源問題:
指系統(tǒng)中的某種缺陷。這個(gè)缺陷如果被修復(fù)档泽,就可以保證這種問題不會(huì)再以同樣的方式發(fā)生俊戳。某一故障情況可能同時(shí)具有多個(gè)根源問題,如有可能自動(dòng)化程度不夠馆匿,軟件在異常輸入下崩潰抑胎,以及對(duì)生成配置文件的腳本測(cè)試不足等。這里每一個(gè)因素都是一個(gè)根源問題渐北,并且每一個(gè)都需要被修復(fù)阿逃。

監(jiān)控系統(tǒng)指標(biāo)

延遲:

服務(wù)處理某個(gè)請(qǐng)求所需要的時(shí)間。這里區(qū)分成功請(qǐng)求和失敗請(qǐng)求很重要赃蛛。

流量:

使用系統(tǒng)中的某個(gè)高層次的指標(biāo)針對(duì)系統(tǒng)負(fù)載需求所進(jìn)行的度量恃锉。對(duì)Web服務(wù)器來說,指標(biāo)通常是每秒HTTP請(qǐng)求數(shù)量呕臂,同時(shí)可能按請(qǐng)求類型分類(靜態(tài)請(qǐng)求與動(dòng)態(tài)請(qǐng)求)破托。針對(duì)音頻流媒體系統(tǒng)來說,這個(gè)指標(biāo)可能是網(wǎng)絡(luò)I/O速率歧蒋,或者并發(fā)會(huì)話數(shù)量土砂。針對(duì)鍵值對(duì)儲(chǔ)存系統(tǒng)來說,指標(biāo)可能是每秒交易數(shù)量疏尿,或每秒的讀取操作數(shù)量瘟芝。

錯(cuò)誤:

請(qǐng)求失敗的速率易桃,要么是顯示失斎焖觥(例如HTTP500),要么是隱式失斘钪!(例如HTTP200回復(fù)中包含了錯(cuò)誤內(nèi)容)敌呈,或者是策略原因?qū)е碌氖贸宏。ɡ缛绻蠡貜?fù)在1s內(nèi)發(fā)出,任何超過1s的請(qǐng)求就是失敗請(qǐng)求)磕洪。當(dāng)協(xié)議內(nèi)部的錯(cuò)誤代碼無法表達(dá)全部失敗情況時(shí)吭练,可以利用其他信息,如內(nèi)部協(xié)議析显,來跟蹤一部分特定故障情況鲫咽。監(jiān)控方式也非常不一樣:在負(fù)載均衡器上檢測(cè)HTTP500請(qǐng)求可能足夠抓住所有的完全失敗的請(qǐng)求,但是只有端到端的系統(tǒng)才能檢測(cè)到返回錯(cuò)誤內(nèi)容這種故障類型谷异。

飽和度:

服務(wù)容量有多“滿”分尸。通常是系統(tǒng)中目前最為受限的某種資源的某個(gè)具體指標(biāo)的度量。(在內(nèi)存受限的系統(tǒng)中歹嘹,即為內(nèi)存箩绍;在I/O受限的系統(tǒng)中,即為I/O)尺上。注意材蛛,很多系統(tǒng)在達(dá)到100%利用率之前性能會(huì)嚴(yán)重下降,增加一個(gè)利用率目標(biāo)也是很重要的怎抛。

長(zhǎng)尾問題

構(gòu)建監(jiān)控系統(tǒng)時(shí)卑吭,很多人都傾向于采用某種量化指標(biāo)的平均值:延遲平均值、節(jié)點(diǎn)的平均CPU利用率抽诉、數(shù)據(jù)庫(kù)容量的平均值等陨簇。由于CPU和數(shù)據(jù)庫(kù)等利用率可能波動(dòng)很大,根據(jù)其實(shí)際使用波動(dòng)取其值迹淌。

設(shè)計(jì)原則

簡(jiǎn)化:

  • 那些最能反映真實(shí)故障等規(guī)則應(yīng)該越簡(jiǎn)單越好河绽,可預(yù)測(cè)性強(qiáng),非嘲η裕可靠
  • 那些不常用的數(shù)據(jù)收集耙饰、匯總,以及警報(bào)配置應(yīng)該定時(shí)刪除
  • 收集到的信息纹份,但是沒有暴露給任何監(jiān)控臺(tái)苟跪,或者被任何警報(bào)規(guī)則使用的應(yīng)該定時(shí)刪除

SRE參與模型

  • 系統(tǒng)的體系結(jié)構(gòu)和跨服務(wù)依賴
  • 指標(biāo)的選擇、度量和監(jiān)控
  • 緊急事件處理
  • 容量規(guī)劃
  • 變更管理
  • 性能:可用性蔓涧、延遲和資源效率

事后總結(jié)

  • 究竟發(fā)生了什么件已?
  • 響應(yīng)的有效程度
  • 下次是否可以采用其它方案解決問題
  • 如何確保這次故障不會(huì)再次發(fā)生

3.數(shù)據(jù)完整性:讀寫一致

大數(shù)據(jù)云計(jì)算應(yīng)用都是優(yōu)化以下5項(xiàng)的某種組合:在線時(shí)間、延遲元暴、規(guī)模篷扩、創(chuàng)新速度和隱私。

在線時(shí)間:
經(jīng)常也用“可用率”指代茉盏,代表某個(gè)服務(wù)可以被用戶使用的時(shí)間比率鉴未。

延遲:
服務(wù)對(duì)用戶的相應(yīng)時(shí)間枢冤。

規(guī)模:
某個(gè)服務(wù)的用戶數(shù)量,以及能夠維持正常服務(wù)水平的最高負(fù)載

創(chuàng)新速度:
某個(gè)服務(wù)能夠在合理成本下铜秆,為用戶提供更好的服務(wù)的創(chuàng)新速度淹真。

隱私:
這個(gè)名詞的定義比較復(fù)雜。簡(jiǎn)單來說连茧,用戶刪除服務(wù)中的數(shù)據(jù)后核蘸,數(shù)據(jù)必須在合理時(shí)間內(nèi)真正被摧毀。

云計(jì)算環(huán)境下的需求

云計(jì)算環(huán)境引入的技術(shù)難點(diǎn):

  • 如果該環(huán)境使用了混合交易型和非交易型的備份和恢復(fù)方案啸驯,那么最終恢復(fù)的數(shù)據(jù)不一定是正確的
  • 如果某個(gè)服務(wù)必須在不停機(jī)的情況下更新值纱,那么不同版本的邏輯可能同時(shí)并行操作數(shù)據(jù)
  • 如果所有其他有交互關(guān)系的服務(wù)不是同步更新的,那么在更新過程中各服務(wù)的不同版本之間可能會(huì)有多種組合坯汤,那么就更加增大了數(shù)據(jù)意外丟失和損壞發(fā)生的概率虐唠。

擴(kuò)展API特性:

  • 數(shù)據(jù)本地性和緩存
  • 本地和全局的數(shù)據(jù)分布
  • 強(qiáng)一致性/或最終一致性
  • 數(shù)據(jù)持久性,備份于災(zāi)難恢復(fù)

數(shù)據(jù)完整性是手段惰聂,數(shù)據(jù)可用性是目標(biāo)

維護(hù)數(shù)據(jù)完整性:

  • 全量疆偿、增量以及相互競(jìng)爭(zhēng)的備份和恢復(fù)機(jī)制
  • 保留期 - 數(shù)據(jù)備份保存時(shí)間
  • 確保數(shù)據(jù)恢復(fù)策略正常運(yùn)行

交付一個(gè)恢復(fù)系統(tǒng),而非備份系統(tǒng)

造成數(shù)據(jù)丟失的事故類型

根源問題:
某種無法恢復(fù)的用戶數(shù)據(jù)丟失是由以下幾個(gè)因素造成的:用戶行為搓幌、管理員的錯(cuò)誤杆故、應(yīng)用程序的Bug、基礎(chǔ)設(shè)施中的問題溉愁、硬件故障和部署去的大型事故处铛。

影響范圍:
有些數(shù)據(jù)丟失是大規(guī)模的,同時(shí)影響很多實(shí)體拐揭。有些數(shù)據(jù)丟失是非常有針對(duì)性的撤蟆,僅僅是一小部分用戶的數(shù)據(jù)損壞或者丟失。

發(fā)生速度:
有些數(shù)據(jù)丟失失一瞬間造成的堂污,而有些數(shù)據(jù)丟失是緩慢持續(xù)進(jìn)行的家肯。

4.產(chǎn)品發(fā)布

發(fā)布流程

輕量級(jí):
占用很少的開發(fā)時(shí)間。

魯棒性:
能夠最大限度的避免簡(jiǎn)單的錯(cuò)誤盟猖。

完整性:
完整的讨衣、一致的在各個(gè)環(huán)節(jié)內(nèi)跟蹤重要的細(xì)節(jié)問題。

可擴(kuò)展性:
可以應(yīng)用在很多簡(jiǎn)單的發(fā)布上式镐,也可以用在復(fù)雜的發(fā)布過程中反镇。

適應(yīng)性:
可以適用于大多數(shù)常見的發(fā)布,以及可以適用全新的發(fā)布類型娘汞。

發(fā)布檢查列表

檢查列表可以用來減少失敗歹茶,并且在多個(gè)職能部門之間保證一致性和完整性。

  • 問題
  • 待辦事項(xiàng)

原則:

  • 每個(gè)問題的重要性必須非常高,理想情況下辆亏,都必須有之前發(fā)布的經(jīng)驗(yàn)教訓(xùn)來證明
  • 每個(gè)指令必須非常具體、可行鳖目,開發(fā)者可以在合理的時(shí)間內(nèi)完成

架構(gòu)與依賴

依賴列表可以用來保證該服務(wù)的相關(guān)依賴都有足夠的容量扮叨。

示例問題:

  • 從用戶到前端再到后端,請(qǐng)求流到順序是什么樣的领迈?
  • 是否存在不同延遲要求的請(qǐng)求類型彻磁?

特辦事項(xiàng):

  • 將非用戶請(qǐng)求與用戶請(qǐng)求進(jìn)行隔離
  • 確認(rèn)預(yù)計(jì)的請(qǐng)求數(shù)量。單個(gè)頁面請(qǐng)求可能造成后端多個(gè)請(qǐng)求狸捅。

集成

  • 給服務(wù)建立一個(gè)新的DNS
  • 微服務(wù)配置負(fù)載均衡系統(tǒng)
  • 為服務(wù)配置監(jiān)控系統(tǒng)

容量規(guī)劃

  • 新功能通常會(huì)在發(fā)布之初代來臨時(shí)的用量增長(zhǎng)衷蜓,在幾天內(nèi)會(huì)消除。這種尖峰式的負(fù)載或流量分布可能與穩(wěn)定狀態(tài)下有顯著區(qū)別尘喝,之前的壓力測(cè)試可能失效磁浇。

示例問題:

  • 本次發(fā)布是否與新聞發(fā)布會(huì)、廣告朽褪、博客文章或者其他類型的推廣活動(dòng)有關(guān)置吓?
  • 發(fā)布過程中和之后預(yù)計(jì)的流量和增速是多少?
  • 是否已經(jīng)獲取到該服務(wù)需要的全部計(jì)算資源

故障模式

針對(duì)新服務(wù)進(jìn)行系統(tǒng)性的故障模式分析可以確保發(fā)布時(shí)服務(wù)器的可靠性缔赠。

客戶端行為

客戶端的濫用行為很容易影響到服務(wù)器的穩(wěn)定性衍锚。

示例問題:

  • 該服務(wù)是否實(shí)現(xiàn)了自動(dòng)保存/自動(dòng)完成(完成框)/心跳等功能?

待辦事項(xiàng):

  • 確编脱撸客戶端在請(qǐng)求失敗之后按指數(shù)型增加重試延時(shí)
  • 保證在自動(dòng)請(qǐng)求中實(shí)現(xiàn)隨機(jī)延時(shí)抖動(dòng)

流程與自動(dòng)化

使用標(biāo)準(zhǔn)工具來自動(dòng)化一些常見流程踢匣。

示例問題:

  • 維持服務(wù)運(yùn)行是否需要某些手動(dòng)執(zhí)行等流程?

待辦事項(xiàng):

  • 將所有需要手動(dòng)執(zhí)行等流程文檔化
  • 將遷移到另外一個(gè)數(shù)據(jù)中新的流程化文檔
  • 將構(gòu)建和發(fā)布新版本的流程自動(dòng)化

開發(fā)流程

待辦事項(xiàng):

  • 將所有的代碼和配置文件都存放到版本控制系統(tǒng)中
  • 為每個(gè)發(fā)布版本創(chuàng)建一個(gè)新的發(fā)布分支

外部依賴

示例問題:

  • 這次發(fā)布依賴哪些第三方代碼模闲,數(shù)據(jù)、服務(wù)橄浓、或者事件?
  • 是否有任何合作伙伴依賴于你的服務(wù)?發(fā)布時(shí)是否需要通知他們?
  • 當(dāng)我們或者第三方提供商無法在指定截止日期前完成工作時(shí),會(huì)發(fā)生什么陌兑?

發(fā)布計(jì)劃

在大型分布式系統(tǒng)中,很少有能夠瞬間完成的事件锭亏。就算能夠做到,為了保障可靠性锅减,這樣快速發(fā)布也并不一定是好主意糖儡。復(fù)雜的發(fā)布過程可能需要在不同子系統(tǒng)上單獨(dú)啟動(dòng)各個(gè)功能,每個(gè)配置更新都可能需要數(shù)小時(shí)才能完成怔匣。在測(cè)試實(shí)例中可以工作的配置文件并不能夠保障一次性被推送到生產(chǎn)實(shí)例上握联。有時(shí)候?yàn)榱顺晒Πl(fā)布,可能要進(jìn)行一個(gè)復(fù)雜的操作過程或者編寫特殊的代碼來保障流程的正確性。

待辦事項(xiàng):

  • 為該服務(wù)發(fā)布制定一個(gè)發(fā)布計(jì)劃金闽,將其中每一項(xiàng)任務(wù)對(duì)應(yīng)到具體的人
  • 針對(duì)發(fā)布計(jì)劃中的每一步分析危險(xiǎn)性纯露,并制定對(duì)應(yīng)的備用方案

過載行為和壓力測(cè)試

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市代芜,隨后出現(xiàn)的幾起案子埠褪,更是在濱河造成了極大的恐慌,老刑警劉巖蜒犯,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異荞膘,居然都是意外死亡罚随,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門羽资,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淘菩,“玉大人,你說我怎么就攤上這事屠升〕备模” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵腹暖,是天一觀的道長(zhǎng)汇在。 經(jīng)常有香客問我,道長(zhǎng)脏答,這世上最難降的妖魔是什么糕殉? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮殖告,結(jié)果婚禮上阿蝶,老公的妹妹穿的比我還像新娘。我一直安慰自己黄绩,他們只是感情好羡洁,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著爽丹,像睡著了一般筑煮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上粤蝎,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天咆瘟,我揣著相機(jī)與錄音,去河邊找鬼诽里。 笑死袒餐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播灸眼,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼卧檐,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了焰宣?” 一聲冷哼從身側(cè)響起霉囚,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匕积,沒想到半個(gè)月后盈罐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闪唆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年盅粪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悄蕾。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡票顾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帆调,到底是詐尸還是另有隱情奠骄,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布番刊,位于F島的核電站含鳞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芹务。R本人自食惡果不足惜民晒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锄禽。 院中可真熱鬧潜必,春花似錦、人聲如沸沃但。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宵晚。三九已至垂攘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淤刃,已是汗流浹背晒他。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留逸贾,地道東北人陨仅。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓津滞,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親灼伤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子触徐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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