分布式NoSQL數(shù)據(jù)庫(kù)HBase介紹

1. HBase數(shù)據(jù)庫(kù)介紹

HBase產(chǎn)生背景
自1970年以來(lái),關(guān)系數(shù)據(jù)庫(kù)用于數(shù)據(jù)存儲(chǔ)和維護(hù)有關(guān)問題的解決方案麻敌。大數(shù)據(jù)的出現(xiàn)后诲宇,好多公司實(shí)現(xiàn)處理大數(shù)據(jù)并從中受益,并開始選擇像Hadoop的解決方案岁歉。Hadoop使用分布式文件系統(tǒng)得运,用于存儲(chǔ)大數(shù)據(jù),并使用MapReduce來(lái)處理锅移。Hadoop擅長(zhǎng)于存儲(chǔ)各種格式的龐大的數(shù)據(jù)熔掺,任意的格式甚至非結(jié)構(gòu)化的處理。
Hadoop的特點(diǎn):

對(duì)于任意格式的龐大數(shù)據(jù)集非剃,Hadoop可以做到安全存儲(chǔ)
但是對(duì)于需要在龐大數(shù)據(jù)集做針對(duì)于單條記錄的增刪改查是做不到的置逻。

Hadoop的限制:

Hadoop只能執(zhí)行批量處理,并且只以順序方式訪問數(shù)據(jù)备绽。這意味著必須搜索整個(gè)數(shù)據(jù)集券坞,即使是最簡(jiǎn)單的搜索工作鬓催。當(dāng)處理結(jié)果在另一個(gè)龐大的數(shù)據(jù)集,也是按順序處理一個(gè)巨大的數(shù)據(jù)集报慕。在這一點(diǎn)上深浮,一個(gè)新的解決方案,需要訪問數(shù)據(jù)中的任何點(diǎn)(隨機(jī)訪問)單元眠冈。

Hive的特點(diǎn):

對(duì)于存儲(chǔ)在HDFS上的結(jié)構(gòu)化的數(shù)據(jù)飞苇,如果增加一些描述這些數(shù)據(jù)的元數(shù)據(jù)信息,那么我們可以把存儲(chǔ)在HDFS上的數(shù)據(jù)抽象成一張二維表格蜗顽,使用Hive進(jìn)行各種Insert/Select操作布卡。但是Hive還是天生不支持對(duì)于單條記錄的增刪改查,也不是設(shè)計(jì)用來(lái)做單條記錄的增刪改查的雇盖。

Hadoop隨機(jī)存取數(shù)據(jù)庫(kù)

應(yīng)用程序忿等,如HBase,Cassandra崔挖,CouchDB贸街,Dynamo 和 MongoDB 都是一些存儲(chǔ)大量數(shù)據(jù)和以隨機(jī)方式訪問數(shù)據(jù)的數(shù)據(jù)庫(kù)。

總結(jié):

(1)海量數(shù)據(jù)量存儲(chǔ)成為瓶頸狸相,單臺(tái)機(jī)器無(wú)法負(fù)載大量數(shù)據(jù)
(2)單臺(tái)機(jī)器IO讀寫請(qǐng)求成為海量數(shù)據(jù)存儲(chǔ)時(shí)候高并發(fā)大規(guī)模請(qǐng)求的瓶頸
(3)隨著數(shù)據(jù)規(guī)模越來(lái)越大薛匪,大量業(yè)務(wù)場(chǎng)景開始考慮數(shù)據(jù)存儲(chǔ)橫向水平擴(kuò)展,使得存儲(chǔ)服務(wù)可以增加/刪除脓鹃,而目前的關(guān)系型數(shù)據(jù)庫(kù)更專注于一臺(tái)機(jī)器

HBase簡(jiǎn)介

HBase 是 Hadoop Database 的簡(jiǎn)稱逸尖,Hadoop Database,是一個(gè)高可靠性瘸右、高性能娇跟、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng)太颤,利用 HBase 技術(shù)可在廉價(jià) PC Server 上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群苞俘。HBase項(xiàng)目是由 Powerset 公司的 Chad Walters 和 Jim Kelleman 在2006年末發(fā)起,根據(jù) Google 的 Chang等人發(fā)表的論文"Bigtable:A Distributed Storage System for Strctured Data"來(lái)設(shè)計(jì)的龄章。
2007年10月發(fā)布了第一個(gè)版本吃谣。
2010年5月,HBase 從 Hadoop 子項(xiàng)目升級(jí)成 Apache 頂級(jí)項(xiàng)目瓦堵。

HBase官網(wǎng)簡(jiǎn)介

官網(wǎng):http://hbase.apache.org/
1基协、Apache HBase? is the Hadoop database, a distributed, scalable, big data store.
2、Use Apache HBase? when you need random, realtime read/write access to your Big Data.
3菇用、This project's goal is the hosting of very large tables -- billions of rows X millions of columns -- atop clusters of commodity hardware.
4澜驮、Apache HBase is an open-source, distributed, versioned, non-relational database modeled after Google's Bigtable: A Distributed Storage System for Structured Data by Chang et al. Just as Bigtable leverages the distributed data storage provided by the Google File System, Apache HBase provides Bigtable-like capabilities on top of Hadoop and HDFS.

HBase 是 BigTable 的開源(源碼使用Java編寫)版本。是 Apache Hadoop 的數(shù)據(jù)庫(kù)惋鸥,是建立在 HDFS之上杂穷,被設(shè)計(jì)用來(lái)提供高可靠性悍缠、高性能、列存儲(chǔ)耐量、可伸縮飞蚓、多版本的 NoSQL 的分布式數(shù)據(jù)存儲(chǔ)系統(tǒng),實(shí)現(xiàn)對(duì)大型數(shù)據(jù)的實(shí)時(shí)廊蜒、隨機(jī)的讀寫訪問趴拧。

HBase依賴于HDFS做底層的數(shù)據(jù)存儲(chǔ),BigTable依賴Google GFS做數(shù)據(jù)存儲(chǔ)
HBase依賴于MapReduce做數(shù)據(jù)計(jì)算山叮,BigTable依賴Google MapReduce做數(shù)據(jù)計(jì)算
HBase依賴于ZooKeeper做服務(wù)協(xié)調(diào)著榴,BigTable依賴Google Chubby做服務(wù)協(xié)調(diào)

與 Hadoop 一樣,HBase 目標(biāo)主要依靠橫向擴(kuò)展屁倔,通過不斷增加廉價(jià)的商用服務(wù)器脑又,來(lái)增加計(jì)算和存儲(chǔ)能力。所以锐借,HBase 是一個(gè)通過大量廉價(jià)機(jī)器解決海量數(shù)據(jù)的高速存儲(chǔ)和讀取的分布式數(shù)據(jù)庫(kù)解決方案

HBase特點(diǎn)總結(jié)

以下五點(diǎn)是HBase這個(gè)NoSQL數(shù)據(jù)庫(kù)的要點(diǎn):

1问麸、高并發(fā),以擴(kuò)展钞翔,解決海量數(shù)據(jù)集的隨機(jī)實(shí)時(shí)增刪改查
2严卖、HBase本質(zhì)依然是Key-Value數(shù)據(jù)庫(kù),查詢數(shù)據(jù)功能很簡(jiǎn)單嗅战,不支持join等復(fù)雜操作(可通過Hive支持來(lái)實(shí)現(xiàn)多表join等復(fù)雜操作)
3妄田、不支持復(fù)雜的事務(wù)俺亮,只支持行級(jí)事務(wù)
4驮捍、HBase中支持的數(shù)據(jù)類型:byte[](底層所有數(shù)據(jù)的存儲(chǔ)都是字節(jié)數(shù)組)
5、主要用來(lái)存儲(chǔ)結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)脚曾。

HBase中的表的特點(diǎn)

1东且、大:一個(gè)表可以有上十億行,上百萬(wàn)列
2本讥、面向列:列可以靈活指定珊泳,面向列(族)的存儲(chǔ)和權(quán)限控制,列(簇)獨(dú)立檢索拷沸。
3色查、稀疏:對(duì)于為空(null)的列,并不占用存儲(chǔ)空間撞芍,因此秧了,表可以設(shè)計(jì)的非常稀疏。
4序无、無(wú)嚴(yán)格模式:每行都有一個(gè)可排序的主鍵和任意多的列验毡,列可以根據(jù)需要?jiǎng)討B(tài)的增加衡创,同一張表中不同的行可以有截然不同的列

HBase特點(diǎn)總結(jié):

1、海量存儲(chǔ)
HBase適合存儲(chǔ)PB級(jí)別的海量數(shù)據(jù)晶通,在PB級(jí)別的數(shù)據(jù)以及采用廉價(jià)PC存儲(chǔ)的情況下璃氢,能在幾十到百毫秒內(nèi)返回?cái)?shù)據(jù)。這與HBase的極易擴(kuò)展性息息相關(guān)狮辽。正式因?yàn)镠Base良好的擴(kuò)展性一也,才為海量數(shù)據(jù)的存儲(chǔ)提供了便利。
2喉脖、列式存儲(chǔ)
這里的列式存儲(chǔ)其實(shí)說(shuō)的是列族存儲(chǔ)塘秦,Hbase是根據(jù)列族來(lái)存儲(chǔ)數(shù)據(jù)的。列族下面可以有非常多的列动看,列族在創(chuàng)建表的時(shí)候就必須指定尊剔。
3、極易擴(kuò)展
HBase的擴(kuò)展性主要體現(xiàn)在兩個(gè)方面菱皆,一個(gè)是基于上層處理能力(RegionServer)的擴(kuò)展须误,一個(gè)是基于存儲(chǔ)的擴(kuò)展(HDFS)。通過橫向添加RegionSever的機(jī)器仇轻,進(jìn)行水平擴(kuò)展京痢,提升HBase上層的處理能力,提升HBase服務(wù)更多Region的能力篷店。
備注:RegionServer的作用是管理region祭椰、承接業(yè)務(wù)的訪問,這個(gè)后面會(huì)詳細(xì)的介紹通過橫向添加
DataNode的機(jī)器疲陕,進(jìn)行存儲(chǔ)層擴(kuò)容方淤,提升HBase的數(shù)據(jù)存儲(chǔ)能力和提升后端存儲(chǔ)的讀寫能力。
4蹄殃、高并發(fā)
由于目前大部分使用HBase的架構(gòu)携茂,都是采用的廉價(jià)PC,因此單個(gè)IO的延遲其實(shí)并不小诅岩,一般在幾十到上百ms之間讳苦。這里說(shuō)的高并發(fā),主要是在并發(fā)的情況下吩谦,HBase的單個(gè)IO延遲下降并不多鸳谜。能獲得高并發(fā)、低延遲的服務(wù)式廷。
5咐扭、稀疏
稀疏主要是針對(duì)HBase列的靈活性,在列族中,你可以指定任意多的列草描,在列數(shù)據(jù)為空的情況下览绿,是不會(huì)占用存儲(chǔ)空間的。

HBase核心物理概念

表結(jié)構(gòu)邏輯視圖:



關(guān)于圖的標(biāo)注:
箭頭:表示索引順序
紅色數(shù)據(jù):key
黃色數(shù)據(jù):value
上圖總結(jié):

索引數(shù)據(jù)的流程:table ---> rowkey ---> column family ---> column ---> timestamp
行剿肽健(rowkey):HBase中的每張表饿敲,都會(huì)按照rowkey全局排序
列簇(Column Family):包含一組列,列在插入數(shù)據(jù)之前指定逛绵,列簇就必須在建表的時(shí)候指定
列(Column):一個(gè)列簇中會(huì)包含多個(gè)列怀各,并且可以不同
時(shí)間戳(TimeStamp):每個(gè)列的值都可以保存多個(gè)版本,使用時(shí)間戳來(lái)表示术浪,并且按照時(shí)間戳由近到遠(yuǎn)排序

理解MySQL幫助理解HBase:

1瓢对、RDBMS完全可以抽象成是一張二維表格,表由行和列組成胰苏。由行和列確定一個(gè)唯一的值
2硕蛹、HBase本質(zhì)是key-value數(shù)據(jù)庫(kù),key是行健rowkey硕并,value是所有真實(shí)key-value的集合
3法焰、HBase也可以抽象成為一張四維表格,四維分別由行健RowKey倔毙,列簇Column Family埃仪,列Column和時(shí)間戳Timestamp組成。
4陕赃、其中卵蛉,一張HBase的所有列劃分為若干個(gè)列簇 (Column Family)

行鍵(RowKey)

與NoSQL數(shù)據(jù)庫(kù)們一樣,RowKey是用來(lái)檢索記錄的主鍵么库。訪問HBase Table中的行傻丝,只有三種方式:

1、通過單個(gè)row key訪問
2廊散、通過row key的range
3桑滩、全表掃描

RowKey行鍵可以是任意字符串(最大長(zhǎng)度是64KB梧疲,實(shí)際應(yīng)用中長(zhǎng)度一般為10-100bytes)允睹,最好是16。
在HBase內(nèi)部幌氮,RowKey保存為字節(jié)數(shù)組缭受。HBase會(huì)對(duì)表中的數(shù)據(jù)按照rowkey排序(字典順序)
存儲(chǔ)時(shí),數(shù)據(jù)按照RowKey的字典序(byte order)排序存儲(chǔ)该互。設(shè)計(jì)Key時(shí)米者,要充分排序存儲(chǔ)這個(gè)特性,將經(jīng)常一起讀取的行存儲(chǔ)放到一起。(位置相關(guān)性)

列簇(Column Family)

HBase表中的每個(gè)列蔓搞,都?xì)w屬與某個(gè)列簇胰丁。列簇是表的Schema的一部分(而列不是),必須在創(chuàng)建表的時(shí)候指定喂分。指定好了列簇就不能更改锦庸。列簇可以增加或者刪除,刪除的時(shí)候會(huì)刪除這個(gè)列簇中的所有數(shù)據(jù)列名都以列簇作為前綴蒲祈。例如 courses:history 甘萧, courses:math 都屬于courses這個(gè)列簇,訪問控制梆掸、磁盤和內(nèi)存的使用統(tǒng)計(jì)等都是在列簇層面進(jìn)行的扬卷。
列簇越多,在取一行數(shù)據(jù)時(shí)所要參與IO酸钦、搜尋的文件就越多怪得,所以,如果沒有必要卑硫,不要設(shè)置太多的列簇汇恤,官網(wǎng)推薦是小于等于3(最好就一個(gè)列簇)

時(shí)間戳(TimeStamp)

HBase 中通過 RowKey 和 Column 確定的為一個(gè)存儲(chǔ)單元稱為 Cell。每個(gè) Cell 都保存著同一份數(shù)據(jù)的多個(gè)版本拔恰。版本通過時(shí)間戳來(lái)索引因谎。時(shí)間戳的類型是64位整型。時(shí)間戳可以由HBase (在數(shù)據(jù)寫入時(shí)自動(dòng))賦值颜懊,此時(shí)時(shí)間戳是精確到毫秒的當(dāng)前系統(tǒng)時(shí)間财岔。時(shí)間戳也可以由客戶顯式賦值。如果應(yīng)用程序要避免數(shù)據(jù)版本沖突河爹,就必須自己生成具有唯一性的時(shí)間戳匠璧。每個(gè)Cell中,不同版本的數(shù)據(jù)按照時(shí)間倒序排序咸这,即最新的數(shù)據(jù)排在最前面夷恍。HBase在查詢的時(shí)候,默認(rèn)返回最新版本/最近的數(shù)據(jù)媳维。如果需要讀取舊版本的數(shù)據(jù)酿雪,可以指定時(shí)間戳
為了避免數(shù)據(jù)存在過多版本造成的的管理(包括存儲(chǔ)和索引)負(fù)擔(dān),HBase提供了兩種數(shù)據(jù)版本回收方式:

保存數(shù)據(jù)的最后n個(gè)版本
保存最近一段時(shí)間內(nèi)的版本(設(shè)置數(shù)據(jù)的生命周期TTL)

用戶可以針對(duì)每個(gè)列簇進(jìn)行設(shè)置侄刽。

單元格(Cell)

由 {RowKey, Column(=<Column Family> + <Qualifier>), Version} 唯一確定的單元指黎,Cell中的
數(shù)據(jù)是沒有類型的,全部是字節(jié)碼形式存儲(chǔ)

HBase應(yīng)用場(chǎng)景

1州丹、半結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)

對(duì)于數(shù)據(jù)結(jié)構(gòu)字段不夠確定或雜亂無(wú)章很難按一個(gè)概念去進(jìn)行抽取的數(shù)據(jù)適合用HBase醋安。而且HBase是面向列的杂彭,HBase支持動(dòng)態(tài)增加字段

2、記錄非常稀疏

RDBMS的行有多少列是固定的吓揪,為null的列浪費(fèi)了存儲(chǔ)空間亲怠。而HBase為null的Column是不會(huì)被存儲(chǔ)的,這樣既節(jié)省了空間又提高了讀性能柠辞。

3赁炎、多版本數(shù)據(jù)

對(duì)于需要存儲(chǔ)變動(dòng)歷史記錄的數(shù)據(jù),使用HBase就再合適不過了钾腺。HBase根據(jù)Row key和Column key定位到的Value可以有任意數(shù)量的版本值徙垫。

4、超大數(shù)據(jù)量的隨機(jī)放棒、實(shí)時(shí)讀寫

當(dāng)數(shù)據(jù)量越來(lái)越大姻报,RDBMS數(shù)據(jù)庫(kù)撐不住了,就出現(xiàn)了讀寫分離策略间螟,通過一個(gè)Master專門負(fù)責(zé)寫操作吴旋,多個(gè)Slave負(fù)責(zé)讀操作,服務(wù)器成本倍增厢破。隨著壓力增加荣瑟,Master撐不住了,這時(shí)就要分庫(kù)了摩泪,把關(guān)聯(lián)不大的數(shù)據(jù)分開部署笆焰,一些join查詢不能用了,需要借助中間層见坑。隨著數(shù)據(jù)量的進(jìn)一步增加嚷掠,一個(gè)表的記錄越來(lái)越大,查詢就變得很慢荞驴,于是又得搞分表不皆,比如按ID取模分成多個(gè)表以減少單個(gè)表的記錄數(shù)。經(jīng)歷過這些事的人都知道過程是多么的折騰熊楼。采用HBase就簡(jiǎn)單了霹娄,只需要加機(jī)器即可,HBase會(huì)自動(dòng)水平切分?jǐn)U展鲫骗,跟Hadoop的無(wú)縫集成保障了其數(shù)據(jù)可靠性(HDFS)和海量數(shù)據(jù)分析的高性能(MapReduce)犬耻。

5、查詢簡(jiǎn)單

不涉及到復(fù)雜的Join查詢挎峦,基于RowKey的簡(jiǎn)單查詢或者RowKey的范圍查詢

HBase的訪問接口

1香追、Native Java API,最常規(guī)和高效的訪問方式坦胶,適合Hadoop MapReduce Job并行批處理HBase表數(shù)據(jù)
2、HBase Shell,HBase的命令行工具顿苇,最簡(jiǎn)單的接口峭咒,適合HBase管理使用
3、Thrift Gateway纪岁,利用Thrift序列化技術(shù)凑队,支持C++,PHP幔翰,Python等多種語(yǔ)言漩氨,適合其他異構(gòu)系統(tǒng)在線訪問HBase表數(shù)據(jù)
4、REST Gateway遗增,支持REST 風(fēng)格的Http API訪問HBase, 解除了語(yǔ)言限制
5叫惊、Pig,可以使用Pig Latin流式編程語(yǔ)言來(lái)操作HBase中的數(shù)據(jù)做修,和Hive類似霍狰,本質(zhì)最終也是編譯成MapReduce Job來(lái)處理HBase表數(shù)據(jù),適合做數(shù)據(jù)統(tǒng)計(jì)
6饰及、Hive蔗坯,使用Hive整合HBae,能實(shí)現(xiàn)針對(duì)單條記錄的增刪改查燎含,也能假設(shè)一個(gè)SQL客戶端宾濒,針對(duì)HBaes中的數(shù)據(jù)進(jìn)行查詢分析。

2. HBase集群結(jié)構(gòu)

系統(tǒng)架構(gòu)

HBase也是一個(gè)類似于HDFS的主從架構(gòu)體系屏箍,依托于zookeeper實(shí)現(xiàn)高可用



HBase核心角色

HMaster

HBase的主節(jié)點(diǎn)鼎兽,負(fù)責(zé)整個(gè)集群的狀態(tài)感知、負(fù)載分配铣除、負(fù)責(zé)用戶表的元數(shù)據(jù)(schema)管理(可以配置多個(gè)用來(lái)實(shí)現(xiàn)HA)谚咬,HMaster負(fù)載壓力相對(duì)于HDFS的NameNode會(huì)小很多。HBase的HMaster其實(shí)就算是宕機(jī)一段時(shí)間也可以正常對(duì)外提供服務(wù)的(要搞清楚為什么)尚粘。

RegionServer:

HBase中真正負(fù)責(zé)管理Region的服務(wù)器择卦,也就是負(fù)責(zé)為客戶端進(jìn)行表數(shù)據(jù)讀寫的服務(wù)器。每一臺(tái)RegionServer會(huì)管理很多的Region郎嫁,一個(gè)RegionServer上面管理的所有的region不屬于同一張表秉继。負(fù)責(zé)Region的Split,負(fù)責(zé)和底層的HDFS的存儲(chǔ)交互泽铛,負(fù)責(zé)StoreFile的Compact尚辑。

ZooKeeper

整個(gè)HBase中的主從節(jié)點(diǎn)協(xié)調(diào),元數(shù)據(jù)的入口盔腔,主節(jié)點(diǎn)之間的選舉杠茬,集群節(jié)點(diǎn)之間的上下線感知……都是通過ZooKeeper來(lái)實(shí)現(xiàn)

HDFS

用來(lái)存儲(chǔ)HBase的系統(tǒng)文件月褥,或者表的Region文件

Client

Client包含了訪問HBase的接口,另外Client還維護(hù)了對(duì)應(yīng)的Cache來(lái)加速HBase的訪問瓢喉,比如Cache的.META.元數(shù)據(jù)的信息宁赤。

Region

是HBase將一個(gè)表中的所有數(shù)據(jù)按照RowKey的不同范圍進(jìn)行切割的邏輯單元,每個(gè)Region負(fù)責(zé)一定范圍數(shù)據(jù)的讀寫訪問栓票。Region由RegionServer負(fù)責(zé)管理决左。HBase中的Region的概念就和HDFS中的數(shù)據(jù)塊的概念差不多,Region是HBase表切分出來(lái)的一個(gè)分片走贪。數(shù)據(jù)塊是HDFS中的一個(gè)大文件切分出來(lái)的一個(gè)分片佛猛。

3. HBase和Hive的比較

相同點(diǎn)

1、HBase和Hive都是架構(gòu)在Hadoop之上坠狡,用HDFS做底層的數(shù)據(jù)存儲(chǔ)继找,用MapReduce做數(shù)據(jù)計(jì)算

不同點(diǎn)

1、Hive是建立在Hadoop之上為了降低MapReduce編程復(fù)雜度的ETL工具擦秽。
HBase是為了彌補(bǔ)Hadoop對(duì)實(shí)時(shí)操作的缺陷
2码荔、Hive表是純邏輯表,因?yàn)镠ive的本身并不能做數(shù)據(jù)存儲(chǔ)和計(jì)算感挥,而是完全依賴Hadoop
HBase是物理表缩搅,提供了一張超大的內(nèi)存Hash表來(lái)存儲(chǔ)索引,方便查詢
3触幼、Hive是數(shù)據(jù)倉(cāng)庫(kù)工具硼瓣,需要全表掃描,就用Hive置谦,因?yàn)镠ive是文件存儲(chǔ)
HBase是數(shù)據(jù)庫(kù)堂鲤,需要索引訪問,則用HBase媒峡,因?yàn)镠Base是面向列的NoSQL數(shù)據(jù)庫(kù)
4瘟栖、Hive表中存入數(shù)據(jù)(文件)時(shí)不做校驗(yàn),屬于讀模式存儲(chǔ)系統(tǒng)
HBase表插入數(shù)據(jù)時(shí)谅阿,會(huì)和RDBMS一樣做Schema校驗(yàn)半哟,所以屬于寫模式存儲(chǔ)系統(tǒng)
5、Hive不支持單行記錄操作签餐,數(shù)據(jù)處理依靠MapReduce寓涨,操作延時(shí)高
HBase支持單行記錄的CRUD,并且是實(shí)時(shí)處理氯檐,效率比Hive高得多

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末戒良,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子冠摄,更是在濱河造成了極大的恐慌糯崎,老刑警劉巖几缭,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拇颅,居然都是意外死亡奏司,警方通過查閱死者的電腦和手機(jī)乔询,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門樟插,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人竿刁,你說(shuō)我怎么就攤上這事黄锤。” “怎么了食拜?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵鸵熟,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我负甸,道長(zhǎng)流强,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任呻待,我火速辦了婚禮打月,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蚕捉。我一直安慰自己奏篙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布迫淹。 她就那樣靜靜地躺著秘通,像睡著了一般。 火紅的嫁衣襯著肌膚如雪敛熬。 梳的紋絲不亂的頭發(fā)上肺稀,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音应民,去河邊找鬼话原。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瑞妇,可吹牛的內(nèi)容都是我干的稿静。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辕狰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼改备!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蔓倍,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤悬钳,失蹤者是張志新(化名)和其女友劉穎盐捷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體默勾,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碉渡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了母剥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滞诺。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖环疼,靈堂內(nèi)的尸體忽然破棺而出习霹,到底是詐尸還是另有隱情,我是刑警寧澤炫隶,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布淋叶,位于F島的核電站,受9級(jí)特大地震影響伪阶,放射性物質(zhì)發(fā)生泄漏煞檩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一栅贴、第九天 我趴在偏房一處隱蔽的房頂上張望斟湃。 院中可真熱鬧,春花似錦筹误、人聲如沸桐早。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哄酝。三九已至,卻和暖如春祷膳,著一層夾襖步出監(jiān)牢的瞬間陶衅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工直晨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搀军,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓勇皇,卻偏偏與公主長(zhǎng)得像罩句,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子敛摘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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