什么是分布式微服務(wù)架構(gòu)句狼?三分鐘徹底弄懂什么是分布式和微服務(wù)

一笋熬、微服務(wù)簡(jiǎn)介

1. 微服務(wù)的誕生

微服務(wù)是基于分而治之的思想演化出來(lái)的。過(guò)去傳統(tǒng)的一個(gè)大型而又全面的系統(tǒng)腻菇,隨著互聯(lián)網(wǎng)的發(fā)展已經(jīng)很難滿(mǎn)足市場(chǎng)對(duì)技術(shù)的需求胳螟,于是我們從單獨(dú)架構(gòu)發(fā)展到分布式架構(gòu),又從分布式架構(gòu)發(fā)展到 SOA 架構(gòu)筹吐,服務(wù)不斷的被拆分和分解糖耸,粒度也越來(lái)越小,直到微服務(wù)架構(gòu)的誕生丘薛。

微服務(wù)架構(gòu)是一種架構(gòu)模式嘉竟,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相配合舍扰,為用戶(hù)提供最終價(jià)值倦蚪。

每個(gè)服務(wù)運(yùn)行在其獨(dú)立的進(jìn)程中,服務(wù)和服務(wù)間采用輕量級(jí)的通信機(jī)制互相溝通(通常是基于 HTTP 的 RESTful API)边苹。每個(gè)服務(wù)都圍繞著具體業(yè)務(wù)進(jìn)行構(gòu)建陵且,并且能夠被獨(dú)立地部署到生產(chǎn)環(huán)境、類(lèi)生產(chǎn)環(huán)境等个束。另外慕购,應(yīng)盡量避免統(tǒng)一的、集中式的服務(wù)管理機(jī)制茬底,對(duì)具體的一個(gè)服務(wù)而言沪悲,應(yīng)根據(jù)業(yè)務(wù)上下文,選擇合適的語(yǔ)言阱表、工具對(duì)其進(jìn)行構(gòu)建殿如。

2. 微服務(wù)架構(gòu)與SOA架構(gòu)的區(qū)別

微服務(wù)是真正的分布式的、去中心化的捶枢。把所有的“思考”邏輯包括路由握截、消息解析等放在服務(wù)內(nèi)部,去掉一個(gè)大一統(tǒng)的 ESB烂叔,服務(wù)間輕通信,是比 SOA 更徹底的拆分固歪。

微服務(wù)架構(gòu)強(qiáng)調(diào)的重點(diǎn)是業(yè)務(wù)系統(tǒng)需要徹底的組件化和服務(wù)化蒜鸡,原有的單個(gè)業(yè)務(wù)系統(tǒng)會(huì)拆分為多個(gè)可以獨(dú)立開(kāi)發(fā),設(shè)計(jì)牢裳,運(yùn)行和運(yùn)維的小應(yīng)用逢防,這些小應(yīng)用之間通過(guò)服務(wù)完成交互和集成。

3. 微服務(wù)架構(gòu)引發(fā)的問(wèn)題

隨著整個(gè)業(yè)務(wù)數(shù)據(jù)被分散在各個(gè)子服務(wù)之后蒲讯,也帶來(lái)了兩個(gè)最明顯的問(wèn)題忘朝。

  • 業(yè)務(wù)管理系統(tǒng)對(duì)數(shù)據(jù)完整性查詢(xún),比如分頁(yè)查詢(xún)判帮、多條件查詢(xún)等局嘁,數(shù)據(jù)被割裂后如何來(lái)整合?
  • 數(shù)據(jù)分析挖掘,這些需求可能需要分析全量的數(shù)據(jù)晦墙,并且在分析時(shí)不能影響到當(dāng)前業(yè)務(wù)

從技術(shù)方案來(lái)講悦昵,我們一般有兩種選擇來(lái)處理這些問(wèn)題,第一種是在線處理數(shù)據(jù)晌畅,第二種是離線處理數(shù)據(jù)但指。

  • 在線處理數(shù)據(jù)的方案:通過(guò)微服務(wù)提供的接口來(lái)獲取數(shù)據(jù),然后進(jìn)行數(shù)據(jù)整合,不過(guò)這種方式有著明顯的弊端棋凳,就是調(diào)用者需要編寫(xiě)大量的代碼進(jìn)行數(shù)據(jù)處理拦坠。其次在對(duì)各個(gè)微服務(wù)進(jìn)行調(diào)取數(shù)據(jù)時(shí)會(huì)影響微服務(wù)的正常業(yè)務(wù)處理性能

  • 離線處理數(shù)據(jù)方案:將業(yè)務(wù)數(shù)據(jù)準(zhǔn)實(shí)時(shí)的同步到另外一個(gè)數(shù)據(jù)庫(kù)中,在同步的過(guò)程中進(jìn)行數(shù)據(jù)整合處理剩岳,以滿(mǎn)足業(yè)務(wù)方對(duì)數(shù)據(jù)的需求贪婉,數(shù)據(jù)同步過(guò)來(lái)后,再提供另外一個(gè)服務(wù)接口專(zhuān)業(yè)負(fù)責(zé)對(duì)外輸出數(shù)據(jù)信息卢肃,這種方案有兩個(gè)特點(diǎn):①數(shù)據(jù)同步方案是關(guān)鍵疲迂,技術(shù)選型有很多,如何選擇切合公司業(yè)務(wù)的技術(shù)方案莫湘;②離線數(shù)據(jù)處理對(duì)微服務(wù)正常業(yè)務(wù)處理沒(méi)有影響尤蒿。

推薦使用第二種,利用 Spring Boot 和 MongoDB 可以輕松的解決這個(gè)問(wèn)題幅垮,通過(guò)技術(shù)手段將分裂到 N 個(gè)微服務(wù)的數(shù)據(jù)同步到 MongoDB 集群中腰池,在同步的過(guò)程中進(jìn)行數(shù)據(jù)清洗,來(lái)滿(mǎn)足公司的各項(xiàng)業(yè)務(wù)需求

在微服務(wù)架構(gòu)中忙芒,有 大難題示弓,那就是服務(wù)故障的傳播性服務(wù)的劃分分布式事務(wù)呵萨。

二奏属、CAP 理論

Consistency :指數(shù)據(jù)的強(qiáng)一致性。如果寫(xiě)入某個(gè)數(shù)據(jù)成功潮峦,之后讀取囱皿,讀到的都是新 寫(xiě)入的數(shù)據(jù):如果寫(xiě)入失敗,之后讀取的都不是寫(xiě)入失敗的數(shù)據(jù)忱嘹。

Availability :指服務(wù)的可用性

Partition-tolerance :指分區(qū)容錯(cuò)

在分布式系統(tǒng)中 P是基本要求嘱腥,而單體服務(wù)是 CA 系統(tǒng), 微服務(wù)系統(tǒng)通常是 AP 系統(tǒng)拘悦,即同時(shí)滿(mǎn)足了可用性和分區(qū)容錯(cuò)齿兔。

這就有了 個(gè)難題:在分布式系統(tǒng)中如何保證數(shù)據(jù)的一致性?這就是大家經(jīng)常討論的分布式事務(wù)

三础米、分布式事務(wù)

在微服務(wù)架構(gòu)中分苇,分布式事務(wù) 般的解決辦法就是兩階段提交或者 三階段提交,不管使用哪都存在事務(wù)失敗椭盏,導(dǎo)致數(shù)據(jù)不 致的情況组砚,關(guān)鍵時(shí)刻還得人工去恢復(fù)數(shù)據(jù)。

  • 第一階段:發(fā)起一個(gè)分布式事務(wù)掏颊,交給事務(wù)協(xié)調(diào)器TC處理糟红,TC向多有的參與事務(wù)的節(jié)點(diǎn)發(fā)送處理事務(wù)操作的準(zhǔn)備操作艾帐。所有的參與節(jié)點(diǎn)執(zhí)行準(zhǔn)備操作,將Undo和Redo 信息寫(xiě)進(jìn)日志盆偿,并向事務(wù)管理器返回準(zhǔn)備操作是否成功
  • 第二階段:事務(wù)管理器收集所有節(jié)點(diǎn)的準(zhǔn)備操作是否成功柒爸,如果都成功,則通知所有的節(jié)點(diǎn)執(zhí)行提交操作事扭;如果有 個(gè)失敗捎稚,則執(zhí)行回滾操作

兩階段提交,將事務(wù)分成兩部分能夠大大提高分布式事務(wù)成功的概率求橄。如果在第 階段都成功了今野,而執(zhí)行第 階段的某 個(gè)節(jié)點(diǎn)失敗,仍然導(dǎo)致數(shù)據(jù)的不準(zhǔn)確罐农,這時(shí)一般需要人工去處 理条霜,這就是當(dāng)初在第一步記錄日志的原因。另外涵亏,如果分布式事務(wù)涉及的節(jié)點(diǎn)很多宰睡,某 個(gè)節(jié) 點(diǎn)的網(wǎng)絡(luò)出現(xiàn)異常會(huì)導(dǎo)致整個(gè)事務(wù)處于阻塞狀態(tài),大大降低數(shù)據(jù)庫(kù)的性能气筋。所以一般情況下拆内, 盡量少用分布式事務(wù)。

四宠默、服務(wù)劃分

橫向拆分:按照不同的業(yè)務(wù)域進(jìn)行拆分麸恍,例如訂單、營(yíng)銷(xiāo)光稼、風(fēng)控或南、積分資源等。形成獨(dú)立的業(yè)務(wù)領(lǐng)域微服務(wù)集群艾君。

縱向拆分:把一個(gè)業(yè)務(wù)功能里的不同模塊或者組件進(jìn)行拆分。例如把公共組件拆分成獨(dú)立的原子服務(wù)肄方,下沉到底層冰垄,形成相對(duì)獨(dú)立的原子服務(wù)層。這樣一縱一橫权她,就可以實(shí)現(xiàn)業(yè)務(wù)的服務(wù)化拆分虹茶。

要做好微服務(wù)的分層:梳理和抽取核心應(yīng)用、公共應(yīng)用隅要,作為獨(dú)立的服務(wù)下沉到核心和公共能力層蝴罪,逐漸形成穩(wěn)定的服務(wù)中心,使前端應(yīng)用能更快速的響應(yīng)多變的市場(chǎng)需求

總之步清,微服務(wù)的設(shè)計(jì)一定要漸進(jìn)式的要门,總的原則是服務(wù)內(nèi)部高內(nèi)聚虏肾,服務(wù)之間低耦合。

微服務(wù)特點(diǎn)

  • 按照業(yè)務(wù)劃分服務(wù)欢搜,單個(gè)服務(wù)代碼量小封豪,業(yè)務(wù)單一,易于維護(hù)
  • 每個(gè)微服務(wù)都有自己獨(dú)立的基礎(chǔ)組件炒瘟,例如數(shù)據(jù)庫(kù)吹埠、緩存等且運(yùn)行在獨(dú)立的進(jìn)程中
  • 微服務(wù)之間的通信是通過(guò)HTTP協(xié)議或者消息組件,且具有容錯(cuò)能力
  • 微服務(wù)有一套服務(wù)治理的解決方案疮装,服務(wù)之間不耦合缘琅,可以隨時(shí)加入和剔除
  • 單個(gè)微服務(wù)能夠集群化部署,并且有負(fù)責(zé) 均衡的能力
  • 整個(gè)微服務(wù)系統(tǒng)應(yīng)該有完整的安全機(jī)制廓推,包括用戶(hù)驗(yàn)證刷袍,權(quán)限驗(yàn)證,資源保護(hù)
  • 整個(gè)微服務(wù)系統(tǒng)有鏈路追蹤的能力
  • 有一套完整的實(shí)時(shí)日志系統(tǒng)

1. 給數(shù)據(jù)庫(kù)帶來(lái)的挑戰(zhàn)

隨著服務(wù)拆分后受啥,我們遇到最大的問(wèn)題就是后臺(tái)管理的聯(lián)合查詢(xún)做个,每個(gè)微服務(wù)都有自己獨(dú)立的數(shù)據(jù)庫(kù),那么后臺(tái)該怎么處理滚局?

這里一般有如下幾種方式:

  1. 嚴(yán)格按照微服務(wù)的劃分來(lái)做居暖,微服務(wù)相互獨(dú)立,各微服務(wù)數(shù)據(jù)庫(kù)也獨(dú)立藤肢,后臺(tái)需要展示數(shù)據(jù)時(shí),調(diào)用各微服務(wù)的接口來(lái)獲取對(duì)應(yīng)的數(shù)據(jù)嘁圈,再進(jìn)行數(shù)據(jù)處理后展示出來(lái)省骂,這是標(biāo)準(zhǔn)的用法,也是最麻煩的用法最住。
  2. 將業(yè)務(wù)高度相關(guān)的表放到一個(gè)庫(kù)中钞澳,將業(yè)務(wù)關(guān)系不是很緊密的表嚴(yán)格按照微服務(wù)模式來(lái)拆分,這樣既可以使用微服務(wù)涨缚,也避免了數(shù)據(jù)庫(kù)分散導(dǎo)致后臺(tái)系統(tǒng)統(tǒng)計(jì)功能難以實(shí)現(xiàn)轧粟,是一個(gè)折中的方案。
  3. 數(shù)據(jù)庫(kù)嚴(yán)格按照微服務(wù)的要求來(lái)切分脓魏,以滿(mǎn)足業(yè)務(wù)高并發(fā)兰吟,實(shí)時(shí)或者準(zhǔn)實(shí)時(shí)將各微服務(wù)數(shù)據(jù)庫(kù)數(shù)據(jù)同步到NoSQL數(shù)據(jù)庫(kù)中,在同步的過(guò)程中進(jìn)行數(shù)據(jù)清洗茂翔,用來(lái)滿(mǎn)足后臺(tái)業(yè)務(wù)系統(tǒng)的使用混蔼,推薦使用MongoDB、HBase等珊燎。

三種方案在不同的公司我都使用過(guò)惭嚣,第一種方案適合業(yè)務(wù)較為簡(jiǎn)單的小公司遵湖;第二種方案,適合在原有系統(tǒng)之上料按,慢慢演化為微服務(wù)架構(gòu)的公司奄侠;第三種適合大型高并發(fā)的互聯(lián)網(wǎng)公司。

五载矿、熔斷器

為了解決分布式系統(tǒng)的雪崩效應(yīng)垄潮,分布式系統(tǒng)引進(jìn)了熔斷器機(jī)制

當(dāng)一個(gè)服務(wù)的處理用戶(hù)請(qǐng)求的失敗次數(shù)在一定時(shí)間內(nèi)小于設(shè)定的閥值時(shí)闷盔,熔斷器出于關(guān)閉狀態(tài)弯洗,服務(wù)正常。

當(dāng)服務(wù)處理用戶(hù)請(qǐng)求失敗次數(shù)在一定時(shí)間內(nèi)大于設(shè)定的閥值時(shí)逢勾,說(shuō)明服務(wù)出現(xiàn)故障牡整,打開(kāi)熔斷器,這是所有的請(qǐng)求會(huì)快速失敗溺拱,不執(zhí)行業(yè)務(wù)邏輯

當(dāng)處于打開(kāi)狀態(tài)的熔斷器時(shí)逃贝,一段時(shí)間后出于半打開(kāi)狀態(tài),并執(zhí)行一定數(shù)量的請(qǐng)求迫摔,剩余的請(qǐng)求會(huì)執(zhí)行快速失敗沐扳,若執(zhí)行請(qǐng)求失敗了,則繼續(xù)打開(kāi)熔斷器句占,若成功了沪摄,則將熔斷器關(guān)閉

熔斷器不僅能防止系統(tǒng)的“雪崩”效應(yīng),還具有以下作用

  • 將資源進(jìn)行隔離
  • 服務(wù)降級(jí)的功能
  • 自我修復(fù)能力

六纱烘、服務(wù)網(wǎng)關(guān)

在微服務(wù)系統(tǒng)中杨拐,API 接口資源通常是有服務(wù)網(wǎng)關(guān)(也稱(chēng)API網(wǎng)關(guān))統(tǒng)一暴露,內(nèi)部服務(wù)不直接對(duì)外提供API資源的暴露擂啥。好處在于隱藏內(nèi)部服務(wù)哄陶,保護(hù)系統(tǒng)安全

網(wǎng)關(guān)層通常以集群的形式存在。并在服務(wù)網(wǎng)關(guān)層前通常會(huì)加上Nginx 用來(lái)負(fù)載均衡

網(wǎng)關(guān)意義:

  • 網(wǎng)關(guān)將所有服務(wù)的API接口資源統(tǒng)一聚合哺壶,對(duì)外統(tǒng)一暴露
  • 網(wǎng)關(guān)可以做一些用戶(hù)身份認(rèn)證奕筐,權(quán)限認(rèn)證,防止非法請(qǐng)求操作API 接口变骡,對(duì)內(nèi)部服務(wù)起到保護(hù)作用
  • 網(wǎng)關(guān)可以實(shí)現(xiàn)監(jiān)控功能,實(shí)時(shí)日志輸出芭逝、對(duì)請(qǐng)求進(jìn)行記錄
  • 網(wǎng)關(guān)可以用來(lái)做流量監(jiān)控塌碌,在高流量的情況下,對(duì)服務(wù)進(jìn)行降級(jí)
  • API 接口從內(nèi)部服務(wù)分離出來(lái)旬盯,方便做測(cè)試

當(dāng)然台妆,網(wǎng)關(guān)實(shí)現(xiàn)這些功能翎猛,需要做高可用,否則網(wǎng)關(guān)很可能成功架構(gòu)的瓶頸接剩,最常用的網(wǎng)關(guān)組件Zuul切厘、Nginx

七、服務(wù)配置統(tǒng)一管理

在微服務(wù)架構(gòu)中懊缺,需要有統(tǒng)一管理配置文件的組件疫稿,例如:SpringCloud Config組件、阿里的Diamond鹃两、百度的Disconf遗座、攜程的Apollo等

八、服務(wù)鏈路追蹤

在微服務(wù)架構(gòu)中俊扳,必須實(shí)現(xiàn)分布式鏈路追蹤途蒋,去跟進(jìn)一個(gè)請(qǐng)求到底有哪些服務(wù)參與、參與順序馋记,是每個(gè)請(qǐng)求鏈路清晰可見(jiàn)号坡,便于問(wèn)題快速定位

常用鏈路追蹤組件有Google的Dapper、Twitter 的Zipkin梯醒,以及阿里Eagleeye(鷹眼)

九宽堆、微服務(wù)框架

市面常用微服務(wù)框架有:Spring Cloud 、Dubbo 冤馏、kubernetes

  • 從功能模塊上考慮日麸,Dubbo缺少很多功能模塊,例如網(wǎng)關(guān)逮光、鏈路追蹤等
  • 從學(xué)習(xí)成本上考慮代箭,Dubbo 版本趨于穩(wěn)定,穩(wěn)定完善涕刚、可以即學(xué)即用嗡综,難度簡(jiǎn)單,Spring cloud 基于Spring Boot杜漠,需要先掌握Spring Boot 极景,例外Spring cloud 大多為英文文檔,要求學(xué)習(xí)者有一定的英文閱讀能力
  • 從開(kāi)發(fā)風(fēng)格考慮驾茴,Dubbo傾向于xml的配置方式盼樟,Spring cloud 基于Spring Boot ,采用基于注解和JavaBean配置方式的敏捷開(kāi)發(fā)
  • 從開(kāi)發(fā)速度上考慮锈至,Spring cloud 具有更高的開(kāi)發(fā)和部署速度
  • 從通信方式上考慮晨缴,Spring cloud 基于HTTP Restful 風(fēng)格,服務(wù)于服務(wù)之間完全無(wú)關(guān)峡捡、無(wú)耦合击碗。Dubbo 基于遠(yuǎn)程調(diào)用筑悴,對(duì)接口、平臺(tái)和語(yǔ)言有強(qiáng)依賴(lài)性稍途,如果需要實(shí)現(xiàn)跨平臺(tái)阁吝,需要有額外的中間件。

所以Dubbo專(zhuān)注于服務(wù)治理械拍;Spring Cloud關(guān)注于微服務(wù)架構(gòu)生態(tài)突勇。

十、SpringCloud常用組件

  • Eureka:服務(wù)注冊(cè)和發(fā)現(xiàn)組件
  • Hystrix:熔斷組件
  • Ribbon:負(fù)載均衡組件
  • Zuul:路由網(wǎng)關(guān)

以上4個(gè)組件來(lái)自于Netflix 公司殊者,統(tǒng)稱(chēng)為Spring Cloud Netflix

  • Spring Cloud Config:配置文件統(tǒng)一管理
  • Spring Cloud Security:Spring Security組件封裝与境,提供用戶(hù)驗(yàn)證和權(quán)限驗(yàn)證,一般與Spring Security OAuth2 組一起使用猖吴,通過(guò)搭建授權(quán)服務(wù)摔刁,驗(yàn)證Token或者JWT這種形式對(duì)整個(gè)微服務(wù)系統(tǒng)進(jìn)行安全驗(yàn)證
  • Spring Cloud Sleuth:分布式鏈路追蹤組件,他分封裝了Dapper海蔽、Zipkin共屈、Kibana 的組件
  • Spring Cloud Stream:Spring Cloud框架的數(shù)據(jù)流操作包,可以封裝RabbitMq党窜,ActiveMq拗引,Kafka,Redis等消息組件幌衣,利用Spring Cloud Stream可以實(shí)現(xiàn)消息的接收和發(fā)送

一個(gè)簡(jiǎn)單的Spring Cloud 構(gòu)建的微服務(wù)系統(tǒng)矾削,通常由服務(wù)注冊(cè)中心Eureka、網(wǎng)關(guān)Zuul豁护、配置中心Config和授權(quán)服務(wù)Auth構(gòu)成

Spring Cloud Netflix功能:

  • 服務(wù)發(fā)現(xiàn):可以注冊(cè)Eureka實(shí)例哼凯,并且客戶(hù)端可以使用Spring托管的Bean發(fā)現(xiàn)實(shí)例
  • 服務(wù)發(fā)現(xiàn):可以使用聲明性Java配置創(chuàng)建嵌入式Eureka服務(wù)器
  • 斷路器:Hystrix客戶(hù)端可以使用簡(jiǎn)單的注釋驅(qū)動(dòng)的方法裝飾器構(gòu)建
  • 斷路器:具有聲明性Java配置的嵌入式Hystrix儀表板
  • 聲明式REST客戶(hù)端:Feign創(chuàng)建一個(gè)用JAX-RS或Spring MVC注釋修飾的接口的動(dòng)態(tài)實(shí)現(xiàn)。
  • 客戶(hù)端負(fù)載均衡器:功能區(qū)
  • 外部配置:從Spring Environment到Archaius的橋梁(使用Spring Boot約定啟用Netflix組件的本機(jī)配置)
  • 路由器和過(guò)濾器:Zuul過(guò)濾器的自動(dòng)重新注冊(cè)楚里,以及用于反向代理創(chuàng)建的簡(jiǎn)單配置約定

# 鏈接 Java程序員福利"常用資料分享"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末断部,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子班缎,更是在濱河造成了極大的恐慌蝴光,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件达址,死亡現(xiàn)場(chǎng)離奇詭異蔑祟,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)沉唠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)做瞪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事装蓬。” “怎么了纱扭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵牍帚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我乳蛾,道長(zhǎng)暗赶,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任肃叶,我火速辦了婚禮蹂随,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘因惭。我一直安慰自己岳锁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布蹦魔。 她就那樣靜靜地躺著激率,像睡著了一般。 火紅的嫁衣襯著肌膚如雪勿决。 梳的紋絲不亂的頭發(fā)上乒躺,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音低缩,去河邊找鬼嘉冒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛咆繁,可吹牛的內(nèi)容都是我干的讳推。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼么介,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼娜遵!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起壤短,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤设拟,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后久脯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體纳胧,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年帘撰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了勇皇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡腐宋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出牢硅,到底是詐尸還是另有隱情,我是刑警寧澤芝雪,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布减余,位于F島的核電站,受9級(jí)特大地震影響惩系,放射性物質(zhì)發(fā)生泄漏位岔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一堡牡、第九天 我趴在偏房一處隱蔽的房頂上張望抒抬。 院中可真熱鬧,春花似錦晤柄、人聲如沸擦剑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抓于。三九已至,卻和暖如春浇借,著一層夾襖步出監(jiān)牢的瞬間捉撮,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工妇垢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留巾遭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓闯估,卻偏偏與公主長(zhǎng)得像灼舍,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涨薪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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