銀行數(shù)據(jù)倉(cāng)庫(kù)體系實(shí)踐(4)--數(shù)據(jù)抽取和加載

1、ETL和ELT

????????ETL是Extract、Transfrom、Load即抽取、轉(zhuǎn)換、加載三個(gè)英文單詞首字母的集合:

????????E:抽取,從源系統(tǒng)(Souce)獲取數(shù)據(jù);

????????T:轉(zhuǎn)換,將源系統(tǒng)獲取的數(shù)據(jù)進(jìn)行處理加工,比如數(shù)據(jù)格式轉(zhuǎn)化、數(shù)據(jù)精度轉(zhuǎn)換、數(shù)據(jù)清洗、缺失數(shù)據(jù)補(bǔ)齊、異常數(shù)據(jù)排除等。

????????L:加載,將數(shù)據(jù)加載到目標(biāo)數(shù)據(jù)庫(kù)(Target)。

????????ELT也是同樣三個(gè)單詞的首字母組合,只是把T、L顛倒了下順序。ETL強(qiáng)調(diào)的是先進(jìn)性數(shù)據(jù)轉(zhuǎn)換,然后再加載到目標(biāo)。這個(gè)轉(zhuǎn)換過(guò)程可以在原系統(tǒng)進(jìn)行,也可以在中間環(huán)境進(jìn)行進(jìn)行。而ELT是把數(shù)據(jù)加載到數(shù)據(jù)倉(cāng)庫(kù)后再進(jìn)行轉(zhuǎn)化。ETL優(yōu)勢(shì)是充分利用各關(guān)聯(lián)系統(tǒng)的性能,提高效率,但程序部署分散,運(yùn)維成本較高。ELT是充分發(fā)揮數(shù)據(jù)倉(cāng)庫(kù)平臺(tái)數(shù)據(jù)加工的高性能,并且可以保存原始數(shù)據(jù)方便后續(xù)復(fù)用。

????????隨著數(shù)據(jù)倉(cāng)庫(kù)平臺(tái)的性能越來(lái)越高,容量成本越來(lái)越低,目前更多的是采用ELT方式,充分利用數(shù)據(jù)倉(cāng)庫(kù)的高性能,提高加工效率。但在數(shù)據(jù)加載前也需要進(jìn)行數(shù)據(jù)編碼轉(zhuǎn)化、異常數(shù)據(jù)等影響加載的處理,確保數(shù)據(jù)正確加載到數(shù)據(jù)倉(cāng)庫(kù)平臺(tái),但不做數(shù)據(jù)邏輯加工。

????????由于ETL出現(xiàn)較早,通常使用ETL來(lái)代表數(shù)據(jù)抽取加載和轉(zhuǎn)換的統(tǒng)稱(chēng)。

2、ETL架構(gòu)設(shè)計(jì)

????????數(shù)據(jù)ETL需要有ETL服務(wù)器集群執(zhí)行數(shù)據(jù)ETL作業(yè)來(lái)進(jìn)行數(shù)據(jù)抽取、轉(zhuǎn)換和加載,所有ETL作業(yè)的腳本部署多臺(tái)ETL服務(wù)器上,ETL作業(yè)可以根據(jù)服務(wù)器資源由調(diào)度工具分配到任意一臺(tái)ETL服務(wù)器執(zhí)行,常見(jiàn)架構(gòu)如下圖:

????????ETL架構(gòu)不僅僅是作為數(shù)據(jù)倉(cāng)庫(kù)的架構(gòu),但也是全行批量數(shù)據(jù)交換的統(tǒng)一架構(gòu)和標(biāo)準(zhǔn),雖然數(shù)據(jù)倉(cāng)庫(kù)是其中最大的一個(gè)數(shù)據(jù)加載的目標(biāo)系統(tǒng)和數(shù)據(jù)源系統(tǒng),但從架構(gòu)規(guī)劃角度來(lái)看,需要從全行、全集團(tuán)的角度來(lái)設(shè)計(jì)批量數(shù)據(jù)交換,考慮多機(jī)構(gòu)間交互場(chǎng)景,減少不必要的轉(zhuǎn)換,提高效率和穩(wěn)定性。

????????ETL服務(wù)器集群需要做到高可用,對(duì)于不能正常服務(wù)或負(fù)載過(guò)高的服務(wù)器,調(diào)度平臺(tái)不會(huì)將作業(yè)分配到該服務(wù)器,所有的ETL作業(yè)腳本需要在每臺(tái)服務(wù)器上部署,不能只部署一份代碼到共享存儲(chǔ)中。

????????在硬件資源上,服務(wù)器的IO和內(nèi)存需要配置較高,同是由于批量數(shù)據(jù)容量較大,網(wǎng)絡(luò)帶寬需要千兆以上,同時(shí)需要考慮在傳輸高峰不能影響交易系統(tǒng)的網(wǎng)絡(luò)通訊。

?

(1)文件方式和端到端方式

?? ? ????數(shù)據(jù)抽取和加載從是否經(jīng)過(guò)中間落地成文件來(lái)區(qū)分主要有文件落地方式和端到端不落地(內(nèi)存)的兩種方式。文件方式指ETL服務(wù)器的抽取數(shù)據(jù)作業(yè)從源系統(tǒng)獲取轉(zhuǎn)煥為文件放到文件共享存儲(chǔ)中,再由加載作業(yè)到目標(biāo)系統(tǒng)中。端到端方式是ETL服務(wù)器從 源系統(tǒng)獲取數(shù)據(jù)后在內(nèi)存中直接加載到目標(biāo)系統(tǒng)。

????????從步驟中可以看出端到端方式在內(nèi)存中直接加載,從單個(gè)作業(yè)速度對(duì)比來(lái)看速度應(yīng)該更快,開(kāi)發(fā)更簡(jiǎn)單,但端到端方式對(duì)內(nèi)存資源要求較高,并行作業(yè)的最大值一般較文件低,同時(shí)文件具有以下好處:

??????? 1)各數(shù)據(jù)庫(kù)對(duì)文件導(dǎo)入和導(dǎo)出支持較好,一般都會(huì)提供專(zhuān)門(mén)的工具和高性能接口(如oracle sqlload導(dǎo)入文件和spool導(dǎo)出文件的性能較高)。因此大批量的數(shù)據(jù)抽取和加載作業(yè)的效率從整體看文件方式不一定比端到端的方式慢。

??????? 2)文件方式耦合性比端到端低,如果發(fā)現(xiàn)數(shù)據(jù)加載出現(xiàn)問(wèn)題,可以不用重新抽取數(shù)據(jù),減少抽數(shù)對(duì)源系統(tǒng)的性能影響。

??????? 3)文件通用性較好,如果涉及多網(wǎng)絡(luò)或多機(jī)構(gòu)之間的數(shù)據(jù)交換,A子公司的ETL服務(wù)器無(wú)法連接到B子公司的數(shù)據(jù)庫(kù)。另外對(duì)于非結(jié)構(gòu)化數(shù)據(jù)來(lái)源廣泛,導(dǎo)出文件比較通用。

?????? 具體采用文件方式,端到端方式還是兩者都采用的方式,各公司需要考慮服務(wù)器資源、現(xiàn)有工具及數(shù)據(jù)庫(kù)驅(qū)動(dòng)性能、成本、數(shù)據(jù)交換場(chǎng)景等多種情況來(lái)確定。


(2)文件方式方案需要考慮的要點(diǎn)

?????? 文件方式比較通用,多機(jī)構(gòu)之間較多采用文件方式進(jìn)行批量數(shù)據(jù)交互,但采用文件方式進(jìn)行架構(gòu)設(shè)計(jì)和開(kāi)發(fā)時(shí)需要關(guān)注以下幾點(diǎn):

??? 1)統(tǒng)一的文件交換規(guī)范和文件傳輸平臺(tái)

文件存儲(chǔ)規(guī)范制定文件目錄、文件命名、用戶權(quán)限、文件校驗(yàn)、文件清理等規(guī)范,如果涉及到跨機(jī)構(gòu)批量文件傳輸,還需要統(tǒng)一有文件傳輸平臺(tái),提供統(tǒng)一的文件高效傳輸、加密、校驗(yàn)、限流、文件夾同步等功能。國(guó)內(nèi)銀行使用較多的文件傳輸平臺(tái)有東方通、神州數(shù)碼等公司產(chǎn)品。

???? 文件目錄規(guī)范中需要區(qū)分?jǐn)?shù)據(jù)產(chǎn)生系統(tǒng)、數(shù)據(jù)使用系統(tǒng)、數(shù)據(jù)日期等,文件名中需要說(shuō)明產(chǎn)生系統(tǒng)、文件內(nèi)容描述、增量全量標(biāo)志、數(shù)據(jù)日期等,規(guī)則舉例如下:

????????數(shù)據(jù)源系統(tǒng)/數(shù)據(jù)日期/目標(biāo)系統(tǒng)/源系統(tǒng)_文件內(nèi)容描述_數(shù)據(jù)日期_增全量標(biāo)志_頻率標(biāo)志.txt

????????舉例:CBS/20190620/EDW/CBS_DEPOSIT-ACCOUT_20190620_ALL_D.txt

????????說(shuō)明:【CBS、EDW為系統(tǒng)名】【ALL為全量標(biāo)志】【D為每日】

?????? 2)文件格式:定長(zhǎng)or 變長(zhǎng)(分隔符)

定長(zhǎng):文件大,I/O資源消耗大,但能消除回車(chē)符、分隔符以及亂字符問(wèn)題。

變長(zhǎng)(分隔符):文件小,處理性能高,但需處理異常情況較多:

?????????<1>分隔符:數(shù)據(jù)中存在分隔符,導(dǎo)致加載報(bào)錯(cuò),可選用兩個(gè)連續(xù)的不可見(jiàn)字符作為分隔符,基本可以解決該問(wèn)題;

?????????<2>換行符:導(dǎo)出文件時(shí)一般以換行符作為一行數(shù)據(jù)的結(jié)束,如果導(dǎo)出工具支持可以改成不可見(jiàn)字符作為換行符,不支持的話導(dǎo)出時(shí)對(duì)數(shù)據(jù)中的換行符進(jìn)行替換;

???????? <3>異常字符:如截取導(dǎo)致的半個(gè)UTF-8字符的編碼或者HEX00等字符,一些數(shù)據(jù)庫(kù)不支持會(huì)報(bào)錯(cuò),一般這些字符發(fā)生在以前的主機(jī)上,異常情況下出現(xiàn)沒(méi)處理,可以提前在源系統(tǒng)進(jìn)行數(shù)據(jù)清洗或者導(dǎo)出時(shí)進(jìn)行替換清洗。

????????因此一般在這些問(wèn)題都有較好解決方法不影響抽取加載作業(yè)效率的情況下,都會(huì)采用變長(zhǎng)(分隔符)的方式。

??? 3)文件編碼

????????文件導(dǎo)出需要統(tǒng)一編碼,一般采用UAT-8編碼,適應(yīng)多國(guó)字符,但如果只有國(guó)內(nèi)應(yīng)用,也可以考慮GB18030或GBK編碼,因?yàn)檫@兩種編碼中文字符比UTF-8編碼節(jié)省1/3多的存儲(chǔ)空間。性能較好。


(3)端到端方式需要考慮的要點(diǎn)

1)工具選擇

????????目前市場(chǎng)上商用的ETL工具如DATASTAGE、INFORMATICA,開(kāi)源的SQOOP都支持端到端的處理,商用工具還提供中間的圖形化的數(shù)據(jù)轉(zhuǎn)換編碼功能,但商用軟件一般成本較高,對(duì)于一些數(shù)據(jù)庫(kù)的高性能驅(qū)動(dòng)還需要收費(fèi),開(kāi)源工具功能較通用,但性能需要優(yōu)化,同時(shí)需要有一定的技術(shù)能力來(lái)定制功能和軟件升級(jí)。

?? 2)驅(qū)動(dòng)選擇

????????選擇數(shù)據(jù)庫(kù)提供的高性能原生(native)驅(qū)動(dòng),不要使用ODBC驅(qū)動(dòng),原生的驅(qū)動(dòng)性能數(shù)倍于ODBC等通用驅(qū)動(dòng),采集數(shù)據(jù)較多時(shí)能很大提高效率。

?? 3)字符編碼

? ? ? ?需要將數(shù)據(jù)從源系統(tǒng)導(dǎo)出時(shí)轉(zhuǎn)換為目標(biāo)數(shù)據(jù)庫(kù)的編碼格式,在全公司的數(shù)據(jù)庫(kù)編碼和數(shù)據(jù)倉(cāng)庫(kù)內(nèi)的字符編碼需要進(jìn)行統(tǒng)一規(guī)范,既可以減少轉(zhuǎn)換成本,也可以減少生僻字、無(wú)法轉(zhuǎn)換等異常情況。


3、抽取和加載開(kāi)發(fā)設(shè)計(jì)

(1)開(kāi)發(fā)需求分析

????????由于源系統(tǒng)和目標(biāo)系統(tǒng)數(shù)據(jù)庫(kù)不同,數(shù)據(jù)質(zhì)量不高,需要注意之間不同數(shù)據(jù)庫(kù)之間的字段類(lèi)型、長(zhǎng)度、精度的轉(zhuǎn)換,為后續(xù)數(shù)據(jù)加工做好清洗:

????????1)源系統(tǒng)字段沒(méi)有明確精度和長(zhǎng)度時(shí),如Oracle中字段類(lèi)型為number,沒(méi)有定義精度,使用DATASTAGE時(shí),當(dāng)大于15位的number型數(shù)字接近最大值時(shí)會(huì)自動(dòng)進(jìn)位,所以在目標(biāo)表設(shè)計(jì)字段精度時(shí)需要考慮這種異常情況。

????????2)字符字段的全角和半角是否都統(tǒng)一為半角;

????????3)字符字段左右空格是否都統(tǒng)一去掉;

????????在開(kāi)發(fā)抽取加載作業(yè)時(shí),需要配置以下主要信息,這些信息需要在數(shù)據(jù)調(diào)研和需求分析時(shí)提前確定:

(2)全表字段自動(dòng)加載

?????? 一般開(kāi)發(fā)時(shí)會(huì)采用固定字段抽取加載的方式,但由于源系統(tǒng)的表結(jié)構(gòu)會(huì)經(jīng)常變化,比如增加字段,字段長(zhǎng)度變長(zhǎng),如果每次變化都要隨之修改,許多時(shí)間會(huì)耗費(fèi)在這些小修小改中,因此在進(jìn)行抽取和加載時(shí),需要根據(jù)源系統(tǒng)表結(jié)構(gòu)自動(dòng)生成對(duì)應(yīng)的抽取腳本、目標(biāo)表結(jié)構(gòu)、加載腳本,自動(dòng)適應(yīng)源系統(tǒng)的表結(jié)構(gòu)變化。

?(3)源系統(tǒng)數(shù)據(jù)表變化通知和監(jiān)控

????????雖然抽取和加載作業(yè)可以適應(yīng)源系統(tǒng)表結(jié)構(gòu)變化,但字段長(zhǎng)度、精度變化、字段刪除、代碼值變化和字段含義變化會(huì)對(duì)后續(xù)數(shù)據(jù)加工作業(yè)帶來(lái)影響。因此源系統(tǒng)需要將這些變更提前告知數(shù)據(jù)倉(cāng)庫(kù)或目標(biāo)系統(tǒng),否則就會(huì)產(chǎn)生生產(chǎn)問(wèn)題,但源系統(tǒng)開(kāi)發(fā)同事往往會(huì)產(chǎn)生遺漏,因此在公司數(shù)據(jù)治理制度中明確開(kāi)發(fā)分工、數(shù)據(jù)問(wèn)題責(zé)任界定。如在每次版本需求分析時(shí)需要考慮數(shù)據(jù)變化對(duì)數(shù)據(jù)倉(cāng)庫(kù)及其它系統(tǒng)的影響,并在測(cè)試階段提前進(jìn)行影響測(cè)試。在上線前也需要檢查下系統(tǒng)表結(jié)構(gòu)變化的DDL文件,分析影響并通知影響系統(tǒng)。

????????由于源系統(tǒng)字段的變化會(huì)影響到后續(xù)的數(shù)據(jù)流向的所有系統(tǒng),因此在數(shù)據(jù)倉(cāng)庫(kù)的模型設(shè)計(jì)時(shí)需要提前設(shè)計(jì)冗余,減少字段長(zhǎng)度、精度變化的影響,比如源系統(tǒng)字段長(zhǎng)度是128,在數(shù)據(jù)倉(cāng)庫(kù)主數(shù)據(jù)模型中可以設(shè)計(jì)為500。減少對(duì)后續(xù)數(shù)據(jù)使用系統(tǒng)的影響。具體影響分析工具會(huì)在后續(xù)的“元數(shù)據(jù)管理”中詳細(xì)說(shuō)明。

????????由于只靠源系統(tǒng)的通知并不完全可靠,還需要做好源數(shù)據(jù)表結(jié)構(gòu)變化和代碼值變化的監(jiān)控,每天對(duì)抽取的表結(jié)構(gòu)和上一日進(jìn)行比對(duì),代碼值與代碼值映射表中比對(duì),對(duì)發(fā)現(xiàn)未告知的情況進(jìn)行郵件告警,并評(píng)估影響、及時(shí)處理,以免問(wèn)題積累,需耗費(fèi)大量精力修復(fù)。

?(4)自動(dòng)化腳本生成及執(zhí)行

?????? 對(duì)于抽取加載作業(yè)需要做成標(biāo)準(zhǔn)化程序,即一個(gè)程序處理所有的抽取加載作業(yè),根據(jù)不同的配置信息來(lái)完成所有作業(yè),在調(diào)度工具中的所有抽取加載作業(yè)指向的是同一個(gè)程序,由這個(gè)程序根據(jù)傳入的作業(yè)名和日期自動(dòng)化生成腳本并執(zhí)行。這樣對(duì)于開(kāi)發(fā)只是進(jìn)行配置信息的確認(rèn)和導(dǎo)入即可,不需要涉及代碼開(kāi)發(fā)。

?????? 許多ETL工具需要開(kāi)發(fā)腳本再執(zhí)行,特別一些商用的軟件如DATASTAGE還提供了可視化的開(kāi)發(fā)界面,但這樣開(kāi)發(fā)也比較耗時(shí),對(duì)于使用的ETL工具如DATASTAGE、SQOOP也支持編程和腳本調(diào)用作業(yè),所以可以用統(tǒng)一的程序來(lái)調(diào)用ETL工具進(jìn)行抽取加載數(shù)據(jù)。提高開(kāi)發(fā)效率,以下是供參考的流程。

(5)監(jiān)控及異常處理

????????數(shù)據(jù)抽取和加載作業(yè)是數(shù)據(jù)倉(cāng)庫(kù)每天第一批作業(yè),如果發(fā)生問(wèn)題往往對(duì)整個(gè)批處理時(shí)效產(chǎn)生較大影響,甚至影響監(jiān)管報(bào)送時(shí)效。因此需要對(duì)作業(yè)進(jìn)行監(jiān)控,及時(shí)預(yù)警。

?????? 因此在開(kāi)發(fā)抽取和加載作業(yè)時(shí),需要注意:

????????1)統(tǒng)一返回碼并提供錯(cuò)誤信息;

????????2)抽取和加載作業(yè)必須支持重跑,也就是在作業(yè)任何階段發(fā)生異常時(shí)可直接重做,需要設(shè)計(jì)時(shí)考慮異常中斷下,如何恢復(fù)初始數(shù)據(jù);

????????3)調(diào)度平臺(tái)需要根據(jù)抽取加載作業(yè)返回碼判斷作業(yè)是否成功,是否可以繼續(xù),對(duì)于異常情況需要及時(shí)與行內(nèi)監(jiān)控預(yù)警系統(tǒng)對(duì)接,按預(yù)警級(jí)別發(fā)送作業(yè)錯(cuò)誤告警信息;

????????4)調(diào)度平臺(tái)需要獲取到作業(yè)的日志,對(duì)于一些ETL工具,這部分需要進(jìn)行集成,以便減少后臺(tái)日志查看的工作量,直接在調(diào)度平臺(tái)進(jìn)行問(wèn)題定位。

(6)開(kāi)發(fā)分工

????????ETL作為全行或全公司的批量數(shù)據(jù)交互基礎(chǔ)架構(gòu),需要在全行或全公司進(jìn)行規(guī)范和開(kāi)發(fā)流程培訓(xùn)。ETL服務(wù)器及工具、抽取加載的標(biāo)準(zhǔn)程序由統(tǒng)一團(tuán)隊(duì)來(lái)維護(hù),需要進(jìn)行權(quán)限分配并提供培訓(xùn)及技術(shù)支持。那對(duì)于抽取加載作業(yè)具體由源系統(tǒng)還是目標(biāo)系統(tǒng)來(lái)開(kāi)發(fā)不同的公司有不同的做法,

????????1)由源系統(tǒng)開(kāi)發(fā),如果源系統(tǒng)是將數(shù)據(jù)加工結(jié)果給到目標(biāo)系統(tǒng),由于比較熟悉數(shù)據(jù),一般由源系統(tǒng)加工完后直接開(kāi)發(fā)抽取加載作業(yè)將數(shù)據(jù)提供給目標(biāo)系統(tǒng);

????????2)由目標(biāo)系統(tǒng)開(kāi)發(fā),目標(biāo)系統(tǒng)比較熟悉數(shù)據(jù)用途及優(yōu)先級(jí),如果全表抽取的話數(shù)據(jù)加工主要在目標(biāo)系統(tǒng),由目標(biāo)系統(tǒng)來(lái)開(kāi)發(fā)抽取加載作業(yè),源系統(tǒng)只需要做好數(shù)據(jù)權(quán)限分配即可。

????????3)由數(shù)據(jù)倉(cāng)庫(kù)團(tuán)隊(duì)統(tǒng)一開(kāi)發(fā),一般公司較小時(shí)可以由統(tǒng)一團(tuán)隊(duì)來(lái)開(kāi)發(fā),但隨著開(kāi)發(fā)項(xiàng)目增多,會(huì)出現(xiàn)瓶頸,影響效率,需要由各數(shù)據(jù)使用方來(lái)開(kāi)發(fā)抽取加載作業(yè)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,497評(píng)論 3 416
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,305評(píng)論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,962評(píng)論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,727評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,193評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,411評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,945評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,777評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,978評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,216評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,642評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,878評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,657評(píng)論 3 391
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,960評(píng)論 2 373

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