帶你了解多租戶的數(shù)據(jù)庫(kù)設(shè)計(jì)模式(轉(zhuǎn)載)

轉(zhuǎn)自: https://mp.weixin.qq.com/s/f8H9jsplxGtVnVRhIEU1MQ

在設(shè)計(jì)多租戶SaaS應(yīng)用程序時(shí),您必須仔細(xì)選擇最適合您應(yīng)用程序需求的租戶模型。租戶模型確定每個(gè)租戶的數(shù)據(jù)如何映射到存儲(chǔ)。您選擇的租戶模式會(huì)影響應(yīng)用程序設(shè)計(jì)和管理死遭。以后切換到另一個(gè)模型有時(shí)代價(jià)昂貴圣猎。關(guān)于可選擇的租戶模型的討論如下。

01? 如何選取合適的租戶模型

一般來(lái)說(shuō)狸页,租賃模式不會(huì)影響應(yīng)用程序的功能落恼,但它可能會(huì)影響整體解決方案的其他方面箩退。以下標(biāo)準(zhǔn)用于評(píng)估每個(gè)模型:

可擴(kuò)展性(Scalability)

租戶的數(shù)量級(jí)

每個(gè)租戶的存儲(chǔ)級(jí)別

整體存儲(chǔ)

工作負(fù)載

租戶隔離性(Tenant isolation)

數(shù)據(jù)隔離和性能(是否一個(gè)租戶的負(fù)載會(huì)影響到其他租戶)

單租戶成本(Per-tenant cost)

數(shù)據(jù)庫(kù)成本

開(kāi)發(fā)復(fù)雜度(Development complexity)

數(shù)據(jù)結(jié)構(gòu)的變化

查詢語(yǔ)句的變化

運(yùn)維復(fù)雜度(Operational complexity)

性能監(jiān)控

數(shù)據(jù)結(jié)構(gòu)schema管理

租戶數(shù)據(jù)恢復(fù)

災(zāi)備

可定制化程度(Customizability)

根據(jù)租戶的需求自定義架構(gòu)的容易程度

這個(gè)租戶的討論集中在數(shù)據(jù)層。但考慮一下應(yīng)用層领跛。應(yīng)用程序?qū)颖灰暈橐粋€(gè)整體實(shí)體乏德。如果將應(yīng)用程序劃分為許多小型組件撤奸,您的租戶模型選擇可能會(huì)發(fā)生變化吠昭。對(duì)于租戶和存儲(chǔ)技術(shù)或使用的平臺(tái),您可以對(duì)其他組件進(jìn)行不同的處理

02 獨(dú)立的單租戶應(yīng)用+獨(dú)立的單租戶數(shù)據(jù)庫(kù)

應(yīng)用層隔離

在這個(gè)模型中胧瓜,對(duì)于每一個(gè)租戶矢棚,整個(gè)應(yīng)用程序需要重復(fù)安裝一次。應(yīng)用程序的每個(gè)實(shí)例都是獨(dú)立實(shí)例府喳,因此它不會(huì)與任何其他獨(dú)立實(shí)例交互蒲肋。每個(gè)應(yīng)用程序?qū)嵗挥幸粋€(gè)租戶,因此只需要一個(gè)數(shù)據(jù)庫(kù)钝满。租戶擁有自己的數(shù)據(jù)庫(kù)兜粘。

每個(gè)應(yīng)用程序?qū)嵗及惭b在獨(dú)立的Azure資源組中。資源組可以屬于軟件供應(yīng)商或租戶擁有的訂閱弯蚜。無(wú)論哪種情況孔轴,供應(yīng)商都可以為租戶管理軟件。每個(gè)應(yīng)用程序?qū)嵗寂渲脼檫B接到其相應(yīng)的數(shù)據(jù)庫(kù)碎捺。

每個(gè)租戶數(shù)據(jù)庫(kù)都作為獨(dú)立數(shù)據(jù)庫(kù)進(jìn)行部署路鹰。該模型提供了最大的數(shù)據(jù)庫(kù)隔離贷洲。但隔離需要為每個(gè)數(shù)據(jù)庫(kù)分配足夠的資源來(lái)處理其高峰負(fù)載。這里重要的是晋柱,彈性池不能用于部署在不同資源組或不同訂閱中的數(shù)據(jù)庫(kù)优构。這種限制使得這種獨(dú)立的單租戶應(yīng)用程序模型成為從整體數(shù)據(jù)庫(kù)成本角度來(lái)看最昂貴的解決方案。

供應(yīng)商管理

即使應(yīng)用程序?qū)嵗惭b在不同的租戶訂閱中雁竞,供應(yīng)商也可以訪問(wèn)所有獨(dú)立應(yīng)用程序?qū)嵗械乃袛?shù)據(jù)庫(kù)钦椭。訪問(wèn)是通過(guò)SQL連接實(shí)現(xiàn)的。這種跨實(shí)例訪問(wèn)可以使供應(yīng)商能夠集中化架構(gòu)管理和跨數(shù)據(jù)庫(kù)查詢以用于報(bào)告或分析目的碑诉。如果需要這種集中式管理玉凯,則必須部署一個(gè)目錄,將租戶標(biāo)識(shí)符映射到數(shù)據(jù)庫(kù)URI联贩。Azure SQL數(shù)據(jù)庫(kù)提供了與SQL數(shù)據(jù)庫(kù)一起使用以提供目錄的分片庫(kù)漫仆。分區(qū)庫(kù)被正式命名為彈性數(shù)據(jù)庫(kù)客戶端庫(kù)( Elastic Database Client Library)。

03 支持多租戶的應(yīng)用+每一個(gè)租戶獨(dú)立數(shù)據(jù)庫(kù)

這個(gè)模式使用具有多個(gè)數(shù)據(jù)庫(kù)的多租戶應(yīng)用程序泪幌,均為一個(gè)租戶一個(gè)數(shù)據(jù)庫(kù)盲厌。為每個(gè)新租戶提供一個(gè)新的數(shù)據(jù)庫(kù)。通過(guò)為每個(gè)節(jié)點(diǎn)添加更多資源來(lái)垂直擴(kuò)展應(yīng)用程序?qū)踊隼帷吗浩;蛘咄ㄟ^(guò)添加更多節(jié)點(diǎn)來(lái)橫向擴(kuò)展應(yīng)用程序?qū)印没隘?s放基于應(yīng)用程序的工作負(fù)載懂扼,并且與個(gè)體數(shù)據(jù)庫(kù)的數(shù)量或規(guī)模無(wú)關(guān)。

租戶的可定制化

與獨(dú)立的應(yīng)用程序模式一樣右蒲,使用單租戶數(shù)據(jù)庫(kù)可以提供強(qiáng)大的租戶隔離阀湿。可以為租戶定制和優(yōu)化任何給定數(shù)據(jù)庫(kù)的模式瑰妄。此自定義不會(huì)影響應(yīng)用中的其他租戶陷嘴。也許租戶可能需要超出所有租戶所需的基本數(shù)據(jù)字段的數(shù)據(jù)。此外间坐,額外的數(shù)據(jù)字段可能需要一個(gè)索引灾挨。

使用每個(gè)租戶一個(gè)數(shù)據(jù)庫(kù),為一個(gè)或多個(gè)獨(dú)立租戶定制架構(gòu)很容易實(shí)現(xiàn)竹宋。應(yīng)用程序供應(yīng)商必須設(shè)計(jì)程序來(lái)小心管理架構(gòu)自定義劳澄。

彈性池

當(dāng)數(shù)據(jù)庫(kù)部署在同一資源組中時(shí),可以將它們分組為彈性數(shù)據(jù)庫(kù)池蜈七。這些池提供了跨多個(gè)數(shù)據(jù)庫(kù)共享資源的具有成本效益的方式秒拔。該池選項(xiàng)比要求每個(gè)數(shù)據(jù)庫(kù)足夠大以容納它所經(jīng)歷的使用高峰要便宜。即使匯集的數(shù)據(jù)庫(kù)共享資源訪問(wèn)權(quán)限宪潮,他們?nèi)匀豢梢詫?shí)現(xiàn)高度的性能隔離溯警。

Azure SQL數(shù)據(jù)庫(kù)提供了配置趣苏,監(jiān)視和管理共享所需的工具。池級(jí)別和數(shù)據(jù)庫(kù)級(jí)別的性能指標(biāo)均可在Azure門戶中以及通過(guò)Log Analytics獲得梯轻。這些指標(biāo)可以深入了解總體和租戶特定的性能食磕。各個(gè)數(shù)據(jù)庫(kù)可以在池之間移動(dòng),為特定租戶提供預(yù)留資源喳挑。這些工具使您能夠以經(jīng)濟(jì)高效的方式確保良好的性能彬伦。

運(yùn)維的可伸縮性

Azure SQL Database平臺(tái)具有許多旨在管理大量數(shù)據(jù)庫(kù)的管理功能,例如超過(guò)100,000個(gè)數(shù)據(jù)庫(kù)伊诵。這些功能使每租戶數(shù)據(jù)庫(kù)模式合理单绑。

例如,假設(shè)系統(tǒng)只有一個(gè)1000租戶數(shù)據(jù)庫(kù)作為其唯一的一個(gè)數(shù)據(jù)庫(kù)曹宴。數(shù)據(jù)庫(kù)可能有20個(gè)索引搂橙。如果系統(tǒng)轉(zhuǎn)換為擁有1000個(gè)單租戶數(shù)據(jù)庫(kù),則索引數(shù)量將增至20,000笛坦。在SQL Database中区转,作為自動(dòng)調(diào)整(Automatic tuning)的一部分,默認(rèn)情況下啟用自動(dòng)索引功能版扩。自動(dòng)索引為您管理所有20,000個(gè)索引及其正在進(jìn)行的創(chuàng)建和刪除優(yōu)化废离。這些自動(dòng)化操作發(fā)生在單個(gè)數(shù)據(jù)庫(kù)中,并且不會(huì)被其他數(shù)據(jù)庫(kù)中的類似操作所協(xié)調(diào)或限制礁芦。自動(dòng)索引處理繁忙數(shù)據(jù)庫(kù)中的索引與繁忙數(shù)據(jù)庫(kù)中的索引不同蜻韭。如果這種巨大的管理任務(wù)必須手動(dòng)完成,那么這種類型的索引管理定制對(duì)于每租戶數(shù)據(jù)庫(kù)規(guī)模而言將是不切實(shí)際的柿扣。

另外在可伸縮性管理上肖方,還擁有以下特色:

* 內(nèi)置備份

* 高可用

* 磁盤加密

* 性能遙測(cè)

自動(dòng)化

管理操作可以通過(guò)devops模型編寫和提供。這些操作甚至可以自動(dòng)化并在應(yīng)用程序中公開(kāi)窄刘。

例如窥妇,您可以自動(dòng)將單個(gè)租戶恢復(fù)到較早的時(shí)間點(diǎn)舷胜∶浼恢復(fù)只需要恢復(fù)存儲(chǔ)租戶的一個(gè)單租戶數(shù)據(jù)庫(kù)。這種恢復(fù)對(duì)其他租戶沒(méi)有影響烹骨,這證實(shí)了管理運(yùn)營(yíng)處于每個(gè)租戶的細(xì)粒度級(jí)別翻伺。

04 支持多租戶的單應(yīng)用+支持多租戶的單數(shù)據(jù)庫(kù)

另一種可用模式是將多租戶存儲(chǔ)在多租戶數(shù)據(jù)庫(kù)中。應(yīng)用程序?qū)嵗梢跃哂腥我鈹?shù)量的多租戶數(shù)據(jù)庫(kù)沮焕。多租戶數(shù)據(jù)庫(kù)的模式必須具有一個(gè)或多個(gè)租戶標(biāo)識(shí)符列吨岭,以便可以選擇性地檢索來(lái)自任何給定租戶的數(shù)據(jù)。此外峦树,該模式可能需要一些僅由租戶子集使用的表或列辣辫。但是旦事,靜態(tài)代碼和參考數(shù)據(jù)僅存儲(chǔ)一次,并由所有租戶共享急灭。

犧牲了租戶的隔離

數(shù)據(jù):多租戶數(shù)據(jù)庫(kù)必然會(huì)犧牲租戶隔離姐浮。多個(gè)租戶的數(shù)據(jù)一起存儲(chǔ)在一個(gè)數(shù)據(jù)庫(kù)中。在開(kāi)發(fā)過(guò)程中葬馋,確保查詢不會(huì)暴露來(lái)自多個(gè)租戶的數(shù)據(jù)卖鲤。SQL數(shù)據(jù)庫(kù)支持行級(jí)安全性,它可以強(qiáng)制將查詢返回的數(shù)據(jù)限定為單個(gè)租戶畴嘶。

處理:多租戶數(shù)據(jù)庫(kù)跨所有租戶共享計(jì)算和存儲(chǔ)資源蛋逾。數(shù)據(jù)庫(kù)作為一個(gè)整體可以被監(jiān)控,以確保它的性能可以接受窗悯。但是区匣,Azure系統(tǒng)沒(méi)有內(nèi)置的方法來(lái)監(jiān)視或管理單個(gè)租戶使用這些資源。因此蒋院,多租戶數(shù)據(jù)庫(kù)會(huì)增加遭遇嘈雜鄰居的風(fēng)險(xiǎn)沉颂,其中一個(gè)過(guò)于活躍的租戶的工作負(fù)載會(huì)影響同一數(shù)據(jù)庫(kù)中其他租戶的性能體驗(yàn)。附加的應(yīng)用程序?qū)拥谋O(jiān)視可以監(jiān)視租戶層的性能悦污。

更低的成本

一般來(lái)說(shuō)铸屉,多租戶數(shù)據(jù)庫(kù)的租戶成本最低。獨(dú)立數(shù)據(jù)庫(kù)的資源成本低于同等規(guī)模的彈性池切端。此外彻坛,對(duì)于租戶只需要有限存儲(chǔ)的情況,潛在的數(shù)百萬(wàn)租戶可能存儲(chǔ)在單個(gè)數(shù)據(jù)庫(kù)中踏枣。沒(méi)有彈性池可以包含數(shù)百萬(wàn)個(gè)數(shù)據(jù)庫(kù)昌屉。但是,每個(gè)池中包含1000個(gè)數(shù)據(jù)庫(kù)的解決方案(包含1000個(gè)池)可能會(huì)達(dá)到數(shù)百萬(wàn)的規(guī)模茵瀑,有可能變得難以管理间驮。

以下將討論多租戶數(shù)據(jù)庫(kù)模型的兩種變體,分片多租戶模型是最靈活和可擴(kuò)展的马昨。

05 支持多租戶的單應(yīng)用+支持多租戶的單數(shù)據(jù)庫(kù)(不分片)

最簡(jiǎn)單的多租戶數(shù)據(jù)庫(kù)模式使用單獨(dú)的獨(dú)立數(shù)據(jù)庫(kù)來(lái)為所有租戶托管數(shù)據(jù)竞帽。隨著越來(lái)越多的租戶被添加,數(shù)據(jù)庫(kù)被擴(kuò)大了更多的存儲(chǔ)和計(jì)算資源鸿捧。這種放大可能是所需要的屹篓,盡管總是有一個(gè)最終的限制。但是匙奴,在達(dá)到這個(gè)限制之前堆巧,數(shù)據(jù)庫(kù)變得難以管理。

針對(duì)單個(gè)租戶的管理操作在多租戶數(shù)據(jù)庫(kù)中實(shí)施起來(lái)要復(fù)雜得多。大規(guī)模的這些行動(dòng)可能會(huì)變得無(wú)法接受地緩慢谍肤。一個(gè)很壞的例子就是嘗試只恢復(fù)某一個(gè)租戶的某一時(shí)間點(diǎn)的數(shù)據(jù)啦租。

06 支持多租戶的單應(yīng)用+支持多租戶的單數(shù)據(jù)庫(kù)(分片)

大多數(shù)SaaS應(yīng)用程序一次只能訪問(wèn)一個(gè)租戶的數(shù)據(jù)。此訪問(wèn)模式允許租戶數(shù)據(jù)分布在多個(gè)數(shù)據(jù)庫(kù)或分片中荒揣,其中任何一個(gè)租戶的所有數(shù)據(jù)都包含在一個(gè)分片中刷钢。結(jié)合多租戶數(shù)據(jù)庫(kù)模式,分片模型允許幾乎無(wú)限的規(guī)模乳附。

管理分片

分片增加了設(shè)計(jì)和運(yùn)營(yíng)管理的復(fù)雜性内地。需要在其中維護(hù)租戶和數(shù)據(jù)庫(kù)之間的映射的目錄。此外赋除,還需要管理程序來(lái)管理碎片和租戶人口阱缓。例如,必須設(shè)計(jì)程序以添加和刪除分片举农,并在分片之間移動(dòng)租戶數(shù)據(jù)荆针。一種擴(kuò)大規(guī)模的方法是添加一個(gè)新的分片并將其填入新租戶。在其他時(shí)候颁糟,您可能會(huì)將人口稠密的分片分成兩個(gè)密度較小的分片航背。幾個(gè)租戶搬遷或停產(chǎn)后,可能會(huì)將人口稀少的分片合并在一起棱貌。合并將導(dǎo)致更具成本效益的資源利用率玖媚。租戶也可能在分片之間移動(dòng)以平衡工作量。

SQL數(shù)據(jù)庫(kù)提供了一個(gè)拆分/合并工具婚脱,與分片庫(kù)和目錄數(shù)據(jù)庫(kù)一起使用今魔。提供的應(yīng)用程序可以拆分和合并分片,并可以在分片之間移動(dòng)租戶數(shù)據(jù)障贸。該應(yīng)用程序還在這些操作過(guò)程中維護(hù)目錄错森,在移動(dòng)它們之前將受影響的分片租戶標(biāo)記為離線。移動(dòng)后篮洁,應(yīng)用程序再次使用新映射更新目錄涩维,并將租戶標(biāo)記為重新聯(lián)機(jī)。

更小的數(shù)據(jù)庫(kù)更容易管理

通過(guò)將租戶分布在多個(gè)數(shù)據(jù)庫(kù)中袁波,分片多租戶解決方案可生成更輕松管理的小型數(shù)據(jù)庫(kù)瓦阐。例如,將特定租戶恢復(fù)到以前的時(shí)間點(diǎn)現(xiàn)在涉及從備份恢復(fù)單個(gè)較小的數(shù)據(jù)庫(kù)锋叨,而不是包含所有租戶的較大數(shù)據(jù)庫(kù)垄分。可以選擇數(shù)據(jù)庫(kù)大小和每個(gè)數(shù)據(jù)庫(kù)的租戶數(shù)量來(lái)平衡工作負(fù)載和管理工作娃磺。

shema中的租戶標(biāo)識(shí)符ID

根據(jù)所使用的分片方法,可能會(huì)對(duì)數(shù)據(jù)庫(kù)模式施加額外的約束叫倍。SQL Database拆分/合并應(yīng)用程序要求Schema包含分片KEY偷卧,通常是租戶標(biāo)識(shí)符ID豺瘤。租戶標(biāo)識(shí)符ID是所有分片表主鍵中的主要元素。租戶標(biāo)識(shí)符使分離/合并應(yīng)用程序能夠快速定位和移動(dòng)與特定租戶相關(guān)聯(lián)的數(shù)據(jù)听诸。

分片的彈性池

分片多租戶數(shù)據(jù)庫(kù)可以放置在彈性池中坐求。一般來(lái)說(shuō),在一個(gè)池中擁有許多單租戶數(shù)據(jù)庫(kù)的成本效率與在少數(shù)多租戶數(shù)據(jù)庫(kù)中擁有許多租戶相當(dāng)晌梨。當(dāng)有大量相對(duì)不活躍的租戶時(shí)桥嗤,多租戶數(shù)據(jù)庫(kù)是有利的。

混合分片多租戶數(shù)據(jù)庫(kù)

在混合模型中仔蝌,所有數(shù)據(jù)庫(kù)在其Schema中都有租戶標(biāo)識(shí)符泛领。這些數(shù)據(jù)庫(kù)都能夠存儲(chǔ)多個(gè)租戶,并且數(shù)據(jù)庫(kù)可以被分割敛惊。所以在架構(gòu)意義上說(shuō)渊鞋,它們都是多租戶數(shù)據(jù)庫(kù)。然而在實(shí)踐中瞧挤,其中一些數(shù)據(jù)庫(kù)只包含一個(gè)租戶锡宋。無(wú)論如何,存儲(chǔ)在給定數(shù)據(jù)庫(kù)中的租戶數(shù)量對(duì)數(shù)據(jù)庫(kù)架構(gòu)沒(méi)有影響特恬。

移動(dòng)租戶

在任何時(shí)候执俩,您都可以將特定租戶遷移到自己的多租戶數(shù)據(jù)庫(kù)。在任何時(shí)候癌刽,您都可以改變主意并將租戶移回包含多個(gè)租戶的數(shù)據(jù)庫(kù)奠滑。在供應(yīng)新數(shù)據(jù)庫(kù)時(shí),您還可以將租戶分配給新的單租戶數(shù)據(jù)庫(kù)妒穴。

當(dāng)可識(shí)別的租戶群體的資源需求存在較大差異時(shí)宋税,混合模式就會(huì)發(fā)光。例如讼油,假設(shè)參與免費(fèi)試用的租戶無(wú)法保證與訂購(gòu)租戶相同的高性能水平杰赛。該政策可能適用于免費(fèi)試用階段的租戶存儲(chǔ)在所有免費(fèi)試用租戶共享的多租戶數(shù)據(jù)庫(kù)中。當(dāng)免費(fèi)試用租戶訂閱基本服務(wù)級(jí)別時(shí)矮台,租戶可以轉(zhuǎn)移到另一個(gè)租戶較少的多租戶數(shù)據(jù)庫(kù)乏屯。支付高級(jí)服務(wù)級(jí)別的用戶可以轉(zhuǎn)移到其新的單租戶數(shù)據(jù)庫(kù)。

在這種混合模式中瘦赫,用戶租戶的單租戶數(shù)據(jù)庫(kù)可以放置在資源池中辰晕,以降低每個(gè)租戶的數(shù)據(jù)庫(kù)成本。這也是在數(shù)據(jù)庫(kù)每租戶模型中完成的确虱。

租戶模型的比較


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末含友,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窘问,老刑警劉巖辆童,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異惠赫,居然都是意外死亡把鉴,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門儿咱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)庭砍,“玉大人,你說(shuō)我怎么就攤上這事混埠〉「祝” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵岔冀,是天一觀的道長(zhǎng)凯旭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)使套,這世上最難降的妖魔是什么罐呼? 我笑而不...
    開(kāi)封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮侦高,結(jié)果婚禮上嫉柴,老公的妹妹穿的比我還像新娘。我一直安慰自己奉呛,他們只是感情好计螺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瞧壮,像睡著了一般登馒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咆槽,一...
    開(kāi)封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天陈轿,我揣著相機(jī)與錄音,去河邊找鬼秦忿。 笑死麦射,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的灯谣。 我是一名探鬼主播潜秋,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼胎许!你這毒婦竟也來(lái)了峻呛?” 一聲冷哼從身側(cè)響起罗售,我...
    開(kāi)封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杀饵,沒(méi)想到半個(gè)月后莽囤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體谬擦,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡切距,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惨远。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谜悟。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖北秽,靈堂內(nèi)的尸體忽然破棺而出葡幸,到底是詐尸還是另有隱情,我是刑警寧澤贺氓,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布蔚叨,位于F島的核電站,受9級(jí)特大地震影響辙培,放射性物質(zhì)發(fā)生泄漏蔑水。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一扬蕊、第九天 我趴在偏房一處隱蔽的房頂上張望搀别。 院中可真熱鬧,春花似錦尾抑、人聲如沸歇父。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)榜苫。三九已至,卻和暖如春翎冲,著一層夾襖步出監(jiān)牢的瞬間垂睬,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工府适, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留羔飞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓檐春,卻偏偏與公主長(zhǎng)得像逻淌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疟暖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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