kafka入門基礎(chǔ)(二)

什么是kafka瓶殃?

kafka是分布式發(fā)布-訂閱消息系統(tǒng)堤舒,是一種分布式的消息隊(duì)列工具

kafka是一個(gè)分布式的,可分區(qū)的右钾,可復(fù)制的消息系統(tǒng)

kafka對消息保存的時(shí)候根據(jù)topic進(jìn)行分類轻要,發(fā)送消息者稱為Producer复旬,消息接受者稱為consumer,此外kafka集群由多個(gè)kafka實(shí)例組成冲泥,每個(gè)實(shí)例稱為broker

依賴zookeeper來保證系統(tǒng)的可用性驹碍,保存元數(shù)據(jù)信息

Kafka的設(shè)計(jì)

1,吞吐量

數(shù)據(jù)磁盤持久化:消息不在內(nèi)存中cache柏蘑,直接寫入到磁盤幸冻,充分利用磁盤的順序讀寫性能

zero-copy:減少IO操作步驟

數(shù)據(jù)批量發(fā)送

數(shù)據(jù)壓縮

Topic劃分為多個(gè)partition,提高parallelism

2咳焚,負(fù)載均衡

producer根據(jù)用戶指定的算法,將消息發(fā)送到指定的partition

存在多個(gè)partiiton庞溜,每個(gè)partition有自己的replica革半,每個(gè)replica分布在不同的Broker節(jié)點(diǎn)上

多個(gè)partition需要選取出lead partition,lead partition負(fù)責(zé)讀寫流码,并由zookeeper負(fù)責(zé)fail over

通過zookeeper管理broker與consumer的動態(tài)加入與離開

3又官,拉取系統(tǒng)

kafka broker會持久化數(shù)據(jù),broker沒有內(nèi)存壓力漫试,因此六敬,consumer非常適合采取pull的方式消費(fèi)數(shù)據(jù)

consumer根據(jù)消費(fèi)能力自主控制消息拉取速度

consumer根據(jù)自身情況自主選擇消費(fèi)模式,例如批量驾荣,重復(fù)消費(fèi)外构,從尾端開始消費(fèi)等

4普泡,可擴(kuò)展性

當(dāng)需要增加broker結(jié)點(diǎn)時(shí),新增的broker會向zookeeper注冊审编,而producer及consumer會根據(jù)注冊在zookeeper上的watcher感知這些變化撼班,并及時(shí)作出調(diào)整。

kafka特點(diǎn)

1垒酬,高吞吐率

Kafka 每秒可以生產(chǎn)約 25萬消息(50 MB)砰嘁,每秒處理 55 萬消息(110 MB)

2,持久化數(shù)據(jù)存儲

可進(jìn)行持久化操作勘究。將消息持久化到磁盤矮湘,因此可用于批量消費(fèi),例如 ETL口糕,以及實(shí)時(shí)應(yīng)用程序缅阳。通過將數(shù)據(jù)持久化到硬盤以及 replication 防止數(shù)據(jù)丟失。

3走净,分布式系統(tǒng)易于擴(kuò)展

所有的 producer券时、broker 和 consumer都會有多個(gè),均為分布式的伏伯。無需停機(jī)即可擴(kuò)展機(jī)器

4橘洞,客戶端狀態(tài)維護(hù)

消息被處理的狀態(tài)是在 consumer 端維護(hù),而不是由 server 端維護(hù)说搅。減輕服務(wù)器端的壓力炸枣,為客戶端會話管理提供了更好的靈活性。

ETL

Extract-Transform-load 數(shù)據(jù)抽取弄唧,轉(zhuǎn)換和裝載适肠,能夠完成數(shù)據(jù)從數(shù)據(jù)源到目標(biāo)倉庫轉(zhuǎn)換的過程,從而有效的構(gòu)建起數(shù)據(jù)倉庫

數(shù)據(jù)抽取

從各種互聯(lián)網(wǎng)資源候引、業(yè)務(wù)系統(tǒng)侯养、各種數(shù)據(jù)庫及數(shù)據(jù)格式、各種應(yīng)用中抽取數(shù)據(jù)澄干」淇可以看出數(shù)據(jù)源是異構(gòu)的,各種關(guān)系型和非關(guān)系型數(shù)據(jù)庫麸俘、半格式化文本文件辩稽、CSV文件、XML文件等从媚。這些數(shù)據(jù)被抽取出來后逞泄,暫存于內(nèi)存中,等待后續(xù)處理

數(shù)據(jù)轉(zhuǎn)換

需要對加載的數(shù)據(jù)做轉(zhuǎn)換、清洗等處理

數(shù)據(jù)裝載

將轉(zhuǎn)換之后的數(shù)據(jù)裝載到目的庫中

概念

1喷众,topic主題

一個(gè)topic是對一組消息的歸納

在一個(gè)Kafka集群中各谚,可以創(chuàng)建多個(gè)topic主題,以topic主題為單位管理消息侮腹,kafka中多個(gè)topic主題之間是互相隔離互不影響嘲碧,從而可以在一個(gè)Kafka集群中通過創(chuàng)建多個(gè)topic主題實(shí)現(xiàn)不同的使用者獨(dú)立使用不同topic主題而互不影響。

2父阻,partition分區(qū)

topic可以劃分出多個(gè)分區(qū)愈涩,利用分區(qū)機(jī)制保證每個(gè)分區(qū)的數(shù)據(jù)量不會太大, 可以在單個(gè)服務(wù)器上保存

分區(qū)是kafka實(shí)現(xiàn)負(fù)載均衡和失敗恢復(fù)分布式數(shù)據(jù)存儲的基本單元

每個(gè)分區(qū)可以單獨(dú)發(fā)布和消費(fèi)加矛,為并發(fā)操作topic提供了可能

3履婉,offset序號

每個(gè)分區(qū)都由一系列有序的,不可變的消息組成斟览,這些消息被連續(xù)追加到分區(qū)中

分區(qū)中的每個(gè)消息都由一個(gè)連續(xù)的序列號叫做offset毁腿,用來在分區(qū)中唯一的標(biāo)識這個(gè)消息

在一個(gè)可配置的時(shí)間段內(nèi),Kafka集群保留所有發(fā)布的消息苛茂,不管這些消息有沒有被消費(fèi)已烤。

可以設(shè)置消息的保存策略,制定保存期限妓羊,在期限到來之前胯究,數(shù)據(jù)會一直存在,無論是否被消費(fèi)國躁绸,當(dāng)保存期限結(jié)束裕循,消息會被連續(xù)的擦除,釋放空間

一系列的機(jī)制保證了kafka當(dāng)中數(shù)據(jù)的連續(xù)讀寫磁盤净刮,保證了性能剥哑,從而使得kafka的性能與數(shù)據(jù)量無關(guān),只和磁盤的性能是常量級的

4淹父,Replication復(fù)本

每個(gè)分區(qū)擁有若干復(fù)本株婴,這些復(fù)本存放在不同的服務(wù)器中

若干個(gè)副本中,有一個(gè)稱為leader負(fù)責(zé)讀寫操作暑认,而其他的作為Leader督暂,負(fù)責(zé)同步leader中的數(shù)據(jù),對外只提供讀的能力

kafka不是以broker為單位劃分leader穷吮,follwer,而是以副本為單位劃分饥努;這樣捡鱼,集群中的每一個(gè)broker是持有一部分分區(qū)的leader和另一部分分區(qū)的follwer,從而將寫的壓力分?jǐn)偟讲煌腷roken中取酷愧,利用分布式分?jǐn)倢懙膲毫菡嵘阅?/p>

5缠诅,Producer生產(chǎn)者

生產(chǎn)者將消息發(fā)布到制定的主題中,默認(rèn)使用簡單的負(fù)載均衡機(jī)制選擇分區(qū)乍迄,如果需要可以通過特定的分區(qū)函數(shù)選擇分區(qū)管引,制定發(fā)布到哪個(gè)分區(qū)

6,Consumer消費(fèi)者

Consumer負(fù)責(zé)消費(fèi)主題中的數(shù)據(jù)闯两,消費(fèi)時(shí)由Consumer自己來維護(hù)會話產(chǎn)生的數(shù)據(jù)褥伴,實(shí)際上每個(gè)consumer唯一需要維護(hù)的數(shù)據(jù)是消息在日志中的位置,也就是offset漾狼,一般情況下隨著Consumer不斷的讀取消息重慢,這offset的值不斷增加,從而實(shí)現(xiàn)連續(xù)讀取數(shù)據(jù)

7,Broker

集群匯中的一臺或多臺服務(wù)器統(tǒng)稱為broker

消費(fèi)者消費(fèi)數(shù)據(jù)的模式

發(fā)布訂閱模式:多個(gè)Consumer可以同時(shí)從服務(wù)端讀取數(shù)據(jù)逊躁,Consumer之間互不影響似踱,每個(gè)Consumer都可以讀取到全量的數(shù)據(jù)。達(dá)成了多個(gè)Consumer之間共享數(shù)據(jù)的效果稽煤。

隊(duì)列模式:多個(gè)Consumer可以同時(shí)從服務(wù)端讀取消息核芽,每個(gè)消息只被其中一個(gè)Consumer讀到。達(dá)成多個(gè)Consumer之間競爭數(shù)據(jù)的效果酵熙。

8轧简,消費(fèi)者組的概念

在Kafka中可以將多個(gè)消費(fèi)者組成一個(gè)消費(fèi)者組。

在消費(fèi)者組內(nèi)绿店,多個(gè)消費(fèi)者而形成競爭狀態(tài)吉懊,互相搶奪數(shù)據(jù)。同一份消息只能被一個(gè)消費(fèi)者組內(nèi)的消費(fèi)者消費(fèi)一次假勿。

在消費(fèi)者組之間借嗽,多個(gè)消費(fèi)者形成共享狀態(tài),共享數(shù)據(jù)转培。同一份消息會同時(shí)被多個(gè)消費(fèi)者組各自消費(fèi)到

Kafka在大數(shù)據(jù)環(huán)境下的優(yōu)勢

分布式存儲數(shù)據(jù)恶导,易于擴(kuò)展

利用磁盤存儲數(shù)據(jù),按照主題浸须,分區(qū)來分布式的存放數(shù)據(jù)惨寿,持久化存儲,提供海量數(shù)據(jù)的存儲能力删窒,數(shù)據(jù)不會意外的丟失裂垦,提供了更好的可靠性,連續(xù)讀寫保證了性能肌索,性能和磁盤的性能有關(guān)蕉拢,和數(shù)據(jù)量的大小無關(guān)

發(fā)送數(shù)據(jù)流程

生產(chǎn)者根據(jù)制定的partition方法(round-robin,hash),將消息發(fā)布到制定topic的partition中

kafka集群接收到Producer發(fā)過來的消息后晕换,將其持久化到硬盤午乓,并保留消息指定時(shí)長(可配置),而不關(guān)注消息是否被消費(fèi)

Consumer從kafka中pull數(shù)據(jù)闸准,并控制獲取消息的offset

kafka是pull模式益愈,flume是push模式

Kafka的存儲策略

kafka通過topic來分主題存放數(shù)據(jù),主題內(nèi)又有分區(qū)夷家,分區(qū)還可以有多個(gè)副本 蒸其。

從物理結(jié)構(gòu)來看,分區(qū)本身是kafka存儲目錄下的一個(gè)文件夾瘾英,文件夾名稱是主題名加分區(qū)編號枣接,編號從0開始

分區(qū)的內(nèi)部還有segment的概念,其實(shí)就是在分區(qū)對應(yīng)的文件夾下產(chǎn)生的文件缺谴,

一個(gè)分區(qū)會被劃分為大小相等的若干個(gè)segment但惶,一方面保證了分區(qū)的數(shù)據(jù)被劃分到多個(gè)文件中(保證了文件的體積不會太大),另一方面可以基于這些segment文件進(jìn)行歷史數(shù)據(jù)的刪除湿蛔,提高效率

一個(gè)segment由一個(gè).log和一個(gè).index文件組成膀曾,其中.log文件為數(shù)據(jù)文件用來存儲數(shù)據(jù)分段數(shù)據(jù),.index為索引文件保存對應(yīng)的.log文件的索引信息

這兩個(gè)文件的命名規(guī)則:partition全局的第一個(gè)segment從0開始阳啥,后續(xù)的每個(gè)segment文件名為上一個(gè)segment文件的最后一條消息的offset值

通過查找.index文件可以獲知每個(gè)存儲在當(dāng)前segment中的offset在.log文件中的開始位置

每條日志有固定格式:包括offset編號添谊,日志長度,key的長度察迟,通過這個(gè)固定格式的數(shù)據(jù)可以確定出當(dāng)前offset的結(jié)束位置斩狱,從而對數(shù)據(jù)進(jìn)行讀取

Kafka的可靠性保障AR ISR OSR

1,AR

kafka分區(qū)中扎瓶,維護(hù)了一個(gè)AR列表所踊,其中包括了所有的分區(qū)的副本編號,AR分為ISR和OSR

2概荷,ISR

同步列表秕岛,只有當(dāng)所有的ISR內(nèi)的副本都同步了leader中的數(shù)據(jù),數(shù)據(jù)才能被提交误证,才能被消費(fèi)者訪問

3继薛,OSR

非同步列表,OSR內(nèi)的副本是否同步了leader的數(shù)據(jù)愈捅,不影響數(shù)據(jù)的提交遏考,OSR內(nèi)的follower只是盡力的去同步leader,數(shù)據(jù)版本可能落后蓝谨。

最開始所有的副本都在ISR中诈皿,在kafka工作的過程中林束,如果某個(gè)副本同步速度慢于replica.lag.time.max.ms指定的閾值,則被踢出ISR 存入OSR稽亏,如果后續(xù)速度恢復(fù)可以回到ISR中

這種方案是介于leader獨(dú)裁和所有民主方式之間,更加的靈活缕题,相對于zookeeper的過半同意過半存活機(jī)制截歉,提供了更好的可用性。犧牲了一部分的可靠性烟零,換來的可用性對于kafka這樣的消息隊(duì)列來說很有意義

LEO HW

1瘪松,LEO-LogEndOffset

分區(qū)的最新的數(shù)據(jù)的offset,只要有數(shù)據(jù)寫入分區(qū)锨阿,LEO就指向最新的數(shù)據(jù)宵睦,無論這個(gè)數(shù)據(jù)是否在ISR中同步完成

2,HW-HignWatermark

消費(fèi)者能夠看到的最大的offset墅诡,這個(gè)offset或者小于這個(gè)的offset的數(shù)據(jù)可以被消費(fèi)者訪問壳嚎;而大于這個(gè)offset的數(shù)據(jù),要么不存末早,要么沒有同步完成烟馅,外界無法訪問

分區(qū)同步數(shù)據(jù)的截?cái)鄼C(jī)制

如果leader宕機(jī),選舉出新的leader然磷,所有的副本都會講數(shù)據(jù)截?cái)嗟絣eader之前的hw位郑趁,保證所有的副本不會持有未同步完成的數(shù)據(jù),這個(gè)機(jī)制稱之為截?cái)鄼C(jī)制姿搜;此時(shí)即使舊的leader恢復(fù)寡润,稱為follwer,也要先截?cái)鄶?shù)據(jù)到宕機(jī)之前的hw為舅柜,再和新的leader同步數(shù)據(jù)梭纹,保證數(shù)據(jù)的可靠

截?cái)鄼C(jī)制保證了,在leader切換的過程中业踢,數(shù)據(jù)基于HW保持同步栗柒。

Kafka和RabbitMQ的區(qū)別

1,架構(gòu)方面不同

RabbitMQ遵循AMQP協(xié)議知举,RabbitMQ的broker由Exchange,Binding,queue組成瞬沦,其中exchange和binding組成了消息的路由鍵;客戶端Producer通過連接channel和server進(jìn)行通信雇锡,Consumer從queue獲取消息進(jìn)行消費(fèi)(長連接逛钻,queue有消息會推送到consumer端,consumer循環(huán)從輸入流讀取數(shù)據(jù))锰提。rabbitMQ以broker為中心曙痘;有消息的確認(rèn)機(jī)制芳悲。

kafka遵從一般的MQ結(jié)構(gòu),producer边坤,broker名扛,consumer唆香,以consumer為中心拧篮,消息的消費(fèi)信息保存的客戶端consumer上哪审,consumer根據(jù)消費(fèi)的點(diǎn)更扁,從broker上批量pull數(shù)據(jù)凸舵;無消息確認(rèn)機(jī)制疆前。

2戏挡,應(yīng)用場景

RabbitMQ固逗,循AMQP協(xié)議区拳,用于實(shí)時(shí)的對可靠性要求比較高的消息傳遞上拘领。

kafka主要用于處理活躍的流式數(shù)據(jù),大數(shù)據(jù)量的數(shù)據(jù)處理上

3,吞吐量

kafka具有高的吞吐量樱调,內(nèi)部采用消息的批量處理约素,zero-copy機(jī)制,數(shù)據(jù)的存儲和獲取是本地磁盤順序批量操作本涕,具有O(1)的復(fù)雜度业汰,消息處理的效率很高

rabbitMQ在吞吐量方面稍遜于kafka,他們的出發(fā)點(diǎn)不一樣菩颖,rabbitMQ支持對消息的可靠的傳遞样漆,支持事務(wù),不支持批量的操作晦闰;基于存儲的可靠性的要求存儲可以采用內(nèi)存或者硬盤放祟。

Kafka生產(chǎn)者生產(chǎn)數(shù)據(jù)的可靠性

生產(chǎn)者向leader發(fā)送數(shù)據(jù)時(shí),可以選擇需要的可靠性級別

通過request.required.acks參數(shù)設(shè)置(0:至多一次呻右,1:至少一次跪妥,-1:剛好一次)

0(至多一次):

生產(chǎn)者不停向leader發(fā)送數(shù)據(jù),而不需要leader反饋成功消息声滥,這種模式效率最高眉撵,可靠性最低,可能在發(fā)送過程中丟失數(shù)據(jù)落塑∨ε保可能在leader宕機(jī)時(shí)丟失數(shù)據(jù)(可能因?yàn)榫W(wǎng)絡(luò)的不穩(wěn)定丟失數(shù)據(jù)。Leader宕機(jī)后憾赁,宕機(jī)期間沒有接受到數(shù)據(jù)污朽,就丟失了)

1(默認(rèn),至少一次):

producer在ISR中的leader已成功收到數(shù)據(jù)并得到確認(rèn)后才會發(fā)送下一條數(shù)據(jù)龙考,如果等待響應(yīng)超時(shí)蟆肆,生產(chǎn)者自動重發(fā)數(shù)據(jù)矾睦。(不會因?yàn)榫W(wǎng)絡(luò)不穩(wěn)定而丟失,但可能在leader宕機(jī)而新數(shù)據(jù)未同步完成時(shí)炎功,因新的leader選舉后截?cái)辔赐綌?shù)據(jù)而造成丟失數(shù)據(jù)枚冗。如果網(wǎng)絡(luò)不穩(wěn)定,在重發(fā)的過程中亡问,可能會導(dǎo)致多數(shù)據(jù))

-1(恰好一次)

producer需要等待ISR中的leader和所有follower都確認(rèn)接收到數(shù)據(jù)后才算一次發(fā)送完成官紫,才會發(fā)送下一條數(shù)據(jù),如果等待響應(yīng)超時(shí)州藕,生產(chǎn)者自動重發(fā),數(shù)據(jù)可靠性最高(效率很低)。

但是這樣也不能保證數(shù)據(jù)完全不丟失酝陈,例如當(dāng)ISR中只有l(wèi)eader時(shí)床玻,此時(shí),leader宕機(jī)沉帮,如果不允許OSR中的follower成為新的leader可以保障寫入數(shù)據(jù)的一致性锈死,但除非原來的leader恢復(fù),否則集群一直無法恢復(fù)穆壕〈#或者可以允許OSR列表中的follower成為新的leader,但此時(shí)存在寫數(shù)據(jù)不一致的風(fēng)險(xiǎn)喇勋。

kafka還提供了min.insync.replicas參數(shù)缨该,這個(gè)參數(shù)要求ISR列表中至少要有指定數(shù)量個(gè)副本leader才可以接受數(shù)據(jù)

即使配置request.required.acks=-1,min.insync.replicas=2川背,也只能保證第二個(gè)層面的可靠性贰拿,即不丟數(shù)據(jù),但仍可能多數(shù)據(jù)熄云。如果想要實(shí)現(xiàn)恰好一次的語義膨更,則需要在這個(gè)基礎(chǔ)上進(jìn)一步的加上去重機(jī)制

Kafka提供了GUID機(jī)制,能夠在客戶端根據(jù)算法為每條日志增加一個(gè)全局唯一標(biāo)識缴允,重發(fā)時(shí)會保持GUID一致荚守,從而實(shí)現(xiàn)了標(biāo)識每條數(shù)據(jù)。

分布式系統(tǒng)中的不可能三角-CPA定理

Consistency一致性:分布式環(huán)境下练般,任意時(shí)間點(diǎn)中矗漾,數(shù)據(jù)是否一致

Availability可用性:任意節(jié)點(diǎn),是否具有完整的功能

Partition Toleerance分區(qū)容忍性:是否可以采用分布式模式踢俄,容忍多臺機(jī)器一起工作

在分布式系統(tǒng)開發(fā)中缩功,以上三個(gè)特性,最多可以滿足兩個(gè)都办,同時(shí)滿足以上三個(gè)特性的分布式系統(tǒng)是不可能的嫡锌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末虑稼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子势木,更是在濱河造成了極大的恐慌蛛倦,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啦桌,死亡現(xiàn)場離奇詭異溯壶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)甫男,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門且改,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人板驳,你說我怎么就攤上這事又跛。” “怎么了若治?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵慨蓝,是天一觀的道長。 經(jīng)常有香客問我端幼,道長礼烈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任婆跑,我火速辦了婚禮此熬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘洽蛀。我一直安慰自己摹迷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布郊供。 她就那樣靜靜地躺著峡碉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪驮审。 梳的紋絲不亂的頭發(fā)上鲫寄,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機(jī)與錄音疯淫,去河邊找鬼地来。 笑死,一個(gè)胖子當(dāng)著我的面吹牛熙掺,可吹牛的內(nèi)容都是我干的未斑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼币绩,長吁一口氣:“原來是場噩夢啊……” “哼蜡秽!你這毒婦竟也來了府阀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤芽突,失蹤者是張志新(化名)和其女友劉穎试浙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寞蚌,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡田巴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挟秤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壹哺。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖艘刚,靈堂內(nèi)的尸體忽然破棺而出斗躏,到底是詐尸還是另有隱情,我是刑警寧澤昔脯,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站笛臣,受9級特大地震影響云稚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沈堡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一静陈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧诞丽,春花似錦鲸拥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至懂衩,卻和暖如春撞叨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浊洞。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工牵敷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人法希。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓枷餐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親苫亦。 傳聞我的和親對象是個(gè)殘疾皇子毛肋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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