完美避坑!記一次Elasticsearch集群遷移架構(gòu)實(shí)戰(zhàn)

前言

Elastic自身設(shè)計(jì)了集群分片的負(fù)載平衡機(jī)制捌袜,當(dāng)有新數(shù)據(jù)節(jié)點(diǎn)加入集群或者離開(kāi)集群说搅,集群會(huì)自動(dòng)平衡分片的負(fù)載分布。

需求背景

公司原有大數(shù)據(jù)平臺(tái)基于公有云構(gòu)建虏等,由于種種原因弄唧,現(xiàn)在需要遷移到自建機(jī)房,Elasticsearch集群承擔(dān)了大數(shù)據(jù)平臺(tái)主要的對(duì)外查詢(xún)需求霍衫,也有部分實(shí)時(shí)計(jì)算需求基于Elasticsearch實(shí)現(xiàn)候引,所以需要在不影響應(yīng)用系統(tǒng)體驗(yàn)的情況下做到平滑的遷移。本次分享講述我們?nèi)绾芜M(jìn)行平滑遷移以及如何避坑敦跌。

需要遷移的主要有兩部分:

對(duì)外提供的服務(wù)API澄干,這些API是與Elastic集群綁定的,屬于業(yè)務(wù)場(chǎng)景定制化開(kāi)發(fā)柠傍;

Elasticsearch集群遷移麸俘,數(shù)據(jù)需要遷移,節(jié)點(diǎn)也需要全部遷移携兵。

圖示:公有云集群+自建機(jī)房集群示意圖疾掰,業(yè)務(wù)系統(tǒng)查詢(xún)圖

遷移策略

大數(shù)據(jù)平臺(tái)的Elastic集群直接對(duì)外提供實(shí)時(shí)查詢(xún)服務(wù),任何影響Elastic集群平穩(wěn)的操作都應(yīng)該避免徐紧,那我們的集群遷移策略也側(cè)重平穩(wěn)静檬,時(shí)間上可以寬松一些,遷移主要的工作有以下幾個(gè):

關(guān)閉集群自動(dòng)平衡并级;

啟動(dòng)自有機(jī)房新節(jié)點(diǎn)與公有云自建集群組成一個(gè)集群拂檩;

人工遷移集群數(shù)據(jù)到新節(jié)點(diǎn);

外圍訪問(wèn)切換到新節(jié)點(diǎn)嘲碧;

關(guān)閉公有云節(jié)點(diǎn)稻励;

開(kāi)啟集群自動(dòng)平衡。

遷移步驟

遷移過(guò)程中有很多步驟操作,是有嚴(yán)格先后順序的望抽,如果出錯(cuò)則會(huì)造成集群動(dòng)蕩加矛,影響應(yīng)用體驗(yàn)。此時(shí)Elastic的版本是6.5.X煤篙,當(dāng)時(shí)最新的版本斟览,遷移完成之后也全部升級(jí)到6.8.X。

1辑奈、原有集群架構(gòu)

圖示:原有集群架構(gòu)苛茂,數(shù)據(jù)節(jié)點(diǎn)與管理節(jié)點(diǎn)分離

1)Elasticsearch節(jié)點(diǎn)有很多角色(管理節(jié)點(diǎn)、數(shù)據(jù)節(jié)點(diǎn)鸠窗,協(xié)調(diào)節(jié)點(diǎn))妓羊,默認(rèn)單節(jié)點(diǎn)常用角色全部開(kāi)啟。所以在早期搭建Elastic集群時(shí)稍计,就按照角色分離的職責(zé)將管理節(jié)點(diǎn)與數(shù)據(jù)節(jié)點(diǎn)分離部署躁绸,這也是后面集群遷移能夠順利進(jìn)行的重要前提。多數(shù)初學(xué)者在剛剛接觸Elastic投入生產(chǎn)環(huán)境時(shí)會(huì)犯一個(gè)錯(cuò)誤丙猬,節(jié)點(diǎn)角色不分離涨颜,當(dāng)數(shù)據(jù)節(jié)點(diǎn)的資源消耗過(guò)度會(huì)導(dǎo)致集群管理節(jié)點(diǎn)響應(yīng)變慢费韭,從而影響整體集群響應(yīng)茧球。

2)Elastic對(duì)外提供服務(wù)時(shí)中間會(huì)增加一層負(fù)載代理,如定制服務(wù)API與實(shí)時(shí)計(jì)算應(yīng)用訪問(wèn)Elastic集群都需要走代理星持。

3)Hadoop集群與Elastic集群互相訪問(wèn)是基于官方提供的ES-Hadoop驅(qū)動(dòng)包抢埋,由于實(shí)現(xiàn)原理的限制,不能做代理督暂,所以是直接訪問(wèn)揪垄,都是離線任務(wù)交互。

2逻翁、配置新集群

1)因?yàn)槭沁w移到新集群節(jié)點(diǎn)饥努,原有節(jié)點(diǎn)最后都需要關(guān)閉,新集群節(jié)點(diǎn)同樣也需要管理節(jié)點(diǎn)與數(shù)據(jù)節(jié)點(diǎn)分離八回,新舊節(jié)點(diǎn)需要平滑遷移酷愧,所以新舊節(jié)點(diǎn)在啟動(dòng)之后就需要在同一集群中,新節(jié)點(diǎn)Hosts同時(shí)指向新管理節(jié)點(diǎn)與舊管理節(jié)點(diǎn) 缠诅,關(guān)鍵設(shè)置如下:

2)新集群服務(wù)器采用的全部是物理機(jī)溶浴,CPU核數(shù)很多,內(nèi)存充足管引,掛載了多個(gè)硬盤(pán)士败,為了充分利用物理機(jī)性能,所以單服務(wù)器會(huì)部署多實(shí)例褥伴,主要是部署多個(gè)數(shù)據(jù)節(jié)點(diǎn)谅将。在同一機(jī)器啟動(dòng)多個(gè)Elastic實(shí)例漾狼,需要做資源隔離,尤其是CPU核數(shù)隔離饥臂,CPU的核數(shù)決定了Elastic默認(rèn)線程池的線程數(shù)邦投,如果不做設(shè)置,默認(rèn)啟動(dòng)多個(gè)數(shù)據(jù)實(shí)例擅笔,會(huì)出現(xiàn)資源競(jìng)爭(zhēng)問(wèn)題志衣,設(shè)置如下:

3)公有云與自建機(jī)房直接通過(guò)專(zhuān)線連接,新舊集群節(jié)點(diǎn)在啟動(dòng)之后依然是一個(gè)集群猛们。

圖示:新舊集群示意圖與多實(shí)例示意圖

3念脯、禁用集群數(shù)據(jù)平衡

Elasticsearch集群有自動(dòng)的數(shù)據(jù)分片平衡分配機(jī)制,默認(rèn)是按照分片的數(shù)量平均分布弯淘,集群每個(gè)數(shù)據(jù)節(jié)點(diǎn)上的索引分片數(shù)量默認(rèn)是相同的绿店,最多有奇偶不一致。

當(dāng)有新的帶有數(shù)據(jù)角色節(jié)點(diǎn)加入集群或者離開(kāi)集群庐橙,集群會(huì)默認(rèn)啟動(dòng)自動(dòng)平衡機(jī)制假勿,索引分片會(huì)在數(shù)據(jù)節(jié)點(diǎn)之間平衡漂移,達(dá)到平均分布之后停止态鳖,頻繁的集群節(jié)點(diǎn)加入或者下線會(huì)嚴(yán)重影響集群的IO转培,影響集群響應(yīng)速度,所以要盡量避免此情況發(fā)生浆竭。說(shuō)到這里浸须,在我的從業(yè)中,發(fā)現(xiàn)很多初級(jí)運(yùn)維人員在部署Elastic集群時(shí)邦泄,會(huì)很喜歡設(shè)置系統(tǒng)級(jí)別Elastic實(shí)例進(jìn)程自動(dòng)啟動(dòng)删窒,這個(gè)其實(shí)是個(gè)很糟糕的機(jī)制,當(dāng)發(fā)現(xiàn)服務(wù)器Elastic實(shí)例關(guān)閉顺囊,不是馬上重啟肌索,而是需要人工介入分析具體原因,如果頻繁關(guān)閉重啟特碳,這樣很容易造成集群?jiǎn)栴}诚亚。

1)第一個(gè)是禁用集群自動(dòng)平衡,首先要禁止集群新創(chuàng)建索引测萎,新索引之間分配到新的數(shù)據(jù)節(jié)點(diǎn)亡电,其次防止新的數(shù)據(jù)節(jié)點(diǎn)啟動(dòng)之后,集群分片開(kāi)始平衡遷移硅瞧,影響集群IO份乒,設(shè)置如下:

2)第二個(gè)是限制已有索引數(shù)據(jù)的分布范圍,暫時(shí)只容許分布在舊的數(shù)據(jù)節(jié)點(diǎn)上,舊集群數(shù)據(jù)節(jié)點(diǎn)在早期部署時(shí)并未設(shè)置自定義標(biāo)簽或辖,所以只能通過(guò)設(shè)置IP范圍限制瘾英,還有就是后面在遷移數(shù)據(jù)時(shí)需要按照索引維度逐步遷移,控制集群遷移的并行度颂暇。設(shè)置如下:


4缺谴、啟動(dòng)新集群數(shù)據(jù)節(jié)點(diǎn)

在禁用舊集群的數(shù)據(jù)自動(dòng)平衡之后,啟動(dòng)新集群數(shù)據(jù)節(jié)點(diǎn)耳鸯,這一步是安全的湿蛔,可以全部啟動(dòng),此時(shí)集群數(shù)據(jù)節(jié)點(diǎn)有很多县爬,舊數(shù)據(jù)節(jié)點(diǎn)有數(shù)據(jù)阳啥,新數(shù)據(jù)節(jié)點(diǎn)無(wú)數(shù)據(jù),新的數(shù)據(jù)節(jié)點(diǎn)無(wú)任何查詢(xún)與寫(xiě)入财喳。

由于新數(shù)據(jù)節(jié)點(diǎn)是全新搭建察迟,可以提前設(shè)置節(jié)點(diǎn)自定義屬性,方便之后運(yùn)維設(shè)置耳高。設(shè)置如下:

圖示:僅優(yōu)先啟動(dòng)數(shù)據(jù)節(jié)點(diǎn)

5扎瓶、切換集群訪問(wèn)

Elasticsearch集群主要有幾個(gè)使用方:

1)Hadoop平臺(tái)離線數(shù)據(jù)寫(xiě)入ES,從ES抽取數(shù)據(jù)泌枪。Elastic提供了Hadoop直連訪問(wèn)驅(qū)動(dòng)概荷。如Hive是通過(guò)創(chuàng)建映射表與Elasticsearch索引關(guān)聯(lián)的,新的數(shù)據(jù)節(jié)點(diǎn)啟動(dòng)之后工闺,原有所有Hive-Es映射表需要全部重新創(chuàng)建乍赫,更換其中的IP+PORT指向;由于Hive有很多與Elastic關(guān)聯(lián)的表陆蟆,所以短時(shí)間內(nèi)沒(méi)有那么快替換完成,新舊數(shù)據(jù)節(jié)點(diǎn)需要共存一段時(shí)間惋增,不能在數(shù)據(jù)遷移完成之后馬上關(guān)閉叠殷。

2)業(yè)務(wù)系統(tǒng)應(yīng)用實(shí)時(shí)查詢(xún)。這種切換比較簡(jiǎn)單诈皿,Elastic集群對(duì)外提供了代理訪問(wèn)林束,業(yè)務(wù)系統(tǒng)應(yīng)用訪問(wèn)首先要調(diào)用大數(shù)據(jù)提供的API,這些定制化的API內(nèi)部也是通過(guò)代理訪問(wèn)Elastic集群稽亏。

3)大數(shù)據(jù)中心應(yīng)用實(shí)時(shí)計(jì)算數(shù)據(jù)寫(xiě)入壶冒。實(shí)時(shí)計(jì)算程序上游有kafka隊(duì)列,基于kafka自帶的offset機(jī)制截歉,在新集群?jiǎn)?dòng)實(shí)時(shí)計(jì)算應(yīng)用胖腾,然后關(guān)閉舊集群實(shí)時(shí)計(jì)算應(yīng)用,就可以完成切換。

6咸作、手動(dòng)轉(zhuǎn)移數(shù)據(jù)

為什么要手動(dòng)遷移數(shù)據(jù) 锨阿?

公有云與新集群機(jī)房是跨網(wǎng)段,網(wǎng)絡(luò)帶寬有限记罚;

集群中有很多大索引墅诡,單索引數(shù)據(jù)超過(guò)數(shù)百GB,這種索引移動(dòng)會(huì)會(huì)很傷集群IO桐智;

新舊數(shù)據(jù)節(jié)點(diǎn)會(huì)共存一段時(shí)間末早,自動(dòng)平衡會(huì)導(dǎo)致大量的跨網(wǎng)絡(luò)的查詢(xún)與寫(xiě)入,很傷網(wǎng)絡(luò)IO说庭。

遷移數(shù)據(jù)的原則如下:

索引數(shù)據(jù)量小的優(yōu)先荐吉;

離線更新的索引數(shù)據(jù)優(yōu)先;

業(yè)務(wù)系統(tǒng)查詢(xún)頻率低索引數(shù)據(jù)的優(yōu)先口渔;

遷移索引數(shù)據(jù)控制并行度样屠,每次操作控制在網(wǎng)絡(luò)帶寬限制之內(nèi)。

遷移數(shù)據(jù)也是通過(guò)限制索引分布IP范圍缺脉,設(shè)置如下:


7痪欲、關(guān)閉舊集群數(shù)據(jù)節(jié)點(diǎn)

關(guān)閉舊集群數(shù)據(jù)節(jié)點(diǎn)是一個(gè)逐步的過(guò)程,一個(gè)一個(gè)關(guān)閉攻礼,在一段時(shí)間內(nèi)新舊集群數(shù)據(jù)節(jié)點(diǎn)需要共存业踢,應(yīng)用訪問(wèn)切換并沒(méi)有那么快進(jìn)行,且要支持隨時(shí)回滾操作礁扮。關(guān)閉舊集群據(jù)節(jié)點(diǎn)有2個(gè)前提條件知举,如下:

舊集群索引數(shù)據(jù)必須遷移完成;

集群訪問(wèn)切換必須已經(jīng)完成太伊。

圖示:關(guān)閉舊集群數(shù)據(jù)節(jié)點(diǎn)

8雇锡、啟動(dòng)新集群管理節(jié)點(diǎn)

為什么要在最后啟動(dòng)新集群管理節(jié)點(diǎn)?并且同步關(guān)閉舊集群管理節(jié)點(diǎn)僚焦?

一個(gè)Elasticsearch集群只有一個(gè)工作管理節(jié)點(diǎn)锰提,負(fù)責(zé)維護(hù)集群所有的元數(shù)據(jù)信息;其余的是備選管理節(jié)點(diǎn)芳悲,只是同步集群元數(shù)據(jù)信息立肘,不參與協(xié)調(diào)管理。工作主節(jié)點(diǎn)關(guān)閉集群需要重新選舉工作主節(jié)點(diǎn)名扛,此時(shí)集群會(huì)處于半停頓狀態(tài)谅年,雖然很快,也會(huì)有影響肮韧;

舊集群已經(jīng)有5個(gè)管理節(jié)點(diǎn)融蹂,其中一個(gè)是工作主節(jié)點(diǎn)旺订,其余4個(gè)是備選節(jié)點(diǎn),因?yàn)镋lastic版本是6.5.X殿较,原有的集群腦裂因子設(shè)置是3=(5/2+1)耸峭,當(dāng)啟動(dòng)新集群的管理節(jié)點(diǎn),若網(wǎng)絡(luò)出現(xiàn)短暫通信問(wèn)題淋纲,集群腦裂因子設(shè)置會(huì)無(wú)效劳闹。

切換新舊管理節(jié)點(diǎn)的策略如下:

每啟動(dòng)一個(gè)新集群管理節(jié)點(diǎn) ,關(guān)閉一個(gè)舊集群備選管理節(jié)點(diǎn)洽瞬;

最后關(guān)閉舊集群工作管理節(jié)點(diǎn)本涕,集群重新選舉新的工作管理節(jié)點(diǎn)。

圖示:?jiǎn)?dòng)新集群管理節(jié)點(diǎn)

9伙窃、啟用集群自動(dòng)平衡

在集群遷移之前菩颖,已經(jīng)禁用了集群的自動(dòng)平衡機(jī)制,集群遷移結(jié)束之后为障,需要恢復(fù)這種機(jī)制晦闰。


涉及技術(shù)

1、集群彈性

在我們能如此平滑的完成Elasticsearch從公有云遷移到自有機(jī)房鳍怨,得益于與共用集群這個(gè)概念呻右。

個(gè)人認(rèn)為這是Elasticsearch最大特性賣(mài)點(diǎn),設(shè)計(jì)上任意節(jié)點(diǎn)都可以很容易加入集群或者離開(kāi)集群鞋喇,集群都可以彈性的平滑擴(kuò)展声滥,基本不影響系統(tǒng)運(yùn)行穩(wěn)定;

在業(yè)務(wù)系統(tǒng)發(fā)展早期侦香,可以部署少量節(jié)點(diǎn)落塑,發(fā)展后期可以部署更多節(jié)點(diǎn)或者部署更強(qiáng)的服務(wù)器,以達(dá)到最佳的性?xún)r(jià)比配置罐韩,從成本與性能平衡憾赁;

自動(dòng)化運(yùn)維方面節(jié)約成本,相比傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)集群規(guī)模龐大之后伴逸,需要關(guān)注的點(diǎn)很多缠沈,而Elastic很少,大中型集群規(guī)模以下幾乎無(wú)需專(zhuān)門(mén)的Elastic運(yùn)維人員错蝴。

2、集群選舉

主從架構(gòu)模式颓芭,一個(gè)集群只能有一個(gè)工作狀態(tài)的管理節(jié)點(diǎn)顷锰,其余管理節(jié)點(diǎn)是備選,備選數(shù)量原則上不限制亡问。很多大數(shù)據(jù)產(chǎn)品管理節(jié)點(diǎn)僅支持一主一從官紫,如Greenplum肛宋、Hadoop、Prestodb束世;

工作管理節(jié)點(diǎn)自動(dòng)選舉酝陈,工作管理節(jié)點(diǎn)關(guān)閉之后自動(dòng)觸發(fā)集群重新選舉,無(wú)需外部三方應(yīng)用毁涉,無(wú)需人工干預(yù)沉帮。很多大數(shù)據(jù)產(chǎn)品需要人工切換或者借助第三方軟件應(yīng)用,如Greenplum贫堰、Hadoop穆壕、Prestodb。

3其屏、節(jié)點(diǎn)角色

Elasticsearch支持多種節(jié)點(diǎn)角色喇勋,一個(gè)節(jié)點(diǎn)可以支持多個(gè)角色,也可以支持一種角色偎行。

圖示:集群節(jié)點(diǎn)角色

節(jié)點(diǎn)角色說(shuō)明:

Master川背,管理節(jié)點(diǎn),管理集群元數(shù)據(jù)信息蛤袒,集群節(jié)點(diǎn)信息熄云,集群索引元數(shù)據(jù)信息;

Voting汗盘,投票節(jié)點(diǎn)皱碘,參與集群管理節(jié)點(diǎn)選舉投票,注意7.X以上版本才支持隐孽;

Data癌椿,數(shù)據(jù)節(jié)點(diǎn),存儲(chǔ)實(shí)際數(shù)據(jù)菱阵,提供初步聯(lián)合查詢(xún)踢俄,初步聚合查詢(xún),也可以作為協(xié)調(diào)節(jié)點(diǎn)晴及;

Ingest都办,數(shù)據(jù)處理節(jié)點(diǎn),類(lèi)似ETL處理虑稼;

Coordinate琳钉,協(xié)調(diào)節(jié)點(diǎn),數(shù)據(jù)查詢(xún)協(xié)調(diào)蛛倦、數(shù)據(jù)寫(xiě)入?yún)f(xié)調(diào)歌懒;

Machine Learning,機(jī)器學(xué)習(xí)節(jié)點(diǎn)溯壶,模型訓(xùn)練與模型預(yù)測(cè)及皂。

4甫男、協(xié)調(diào)路由

Elasticsearch集群中有多個(gè)節(jié)點(diǎn),其中任一節(jié)點(diǎn)都可以查詢(xún)數(shù)據(jù)或者寫(xiě)入數(shù)據(jù)验烧,集群內(nèi)部節(jié)點(diǎn)會(huì)有路由機(jī)制協(xié)調(diào)板驳,轉(zhuǎn)發(fā)請(qǐng)求到索引分片所在的節(jié)點(diǎn)。我們?cè)谶w移集群時(shí)采用應(yīng)用代理切換碍拆,外部訪問(wèn)從舊集群數(shù)據(jù)節(jié)點(diǎn)切換到新集群數(shù)據(jù)節(jié)點(diǎn)若治,就是基于此特點(diǎn)。

圖示:集群路由示意圖倔监,查詢(xún)過(guò)程/更新過(guò)程

5直砂、分片副本

分片與副本是Elasticsearch集群實(shí)現(xiàn)分布式最重要前提。

分片機(jī)制浩习,一個(gè)索引可以分成多個(gè)分片静暂,分片數(shù)據(jù)可以分布在任意集群數(shù)據(jù)節(jié)點(diǎn)上,此機(jī)制可以保證我們遷移大的索引數(shù)據(jù)時(shí)谱秽,按照分片一個(gè)一個(gè)遷移洽蛀,而不用一次性遷移所有的分片,有效減少磁盤(pán)IO與網(wǎng)絡(luò)IO疟赊;

副本機(jī)制郊供,一個(gè)索引主分片可以有多個(gè)副本分片,主分片與副本分片可以任意切換近哟,無(wú)需人工切換驮审。這種機(jī)制可以保證我們?cè)谶w移大的數(shù)據(jù)索引時(shí),僅遷移主分片數(shù)據(jù)即可吉执,有效減少磁盤(pán)IO與網(wǎng)絡(luò)IO疯淫。


6、分布過(guò)濾

Elasticsearch本身提供了多種索引分片分布過(guò)濾操作戳玫,特別是在集群規(guī)模比較大時(shí)熙掺,需要按照業(yè)務(wù)領(lǐng)域隔離集群資源。如有的業(yè)務(wù)索引是歷史數(shù)據(jù)咕宿,數(shù)據(jù)量很大币绩,僅偶爾低頻率查詢(xún),可以做一些冷熱分離設(shè)置府阀。


總結(jié)

Elastic集群遷移到物理機(jī)之后缆镣,運(yùn)行性能較之前有很大的提高,并行寫(xiě)入性能提升好幾倍试浙,查詢(xún)與寫(xiě)入交叉影響降低很多费就;

Elastic官方文檔非常詳細(xì)的描述了各種特性功能,但并沒(méi)有針對(duì)數(shù)據(jù)遷移專(zhuān)門(mén)列舉一個(gè)完整的步驟川队,掌握Elastic最好的方式是實(shí)戰(zhàn)與理論并行力细,深入Elastic背后的實(shí)現(xiàn)原理,嘗試多種項(xiàng)目的實(shí)戰(zhàn)固额。

在跨越速運(yùn)大數(shù)據(jù)部門(mén)任職時(shí)眠蚂,基于公司實(shí)際需求,得出的一些經(jīng)驗(yàn)與思考斗躏,提供后來(lái)者借鑒參考逝慧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市啄糙,隨后出現(xiàn)的幾起案子笛臣,更是在濱河造成了極大的恐慌,老刑警劉巖隧饼,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沈堡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡燕雁,警方通過(guò)查閱死者的電腦和手機(jī)诞丽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拐格,“玉大人僧免,你說(shuō)我怎么就攤上這事∧笞牵” “怎么了懂衩?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)金踪。 經(jīng)常有香客問(wèn)我浊洞,道長(zhǎng),這世上最難降的妖魔是什么热康? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任沛申,我火速辦了婚禮,結(jié)果婚禮上姐军,老公的妹妹穿的比我還像新娘铁材。我一直安慰自己,他們只是感情好奕锌,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布著觉。 她就那樣靜靜地躺著,像睡著了一般惊暴。 火紅的嫁衣襯著肌膚如雪饼丘。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天辽话,我揣著相機(jī)與錄音肄鸽,去河邊找鬼卫病。 笑死,一個(gè)胖子當(dāng)著我的面吹牛典徘,可吹牛的內(nèi)容都是我干的蟀苛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼逮诲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼帜平!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起梅鹦,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤裆甩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后齐唆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體嗤栓,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蝶念,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抛腕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡媒殉,死狀恐怖担敌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情廷蓉,我是刑警寧澤全封,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站桃犬,受9級(jí)特大地震影響刹悴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜攒暇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一土匀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧形用,春花似錦就轧、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至镇饺,卻和暖如春乎莉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工惋啃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留哼鬓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓肥橙,卻偏偏與公主長(zhǎng)得像魄宏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子存筏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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