Doris節(jié)點(diǎn)管理和內(nèi)部流程

Doris中的節(jié)點(diǎn)

73F4B5A1-459E-4D88-A909-F5E52F80066B.png

FE

  • 主要負(fù)責(zé)用戶請(qǐng)求的接入
  • 查詢解析規(guī)劃
  • 元數(shù)據(jù)的管理
  • 節(jié)點(diǎn)管理相關(guān)工作

BE

  • 主要負(fù)責(zé)數(shù)據(jù)存儲(chǔ)
  • 查詢計(jì)劃的執(zhí)行

broker

  • 輕量無狀態(tài)節(jié)點(diǎn)颁股,上面封裝了一層文件讀寫的語義
  • 用于支持 Doris 讀寫遠(yuǎn)端存儲(chǔ)上的文件和目錄
  • Broker 通過提供一個(gè) RPC 服務(wù)端口來提供服務(wù)囱皿,是一個(gè)無狀態(tài)的 Java 進(jìn)程触幼,負(fù)責(zé)為遠(yuǎn)端存儲(chǔ)的讀寫操作封裝一些類 POSIX 的文件操作宛逗,如 open,pread腥寇,pwrite 等等奇颠。
  • 除此之外蒜撮,Broker 不記錄任何其他信息仑扑,所以包括遠(yuǎn)端存儲(chǔ)的連接信息览爵、文件信息、權(quán)限信息等等镇饮,都需要通過參數(shù)在 RPC 調(diào)用中傳遞給 Broker 進(jìn)程蜓竹,才能使得 Broker 能夠正確讀寫文件

FE節(jié)點(diǎn)管理

fe的角色

Follower

  • 所有 Follower 角色的 FE 節(jié)點(diǎn)會(huì)組成一個(gè)可選擇組,類似 Paxos 一致性協(xié)議里的組概念储藐。
  • 組內(nèi)會(huì)選舉出一個(gè) Follower 作為 Master
  • 保證元數(shù)據(jù)寫的可靠性
  • 一條元數(shù)據(jù)日志需要在多數(shù) Follower 節(jié)點(diǎn)寫入成功俱济,才算成功。
    • 比如3個(gè) FE 钙勃,2個(gè)寫入成功才可以蛛碌。這也是為什么 Follower 角色的個(gè)數(shù)需要是奇數(shù)的原因
  • 不參與數(shù)據(jù)的計(jì)算,如果系統(tǒng)是重計(jì)算辖源,則不考慮擴(kuò)展fe

Observer

  • 保證元數(shù)據(jù)讀的擴(kuò)展

為什么要引入obeserver蔚携?

  • 如果只存在follower節(jié)點(diǎn),那么當(dāng)橫向擴(kuò)展的時(shí)候會(huì)帶來元數(shù)據(jù)寫入的壓力

  • 所以引入obeserver只讀節(jié)點(diǎn)克饶,其只會(huì)輪訓(xùn)的同步flower的元數(shù)據(jù)酝蜒,但不參與選舉與元數(shù)據(jù)多數(shù)寫的策略

  • 當(dāng)加入多個(gè)observer的時(shí)候不會(huì)造成集群元數(shù)據(jù)寫的延遲

  • 其保證了元數(shù)據(jù)讀的擴(kuò)展,一般建議根據(jù)負(fù)載請(qǐng)求安裝observer的數(shù)量

    • 負(fù)載請(qǐng)求即高并發(fā)場(chǎng)景

fe啟動(dòng)流程

8B9CC0F7-6E7F-4DE9-A142-F7D75AC88E21.png

在1.2-SNAPSHOT中已經(jīng)變成Env.getCurrentEnv().initialize

元數(shù)據(jù)目錄結(jié)構(gòu)

22B3ABF9-E5F0-4871-8C35-4C7CCA5E3CD2.png

bdb:BDBJE的數(shù)據(jù)目錄

  • BDBJE:分布式嵌入式kv數(shù)據(jù)庫
  • Doris 元數(shù)據(jù)的元數(shù)據(jù)

Image

  • Image.2858:元數(shù)據(jù)鏡像文件
  • ROLE:記錄角色信息
  • VERSION:記錄集群信息
    • 認(rèn)證信息token
    • 集群id

在fe.conf中指定元數(shù)據(jù)目錄路徑

FE 啟動(dòng)流程 – 獲取節(jié)點(diǎn)信息和Helper信息

60425CE5-65DB-4ACE-91B6-D0DF3A356535.png
  • Catalog.getSelfHostPort()
    • IP + PORT 唯一確定一個(gè) FE 節(jié)點(diǎn)
  • Catalog.getHelperNode()
    • sh start_fe.sh –helper ip:port
      • 當(dāng)在集群中啟動(dòng)新fe節(jié)點(diǎn)的時(shí)候矾湃,需要為其指定master的信息
        • 新節(jié)點(diǎn)從Master節(jié)點(diǎn)拉取集群和角色信息
    • HelperNode:
      • 指向任一已存在的Follower

獲取集群和角色信息

首節(jié)點(diǎn)啟動(dòng)

4098FD6F-6286-475C-9E6A-C3F8CEF4E51A.png
  • 當(dāng)沒有指定helper的時(shí)候 isMyself()=true

    • 認(rèn)為自己就是fe的首節(jié)點(diǎn)

非首節(jié)點(diǎn)啟動(dòng)

8046E89A-43E6-456B-99BF-9F2D3DD42A3C.png
  • 非首節(jié)點(diǎn)啟動(dòng)會(huì)忽略本地存儲(chǔ)的集群信息亡脑,從helperNode中拉取信息

    • 從helper獲取信息

      • 獲取自身fe的role、cluster id 邀跃、token等

      • 如果遠(yuǎn)端節(jié)點(diǎn)沒有ready霉咨,會(huì)在循環(huán)中等待遠(yuǎn)端節(jié)點(diǎn)返回的信息

    • 進(jìn)行節(jié)點(diǎn)認(rèn)證

    • 比對(duì) cluster id 、token id

      • 將源端獲取的 cluster id 坞嘀、token id和本地存儲(chǔ)的 cluster id 躯护、token id比對(duì)

        • 如果本地沒有,則直接存儲(chǔ)

        • 如果本地有丽涩,需要和本地比對(duì)棺滞,判斷是否和上次加入的集群是同一個(gè)集群

          • 比對(duì)失敗就會(huì)啟動(dòng)失敗
    • 從helper node 節(jié)點(diǎn) pull new image,進(jìn)行元數(shù)據(jù)加載

加載元數(shù)據(jù)

BD68A47A-8D72-4B6D-AF5B-F28EFE614FC3.png

狀態(tài)監(jiān)聽

  • Catalog.createStateListener()

FE啟動(dòng)流程回顧

0064953C-4056-49DB-92BC-921E665EB684.png

Env.getCurrentEnv().initialize執(zhí)行流程

  • 確認(rèn)元數(shù)據(jù)目錄

  • 確定是否為helper節(jié)點(diǎn)

    • 如果不是矢渊,則從本地加載或創(chuàng)建元數(shù)據(jù)目錄

    • 如果是继准,則從helper node中獲取集群信息,并進(jìn)行節(jié)點(diǎn)認(rèn)證

  • 加載元數(shù)據(jù)

  • 開啟狀態(tài)監(jiān)聽

FE 啟動(dòng)流程 – 節(jié)點(diǎn)認(rèn)證

  • 防止錯(cuò)誤的節(jié)點(diǎn)加入集群

    • 新節(jié)點(diǎn)的 IP:PORT 必須在元數(shù)據(jù)中顯式注冊(cè)矮男。

    • 雙向認(rèn)證:

      • Master FE只會(huì)發(fā)送心跳給已注冊(cè)的FE節(jié)點(diǎn)移必,防止未注冊(cè)的節(jié)點(diǎn)被錯(cuò)誤加入。

      • 新增FE會(huì)校驗(yàn)Master FE發(fā)送的心跳信息中的FE信息毡鉴,防止接收到其他FE發(fā)送的錯(cuò)誤心跳崔泵。

        • role秒赤、cluster_id、token
  • 認(rèn)證代碼:org.apache.doris.httpv2.meta.MetaService.java

    • 均是restful api

    • /role?host=ip&port=9030

      • 檢查指定的[ip:port]是否已經(jīng)注冊(cè)憎瘸,并返回對(duì)應(yīng)的角色(Follower / Observer)
    • /version

      • 返回 VERSION 文件
    • /check

      • 返回 cluster_id 和 token 用于對(duì)端校驗(yàn)

FE ADD NODE

4E0E2CB2-BAA0-48CD-8DCA-46FF9B4C6875.png

刪除FE節(jié)點(diǎn)

FE節(jié)點(diǎn)刪除流程

執(zhí)行刪除命令

  • ALTER SYSTEM DROP FOLLOWER “ip:port”

  • ALTER SYSTEM DROP OBSERVER “ip:port”

執(zhí)行流程

接受命令節(jié)點(diǎn)的操作

29D637DD-A4CD-4321-B3E7-1C81EFC7FBCD.png

其他FE會(huì)同步這個(gè)“刪除FE節(jié)點(diǎn)”的元數(shù)據(jù)操作

  • EditLog.loadJournal()

  • 如果發(fā)現(xiàn)刪除的是自己入篮,直接退出。

E92F42C8-65C7-4A65-A6A5-12EEBC8D9B6B.png

BE ADD NODE

ADD BE NODE 流程

36C5AF37-4EBB-4C20-9F8C-60FC896693A3.png

注冊(cè)BE節(jié)點(diǎn)信息

  • ALTER SYSTEM ADD BACKEND ”ip:port”;

  • org.apache.doris.system.SystemInfoService.addBackend()

    • 在元數(shù)據(jù)中記錄新增節(jié)點(diǎn)的ip&port

Master FE 向 BE 發(fā)送心跳

  • org.apache.doris.system.HeartbeatMgr.java#BackendHeartbeatHandler

  • 心跳信息: gensrc/thrift/HeartbeatService.thrift#TMasterInfo

    • 心跳信息中會(huì)包含MasterInfo
9646B6B0-144A-4D10-A7CD-549003065764.png

BE接收心跳

37A98C8D-903C-4F6D-8786-D96589C5814A.png

epoch主要是一致性協(xié)議需要幌甘,即判斷發(fā)送方是不是真正的master潮售,類似raft協(xié)議

BE 啟動(dòng)流程 – 節(jié)點(diǎn)認(rèn)證

  • 防止錯(cuò)誤的節(jié)點(diǎn)加入集群

    • 新節(jié)點(diǎn)的 IP:PORT 必須在元數(shù)據(jù)中顯式注冊(cè)。

    • 雙向認(rèn)證:

      • FE只會(huì)發(fā)送心跳給已注冊(cè)的BE節(jié)點(diǎn)锅风,防止未注冊(cè)的節(jié)點(diǎn)被錯(cuò)誤加入酥诽。

      • BE會(huì)校驗(yàn)FE發(fā)送的心跳信息中的FE信息,防止接收到其他FE發(fā)送的錯(cuò)誤心跳皱埠。

      • FEIP肮帐、epoch、cluster_id漱逸、token

刪除BE NODE

刪除的兩種方式

  • DROP 和 DECOMMISSION

    • ALTER SYSTEM DROP BACKEND:直接刪除

      • org.apache.doris.system.SystemInfoService.dropBackend()
    • ALTER SYSTEM DECOMMISSION BACKEND:數(shù)據(jù)遷移后刪除

      • Org.apache.doris.alter.SystemHandler.process()

      • 標(biāo)記副本為“下線”狀態(tài)泪姨,觸發(fā)副本修復(fù)邏輯。全部數(shù)據(jù)遷移完成后饰抒,會(huì)自動(dòng) DROP BACKEND

        • FE 配置:drop_backend_after_decommission

          • true:在decommission結(jié)束后auto drop backend

FE節(jié)點(diǎn)沒有decommission操作的原因

  • fe節(jié)點(diǎn)是doris集群中負(fù)責(zé)元數(shù)據(jù)管理和查詢協(xié)調(diào)的節(jié)點(diǎn)肮砾。

    • 元數(shù)據(jù)是指描述doris集群中表、分區(qū)袋坑、副本等信息的數(shù)據(jù)仗处。

    • 元數(shù)據(jù)的正確性和一致性對(duì)于doris集群的正常運(yùn)行非常重要。

    • 因此枣宫,doris集群采用了一種叫做raft的協(xié)議來保證元數(shù)據(jù)的高可用性和強(qiáng)一致性婆誓。

  • raft協(xié)議是一種分布式一致性算法,它要求集群中的每個(gè)節(jié)點(diǎn)都有一個(gè)角色也颤,分為leader洋幻、follower和candidate三種。

    • leader節(jié)點(diǎn)是負(fù)責(zé)處理客戶端請(qǐng)求和同步數(shù)據(jù)給其他節(jié)點(diǎn)的節(jié)點(diǎn)翅娶,follower節(jié)點(diǎn)是跟隨leader節(jié)點(diǎn)并復(fù)制其數(shù)據(jù)的節(jié)點(diǎn)文留,candidate節(jié)點(diǎn)是在leader節(jié)點(diǎn)失效時(shí),試圖成為新的leader節(jié)點(diǎn)的節(jié)點(diǎn)竭沫。
  • doris集群中的fe節(jié)點(diǎn)也遵循raft協(xié)議燥翅,但是為了簡化實(shí)現(xiàn),它將角色分為兩種:follower和observer蜕提。

    • follower節(jié)點(diǎn)相當(dāng)于raft協(xié)議中的leader或follower節(jié)點(diǎn)森书,observer節(jié)點(diǎn)相當(dāng)于raft協(xié)議中的非投票型follower節(jié)點(diǎn)。

    • follower節(jié)點(diǎn)會(huì)參與元數(shù)據(jù)的寫入和選舉,而observer節(jié)點(diǎn)只會(huì)同步元數(shù)據(jù)并提供讀服務(wù)凛膏。

    • 集群中的一個(gè)follower節(jié)點(diǎn)會(huì)被選舉為master節(jié)點(diǎn)杨名,負(fù)責(zé)處理元數(shù)據(jù)的寫請(qǐng)求。

    • 如果master節(jié)點(diǎn)宕機(jī)或者網(wǎng)絡(luò)異常译柏,集群會(huì)自動(dòng)選舉一個(gè)新的master節(jié)點(diǎn)镣煮。

  • 因此,用戶無法直接下線一個(gè)fe節(jié)點(diǎn)鄙麦,而只能通過修改fe.conf文件中的role參數(shù)來改變fe節(jié)點(diǎn)的角色。

    • 如果想要下線一個(gè)fe節(jié)點(diǎn)镊折,可以將其role參數(shù)設(shè)置為observer胯府,并重啟該fe節(jié)點(diǎn)。

    • 這樣恨胚,該fe節(jié)點(diǎn)就不會(huì)再參與元數(shù)據(jù)的寫入和選舉骂因,也不會(huì)被選為master節(jié)點(diǎn)。

    • 如果想要徹底刪除一個(gè)fe節(jié)點(diǎn)赃泡,可以先將其role參數(shù)設(shè)置為observer寒波,并等待其同步完所有元數(shù)據(jù)后,再停止該fe節(jié)點(diǎn)升熊,并刪除其元數(shù)據(jù)目錄俄烁。

BE有decommission的原因

  • decommission操作可以用于安全地下線一個(gè)be節(jié)點(diǎn),而不影響集群的數(shù)據(jù)可用性和一致性级野。

  • decommission操作會(huì)先將該be節(jié)點(diǎn)上的所有數(shù)據(jù)分片遷移到其他be節(jié)點(diǎn)上页屠,然后再從集群中刪除該be節(jié)點(diǎn)。這樣蓖柔,可以避免數(shù)據(jù)丟失或者副本不足的風(fēng)險(xiǎn)辰企。

  • decommission操作也可以用于實(shí)現(xiàn)集群的擴(kuò)縮容,或者在節(jié)點(diǎn)增加新的磁盤后况鸣,將數(shù)據(jù)均衡到新的磁盤上牢贸。

be節(jié)點(diǎn)下線過程中和沒下線時(shí)工作職能的區(qū)別主要體現(xiàn)在:

  • be節(jié)點(diǎn)下線過程中不會(huì)參與數(shù)據(jù)導(dǎo)入,而沒下線時(shí)會(huì)參與數(shù)據(jù)導(dǎo)入镐捧。

  • be節(jié)點(diǎn)下線過程中只能提供有限的查詢服務(wù)潜索,而沒下線時(shí)可以提供完整的查詢服務(wù)。

  • be節(jié)點(diǎn)下線過程中會(huì)消耗更多的網(wǎng)絡(luò)和磁盤資源愤估,而沒下線時(shí)則不會(huì)帮辟。

  • Be下線過程中依然在集群中,但是不會(huì)被分配新的數(shù)據(jù)分片玩焰,也不會(huì)參與數(shù)據(jù)導(dǎo)入和選舉由驹。只有當(dāng)be節(jié)點(diǎn)完成數(shù)據(jù)遷移并從集群中刪除自己后,才會(huì)完全退出集群。

節(jié)點(diǎn)管理常見問題

broker節(jié)點(diǎn)

  • 該節(jié)點(diǎn)是無狀態(tài)的蔓榄,可以隨意刪除

  • 而像fe并炮、be節(jié)點(diǎn)這種有狀態(tài)的節(jié)點(diǎn)就不能隨意刪除了

priority_network配置需要主動(dòng)配置

  • 無論BE、FE甥郑,這個(gè)參數(shù)我們?cè)诎惭b的時(shí)候都是必須要配置的逃魄,特別是當(dāng)一臺(tái)機(jī)器擁有多個(gè)IP地址的時(shí)候,我們要為FE澜搅、 BE 指定唯一的IP地址

    • 避免拿到127.0.0.1 抑或docker虛擬網(wǎng)橋的ip

Invalid cluster id

  • 這個(gè)錯(cuò)誤可能會(huì)在show backends 或 show frontends 命令的結(jié)果中出現(xiàn)伍俘。通常出現(xiàn)在某個(gè)FE或BE節(jié)點(diǎn)的錯(cuò)誤信息列中。

  • 這個(gè)錯(cuò)誤的含義是勉躺,Master FE向這個(gè)節(jié)點(diǎn)發(fā)送心跳信息后癌瘾,該節(jié)點(diǎn)發(fā)現(xiàn)心跳信息中攜帶的 cluster id和本地存儲(chǔ)的 cluster id不同,所以拒絕回應(yīng)心跳饵溅。

  • Doris的 Master FE 節(jié)點(diǎn)會(huì)主動(dòng)發(fā)送心跳給各個(gè)FE或BE節(jié)點(diǎn)妨退,并且在心跳信息中會(huì)攜帶一個(gè)cluster_id。

    • cluster_id是在一個(gè)集群初始化時(shí)蜕企,由Master FE生成的唯一集群標(biāo)識(shí)咬荷。

    • 當(dāng)FE或BE第一次收到心跳信息后,則會(huì)將cluster_id以文件的形式保存在本地轻掩。

    • FE的該文件在元數(shù)據(jù)目錄的image/目錄下幸乒,BE則在所有數(shù)據(jù)目錄下都有一個(gè)cluster_id文件。

    • 之后放典,每次節(jié)點(diǎn)收到心跳后逝变,都會(huì)用本地cluster_id的內(nèi)容和心跳中的內(nèi)容作比對(duì),如果不一致奋构,則拒絕響應(yīng)心跳壳影。

  • 該機(jī)制是一個(gè)節(jié)點(diǎn)認(rèn)證機(jī)制,以防止接收到集群外的節(jié)點(diǎn)發(fā)送來的錯(cuò)誤的心跳信息弥臼。

  • 如果需要恢復(fù)這個(gè)錯(cuò)誤宴咧。

    • 首先要先確認(rèn)所有節(jié)點(diǎn)是否都是正確的集群中的節(jié)點(diǎn)。

    • 之后径缅,對(duì)于FE節(jié)點(diǎn)掺栅,可以嘗試修改元數(shù)據(jù)目錄下的 image/VERSION 文件中的 cluster_id 值后重啟FE。

    • 對(duì)于BE節(jié)點(diǎn)纳猪,則可以刪除所有數(shù)據(jù)目錄下的 cluster_id 文件后重啟 BE

被 DROP 的 BE 能否恢復(fù)氧卧?

FE 的故障恢復(fù)

  • 核心思路:通過清空“元數(shù)據(jù)的元數(shù)據(jù)”使FE恢復(fù)到單節(jié)點(diǎn)初始狀態(tài)

    • 元數(shù)據(jù)的元數(shù)據(jù)

      • Doris 的元數(shù)據(jù)主要存儲(chǔ)4類數(shù)據(jù):

        • 用戶數(shù)據(jù)信息。

          • 包括數(shù)據(jù)庫氏堤、表的 Schema沙绝、分片信息等。
        • 各類作業(yè)信息。

          • 如導(dǎo)入作業(yè)闪檬,Clone 作業(yè)星著、SchemaChange 作業(yè)等。
        • 用戶及權(quán)限信息粗悯。

        • 集群及節(jié)點(diǎn)信息虚循。

    • 元數(shù)據(jù)的元數(shù)據(jù)指fe raft協(xié)議中的拓?fù)錉顟B(tài)

    • 清空元數(shù)據(jù)的元數(shù)據(jù)

      • 即先將一個(gè)節(jié)點(diǎn)的fe 拓?fù)錉顟B(tài)清空,其自然變成master節(jié)點(diǎn)样傍,然后清空其他節(jié)點(diǎn)横缔,然后加入master
  • 元數(shù)據(jù)運(yùn)維 - Apache Doris

當(dāng)只有兩個(gè)flower節(jié)點(diǎn)的時(shí)候所有節(jié)點(diǎn)都掛掉了

  • 因?yàn)閒lower通過raft一致性協(xié)議要保證多數(shù)節(jié)點(diǎn)成功,而兩個(gè)節(jié)點(diǎn)無法滿足達(dá)成多數(shù)節(jié)點(diǎn)成功铭乾,所以其自身就退出了

DeployManager

  • org.apache.doris.deploy.DeployManager

    • AmbariDeployManager

    • K8sDeployManager

    • LocalFileDeployManager

  • 解決自動(dòng)節(jié)點(diǎn)發(fā)現(xiàn)的問題

  • 多個(gè)FE同時(shí)啟動(dòng)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剪廉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子炕檩,更是在濱河造成了極大的恐慌,老刑警劉巖捌斧,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笛质,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡捞蚂,警方通過查閱死者的電腦和手機(jī)妇押,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姓迅,“玉大人敲霍,你說我怎么就攤上這事《〈妫” “怎么了肩杈?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長解寝。 經(jīng)常有香客問我扩然,道長,這世上最難降的妖魔是什么聋伦? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任夫偶,我火速辦了婚禮,結(jié)果婚禮上觉增,老公的妹妹穿的比我還像新娘兵拢。我一直安慰自己,他們只是感情好逾礁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布说铃。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪截汪。 梳的紋絲不亂的頭發(fā)上疾牲,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音衙解,去河邊找鬼阳柔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蚓峦,可吹牛的內(nèi)容都是我干的舌剂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼暑椰,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼霍转!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起一汽,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤避消,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后召夹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體岩喷,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年监憎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纱意。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鲸阔,死狀恐怖偷霉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情褐筛,我是刑警寧澤类少,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站死讹,受9級(jí)特大地震影響瞒滴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赞警,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一妓忍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧愧旦,春花似錦世剖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祖凫。三九已至,卻和暖如春酬凳,著一層夾襖步出監(jiān)牢的瞬間惠况,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國打工宁仔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稠屠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓翎苫,卻偏偏與公主長得像权埠,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子煎谍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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