RabbitMQ集群架構(gòu)

RabbitMQ集群架構(gòu)模式

主備模式

實(shí)現(xiàn)RabbitMQ的高可用集群,一般在并發(fā)和數(shù)據(jù)量不高的情況下,這種模式非常的好且簡(jiǎn)單丸逸。主備模式也稱為Warren模式

主備模式:主節(jié)點(diǎn)提供讀寫超陆,從節(jié)點(diǎn)不提供讀寫服務(wù)谢肾,只是負(fù)責(zé)提供備份服務(wù)蟀俊,備份節(jié)點(diǎn)的主要功能是在主節(jié)點(diǎn)宕機(jī)時(shí)钦铺,完成自動(dòng)切換 從-->主,從而繼續(xù)提供服務(wù)
主從模式:主節(jié)點(diǎn)提供讀寫肢预,從節(jié)點(diǎn)只讀

  • 主備模式:所謂rabbitmq另外一種模式就是warren(兔子窩)矛洞,就是一個(gè)主/備方案(主節(jié)點(diǎn)如果掛了,從節(jié)點(diǎn)提供服務(wù)而已误甚,和activemq利用zookeeper做主/備一樣)


    主備模式
  • HaProxy配置:

 listen rabbitmq_cluster
  bind 0.0.0.0:5672 
  mode tcp  #配置TCP模式
  balance roundrobin #簡(jiǎn)單的輪詢
  server bhz76 192.168.11.12:5672 check inter 5000 rise 2 fall 3 #主節(jié)點(diǎn)
  server bhz77 192.168.11.13:5672 backup check inter 5000 rise 2 fall 3 #備用節(jié)點(diǎn)

備注:rabbitmq集群節(jié)點(diǎn)配置 #inter 每隔5秒對(duì)mq集群做健康檢查缚甩,2次正確證明服務(wù)器可用,3次失敗證明服務(wù)器不可用窑邦,并且配置主備機(jī)制

遠(yuǎn)程模式

遠(yuǎn)程模式:遠(yuǎn)距離通信和復(fù)制擅威, 遠(yuǎn)程模式可以實(shí)現(xiàn)雙活的一種模式,簡(jiǎn)稱 shovel 模式冈钦,所謂Shovel就是我們可以把消息進(jìn)行不同數(shù)據(jù)中心的復(fù)制工作郊丛,我們可以跨地域的讓兩個(gè)mq集群互聯(lián),遠(yuǎn)距離通信和復(fù)制瞧筛。我們下面看一下Shovel架構(gòu)模型:

image.png

如圖所示厉熟,有兩個(gè)異地的 MQ 集群(可以是更多的集群),當(dāng)用戶在地區(qū) 1 這里下單了较幌,系統(tǒng)發(fā)消息到 1 區(qū)的 MQ 服務(wù)器揍瑟,發(fā)現(xiàn) MQ 服務(wù)已超過設(shè)定的閾值,負(fù)載過高乍炉,這條消息就會(huì)被轉(zhuǎn)到 地區(qū) 2 的 MQ 服務(wù)器上绢片,由 2 區(qū)的去執(zhí)行后面的業(yè)務(wù)邏輯,相當(dāng)于分?jǐn)偽覀兊姆?wù)壓力岛琼。
在使用了 shovel 插件后底循,模型變成了近端同步確認(rèn),遠(yuǎn)端異步確認(rèn)的方式槐瑞,大大提高了訂單確認(rèn)速度熙涤,并且還能保證可靠性。
遠(yuǎn)程模式Shovel集群的拓?fù)鋱D:
image.png

如上圖所示困檩,當(dāng)我們的消息到達(dá) exchange祠挫,它會(huì)判斷當(dāng)前的負(fù)載情況以及設(shè)定的閾值,如果負(fù)載不高就把消息放到我們正常的 warehouse_goleta 隊(duì)列中悼沿,如果負(fù)載過高了等舔,就會(huì)放到 backup_orders 隊(duì)列中。backup_orders 隊(duì)列通過 shovel 插件與另外的 MQ 集群進(jìn)行同步數(shù)據(jù)显沈,把消息發(fā)到第二個(gè) MQ 集群上。

shovel 集群的配置,首先啟動(dòng) rabbitmq 插件拉讯,命令如下:

rabbitmq-plugins enable amqp_client
rabbitmq-plugins enable  rabbitmq_shovel
  • 創(chuàng)建rabbitmq.conf文件:touch /etc/rabbitmq/rabbitmq.config
  • 添加配置見rabbitmq.config
  • 最后我們需要資源服務(wù)器和目的服務(wù)器都使用相同的配置文件(rabbitmq.config)
    具體配置 自行百度

鏡像模式(常用)

  • 鏡像模式:集群模式非常經(jīng)典的就是Mirror鏡像模式涤浇,保證100%數(shù)據(jù)不丟失,在實(shí)際工作中用的最多的魔慷。并且實(shí)現(xiàn)集群非常的簡(jiǎn)單只锭,一般互聯(lián)網(wǎng)大廠都會(huì)構(gòu)建這種鏡像集群模式。

  • Mirror鏡像隊(duì)列院尔,目的是為了保證rabbitmq數(shù)據(jù)的高可靠性解決方案蜻展,主要就是實(shí)現(xiàn)數(shù)據(jù)的同步,一般來講是2-3個(gè)實(shí)現(xiàn)數(shù)據(jù)同步(對(duì)于100%數(shù)據(jù)可靠性解決方案一般是3個(gè)節(jié)點(diǎn))集群架構(gòu)如下:


    RabbitMQ集群鏡像模式

    如上圖所示邀摆,用 KeepAlived 做了 HA-Proxy 的高可用纵顾,然后有 3 個(gè)節(jié)點(diǎn)的 MQ 服務(wù),消息發(fā)送到主節(jié)點(diǎn)上栋盹,主節(jié)點(diǎn)通過 mirror 隊(duì)列把數(shù)據(jù)同步到其他的 MQ 節(jié)點(diǎn)施逾,這樣來實(shí)現(xiàn)其高可靠。

多活模式

  • 多活模式:這種模式也是實(shí)現(xiàn)異地?cái)?shù)據(jù)復(fù)制的主流模式例获,因?yàn)镾hovel模式配置比較復(fù)雜汉额,所以一般來說實(shí)現(xiàn)異地集群都是使用雙活或者多活模式來實(shí)現(xiàn)的。這種模式需要依賴rabbitmq的federation插件榨汤,可以實(shí)現(xiàn)繼續(xù)的可靠AMQP數(shù)據(jù)通信蠕搜,多活模式在實(shí)際配置與應(yīng)用非常的簡(jiǎn)單。

  • RabbitMQ部署架構(gòu)采用雙中心模式(多中心)收壕,那么在兩套(或多套)數(shù)據(jù)中心中各部署一套R(shí)abbitMQ集群妓灌,各中心之間還需要實(shí)現(xiàn)部分隊(duì)列消息共享。多活集群架構(gòu)如下:


    RabbitMQ集群多活模式

Federation插件是一個(gè)不需要構(gòu)建Cluster啼器,而在Brokers之間傳輸消息的高性能插件旬渠,F(xiàn)ederation插件可以在Brokers或者Cluster之間傳輸消息,連接雙方可以使用不同的users和vistual hosts端壳,雙方也可以使用版本不同的RabbitMQ和Erlang告丢。Federation插件使用AMQP協(xié)議通信,可以接收不連續(xù)的傳輸损谦。


如上圖所示岖免,F(xiàn)ederation Exchanges,可以看成Downstream從Upstream主動(dòng)拉取消息,但并不是拉取所有消息照捡,必須是在Downstream上已經(jīng)明確定義Bindings關(guān)系的Exchange颅湘,也就是有實(shí)際的物理Queue來接收消息,才會(huì)從Upstream拉取消息到Downstream栗精。使用AMQP協(xié)議實(shí)施代理間通信闯参,Downstream會(huì)將綁定關(guān)系組合在一起瞻鹏,綁定/解綁命令將會(huì)發(fā)送到Upstream交換機(jī)。因此鹿寨,F(xiàn)ederationExchange只接收具有訂閱的消息新博。

構(gòu)建高可靠的RabbitMQ集群

可以根據(jù)這個(gè)架構(gòu)圖,做一些RabbitMQ集群完善脚草,主要是將內(nèi)存節(jié)點(diǎn)作為負(fù)載赫悄,磁盤節(jié)點(diǎn)作為存儲(chǔ)。


image.png

RabbitMQ集群環(huán)境節(jié)點(diǎn)說明:


搭建RabbitMQ Server高可用集群:
搭建 RabbitMQ Server 高可用集群
RabbitMQ集群搭建和使用
https://www.cnblogs.com/xiaoxing/p/9258345.html

HAProxy
HAProxy是一款提供高可用性馏慨、負(fù)載均衡以及基于TCP(第四層)和HTTP(第七層)應(yīng)用的代理軟件埂淮,支持虛擬主機(jī),他是免費(fèi)写隶、快速并且可靠的一種解決方案倔撞。HAProxy特別適用于那些負(fù)載特大的web站點(diǎn),這些站點(diǎn)通常又需要會(huì)話保持或七層處理樟澜。HAProxy運(yùn)行在時(shí)下的硬件上误窖,完全可以支撐數(shù)以萬計(jì)的并發(fā)連接。并且它的運(yùn)行模式使得它可以很簡(jiǎn)單安全的整合進(jìn)您當(dāng)前的架構(gòu)中秩贰,同時(shí)可以保護(hù)你的web服務(wù)器不被暴露到網(wǎng)絡(luò)上霹俺。
HAProxy借助于OS上幾種常見的技術(shù)來實(shí)現(xiàn)性能的最大化:

  • 1、單進(jìn)程毒费、時(shí)間驅(qū)動(dòng)模型顯著降低上下文切換的開銷及內(nèi)存占用
  • 2丙唧、在任何可用的情況下,單緩沖(single buffering)機(jī)制能以不復(fù)制任何數(shù)據(jù)的方式完成讀寫操作觅玻,這會(huì)節(jié)約大量的CPU時(shí)鐘周期及內(nèi)存帶寬
  • 3想际、借助于Linux2.6上的splice()系統(tǒng)調(diào)用,HAProxy可以實(shí)現(xiàn)零復(fù)制轉(zhuǎn)發(fā)(Zero-copy- forwarding)溪厘,在linux3.5及以上的OS上還可以實(shí)現(xiàn)零復(fù)制啟動(dòng)(zero-starting)
  • 4胡本、內(nèi)存分配器在固定大小的內(nèi)存池中可實(shí)現(xiàn)即時(shí)內(nèi)存分配,這能夠顯著減少創(chuàng)建一個(gè)會(huì)話的時(shí)長(zhǎng)
  • 5畸悬、樹型存儲(chǔ):側(cè)重于使用其作者多年前開發(fā)的彈性二叉樹侧甫,實(shí)現(xiàn)了以O(shè)(log(N))的低開銷來保持計(jì)時(shí)器命令、保持運(yùn)行隊(duì)列命令蹋宦、管理輪詢及最少連接隊(duì)列披粟。

Haproxy+keepalived高可用集群實(shí)戰(zhàn)

KeepAlived

KeepAlived軟件主要是通過VRRP協(xié)議實(shí)現(xiàn)高可用功能的。VRRP是Virtual Router RedundancyProtocol(虛擬路由器冗余協(xié)議)的縮寫冷冗,VRRP出現(xiàn)的目的就是為了解決靜態(tài)路由單點(diǎn)故障問題的守屉,它能保證黨個(gè)別節(jié)點(diǎn)宕機(jī)時(shí),整個(gè)網(wǎng)絡(luò)可以不間斷地運(yùn)行蒿辙,所以拇泛,KeepAlived一方面具有配置管理LVS的功能滨巴,同時(shí)還具備對(duì)LVS下面節(jié)點(diǎn)進(jìn)行健康檢查差的功能,另一方面可實(shí)現(xiàn)系統(tǒng)網(wǎng)絡(luò)服務(wù)的高可用功能俺叭。

KeepAlived服務(wù)的三個(gè)重要功能:

  • 管理LVS負(fù)載均衡軟件
  • 實(shí)現(xiàn)LVS集群節(jié)點(diǎn)的健康檢查
  • 作為系統(tǒng)網(wǎng)絡(luò)服務(wù)的高可用性(failover)

KeepAlived高可用原理
KeepAlived高可用服務(wù)對(duì)之間的故障轉(zhuǎn)移兢卵,是通過VRRP(Virtual Router Redundancy Protocol,虛擬路由器冗余協(xié)議)來實(shí)現(xiàn)的。在KeepAlived服務(wù)正常工作是绪颖,主Master節(jié)點(diǎn)會(huì)不斷地向備節(jié)點(diǎn)發(fā)送(多播的方式)心跳消息,用以告訴備Backup節(jié)點(diǎn)自己還活著甜奄,當(dāng)主master節(jié)點(diǎn)發(fā)生故障時(shí)柠横,就無法發(fā)送心跳消息,備節(jié)點(diǎn)也就因此無法繼續(xù)監(jiān)測(cè)到來自主Master節(jié)點(diǎn)的心跳了课兄,于是調(diào)用自身的接管程序牍氛,接管主Master節(jié)點(diǎn) 的IP資源及服務(wù)。當(dāng)主Master節(jié)點(diǎn)恢復(fù)時(shí)烟阐,備Backup節(jié)點(diǎn)又會(huì)釋放主節(jié)點(diǎn)故障時(shí)自身接管的IP資源和服務(wù)搬俊,恢復(fù)到原來的備用角色。

Haproxy+Keepalived高可用環(huán)境部署梳理:
https://www.cnblogs.com/mrlapulga/p/6871936.html
https://www.cnblogs.com/zhangan/p/10930570.html
https://www.cnblogs.com/kevingrace/p/5892169.html

RabbitMQ集群配置文件詳解

  • tcp_listeners 設(shè)置rabbitmq的監(jiān)聽端口蜒茄,默認(rèn)為5672
  • disk_free_limit 磁盤低水位線唉擂,若磁盤容量低于指定值則停止接收數(shù)據(jù),默認(rèn)值為{mem_relative, 1.0}, 即與內(nèi)存相關(guān)聯(lián)1:1檀葛,也可定制為多少byte.
  • vm_memeory_high_watemark玩祟, 設(shè)置內(nèi)存低水位線,若低于該水位線屿聋,則開啟流控機(jī)制空扎,默認(rèn)值為0.4,即內(nèi)存總量的40%
  • hipe_compile將部分rabbitmq代碼用High Performance Erlang compiler編譯润讥,可提升性能转锈,該參數(shù)是實(shí)驗(yàn)性,若出現(xiàn)erlang vm segfaults楚殿,應(yīng)關(guān)掉
  • force_fine_statistics撮慨,該參數(shù)屬于rabbitmq_mamagement,若為true這進(jìn)行精細(xì)化統(tǒng)計(jì)勒魔,但會(huì)影響性能
  • 集群節(jié)點(diǎn)模式:Disk為磁盤模式存儲(chǔ) / Ram為內(nèi)存模式存儲(chǔ)

RabbitMQ集群恢復(fù)與故障轉(zhuǎn)移

RabbitMQ 鏡像隊(duì)列集群的幾種故障場(chǎng)景 以及對(duì)應(yīng)的恢復(fù)方案:
前提: 節(jié)點(diǎn) A 和節(jié)點(diǎn) B 組成一個(gè)鏡像隊(duì)列

  • 場(chǎng)景1:A 先停了甫煞,B 后停

解決方案:該場(chǎng)景下 B 是 master,主要先啟動(dòng) B冠绢,再啟動(dòng) A 即可抚吠。或者 先啟動(dòng) A弟胀,在 30 秒內(nèi)啟動(dòng) B 即可恢復(fù)鏡像隊(duì)列

  • 場(chǎng)景2:A楷力、B 同時(shí)停機(jī)

解決方案:該場(chǎng)景可能是由于機(jī)房掉電等原因造成的喊式,只需要在 30 秒之內(nèi)連續(xù)啟動(dòng) A 和 B 即可恢復(fù)鏡像隊(duì)列

  • 場(chǎng)景 3 : A先停,B 后停萧朝,且 A 無法恢復(fù)

解決方案: 該場(chǎng)景是 場(chǎng)景 1 的加強(qiáng)版岔留,因?yàn)?B 是 master, 所以等 B 起來以后检柬,在 B 節(jié)點(diǎn)上調(diào)用控制臺(tái)命令: rabbitmqctl forget_cluster_node A 解除與 A 的 cluster 關(guān)系献联,再將新的 slave 節(jié)點(diǎn)加入 B 即可重新恢復(fù)鏡像隊(duì)列

  • 場(chǎng)景 4: A 先停,B 后停何址,且 B 無法恢復(fù)

方案:該場(chǎng)景是場(chǎng)景 3 的升級(jí)版里逆,比較難處理,原因是 因?yàn)?master 節(jié)點(diǎn)無法恢復(fù)用爪。在 3.1.X 時(shí)代之前沒有什么好的解決方案原押,但是在 3.4.2 以后的版本可以試試 - -offline 這個(gè)參數(shù)。
因?yàn)?B 是 主節(jié)點(diǎn)偎血,所以直接啟動(dòng) A 是不行的诸衔,當(dāng) A 無法啟動(dòng)的時(shí)候,也就沒有辦法在 A 節(jié)點(diǎn)上調(diào)用之前的 rabbitmq forget_cluster_node B 命令了颇玷。新版本中笨农, forget_cluster_node 支持 -offline 參數(shù)。這就意味著允許 rabbitmqctl 在理想節(jié)點(diǎn)上執(zhí)行該命令帖渠,迫使 rabbitMQ 會(huì) mock 一個(gè) 一個(gè)節(jié)點(diǎn)代表 A磁餐,執(zhí)行 forget_cluster_node 命令將 B 剔除 cluster,然后 A 就可以正常啟動(dòng)了阿弃,最后將新的 slave 節(jié)點(diǎn)加入 A 即可重新恢復(fù)鏡像隊(duì)列

  • 場(chǎng)景 5 : A 先停诊霹,B 后停,且 A渣淳、B 均無法恢復(fù)脾还,但是能得到 A 或 B 的磁盤文件

方案:只能通過恢復(fù)數(shù)據(jù)的方式進(jìn)行嘗試恢復(fù),將 A 或 B 的數(shù)據(jù)庫(kù)文件 默認(rèn)在 $RABBIT_HOME/var/lib/ 目錄下入愧,把它 拷貝到新節(jié)點(diǎn)的對(duì)應(yīng)目錄下鄙漏,再將新節(jié)點(diǎn)的 hostname 改成 A 或者 B 的 hostname。如果是 A 節(jié)點(diǎn)(slave)的磁盤文件棺蛛,則按照?qǐng)鼍?4 處理即可怔蚌;如果是 B 節(jié)點(diǎn)(master)的磁盤文件,則按照?qǐng)鼍?3 處理旁赊,最后將新的 slave 加入到新節(jié)點(diǎn)后完成恢復(fù)桦踊。

  • 場(chǎng)景 6: A 先停、B 后停终畅,且 A 籍胯、B 均無法恢復(fù)竟闪,且得不到 A 或 B 的磁盤文件

方案:可以洗洗睡了~沒有方案,解決不了杖狼!

高級(jí)插件的使用

延遲插件(即延遲隊(duì)列)的作用:

比如消息的延遲推送炼蛤、定時(shí)任務(wù)(消息)的執(zhí)行。包括一些消息重試策略的配合使用蝶涩,以及用于業(yè)務(wù)削峰限流理朋、降級(jí)的異步延遲消息機(jī)制,都是延遲隊(duì)列的實(shí)際應(yīng)用場(chǎng)景绿聘。

延遲插件的安裝:

  • 1暗挑、下載插件(兩種方式):

A、下載zip包斜友,下載地址:http://www.rabbitmq.com/community-plugins.html

image.png

/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/plugins
B、在指定目錄下載該插件:/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/plugins 目錄下執(zhí)行wget https://dl.bintray.com/rabbitmq/community-plugins/3.6.x/rabbitmq_delayed_message_exchange/rabbitmq_delayed_message_exchange-20171215-3.6.x.zip

  • 2垃它、將插件/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/plugins 目錄下

解壓插件:unzip rabbitmq_delayed_message_exchange-20171215-3.6.x.zip

  • 3鲜屏、啟動(dòng)延時(shí)插件:rabbitmq-plugins enable rabbitmq_delayed_message_exchange
  • 4、訪問地址: http://{ip}:15672/#/exchanges


    image.png

Rabbitmq的延遲消息隊(duì)列實(shí)現(xiàn):
rabbitmq的延遲消息隊(duì)列實(shí)現(xiàn)

RabbitMQ 延遲隊(duì)列国拇,消息延遲推送

RabbitMQ 延遲隊(duì)列插件應(yīng)用 以及 java 代碼使用延遲消息

參考:
http://www.reibang.com/p/588e1c959f03
http://www.reibang.com/p/b7cc32b94d2a
http://www.reibang.com/p/8fe6947efa53

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末洛史,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子酱吝,更是在濱河造成了極大的恐慌也殖,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件务热,死亡現(xiàn)場(chǎng)離奇詭異忆嗜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)崎岂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門捆毫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冲甘,你說我怎么就攤上這事绩卤。” “怎么了江醇?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵濒憋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我陶夜,道長(zhǎng)凛驮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任条辟,我火速辦了婚禮辐烂,結(jié)果婚禮上遏插,老公的妹妹穿的比我還像新娘。我一直安慰自己纠修,他們只是感情好胳嘲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扣草,像睡著了一般了牛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辰妙,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天鹰祸,我揣著相機(jī)與錄音,去河邊找鬼密浑。 笑死蛙婴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的尔破。 我是一名探鬼主播街图,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼懒构!你這毒婦竟也來了餐济?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤胆剧,失蹤者是張志新(化名)和其女友劉穎絮姆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秩霍,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡篙悯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了铃绒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辕近。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖匿垄,靈堂內(nèi)的尸體忽然破棺而出移宅,到底是詐尸還是另有隱情,我是刑警寧澤椿疗,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布漏峰,位于F島的核電站,受9級(jí)特大地震影響届榄,放射性物質(zhì)發(fā)生泄漏浅乔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望靖苇。 院中可真熱鬧席噩,春花似錦、人聲如沸贤壁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脾拆。三九已至馒索,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間名船,已是汗流浹背绰上。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渠驼,地道東北人蜈块。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓狐血,卻偏偏與公主長(zhǎng)得像褪子,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锡溯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355