Hadoop的元數(shù)據(jù)治理--Apache Atlas

Hadoop的元數(shù)據(jù)治理--Apache Atlas

Apache Atlas是Hadoop社區(qū)為解決Hadoop生態(tài)系統(tǒng)的元數(shù)據(jù)治理問題而產(chǎn)生的開源項目蝗碎,它為Hadoop集群提供了包括數(shù)據(jù)分類督笆、集中策略引擎泊业、數(shù)據(jù)血緣、安全和生命周期管理在內的元數(shù)據(jù)治理核心能力厚棵。

Apache Atlas目前是Apache下的孵化項目超凳,最新版本為Apache Atlas 0.8:


本文將分以下部分為大家介紹Atlas的架構和核心功能:

- 概述

- 核心特性

- 架構與組件

- 部署與配置

- 類型系統(tǒng)

- 元數(shù)據(jù)搜索與血緣

- 基于標簽的安全策略

- 集成Apache Falcon


概述

面對海量且持續(xù)增加的各式各樣的數(shù)據(jù)對象侨糟,你是否有信心知道哪些數(shù)據(jù)從哪里來以及它如何隨時間而變化?采用Hadoop必須考慮數(shù)據(jù)管理的實際情況回季,元數(shù)據(jù)與數(shù)據(jù)治理成為企業(yè)級數(shù)據(jù)湖的重要部分家制。

為尋求數(shù)據(jù)治理的開源解決方案正林,Hortonworks 公司聯(lián)合其他廠商與用戶于2015年發(fā)起數(shù)據(jù)治理倡議,包括數(shù)據(jù)分類颤殴、集中策略引擎觅廓、數(shù)據(jù)血緣、安全和生命周期管理等方面涵但。Apache Atlas 項目就是這個倡議的結果杈绸,社區(qū)伙伴持續(xù)的為該項目提供新的功能和特性。該項目用于管理共享元數(shù)據(jù)矮瘟、數(shù)據(jù)分級瞳脓、審計、安全性以及數(shù)據(jù)保護等方面澈侠,努力與Apache Ranger整合劫侧,用于數(shù)據(jù)權限控制策略。

Apache Atlas是hadoop的數(shù)據(jù)治理和元數(shù)據(jù)框架埋涧,它提供了一個可伸縮和可擴展的核心基礎數(shù)據(jù)治理服務集板辽,使得 企業(yè)可以有效的和高效的滿足Hadoop中的合規(guī)性要求奇瘦,并允許與整個企業(yè)的數(shù)據(jù)生態(tài)系統(tǒng)集成:


核心特性

Apache Atlas為Hadoop的元數(shù)據(jù)治理提供了以下特性:

- 數(shù)據(jù)分類

? - 為元數(shù)據(jù)導入或定義業(yè)務導向的分類注釋

? - 定義棘催,注釋,以及自動捕獲數(shù)據(jù)集和底層元素之間的關系

? - 導出元數(shù)據(jù)到第三方系統(tǒng)

- 集中審計

? - 捕獲與所有應用耳标,過程以及與數(shù)據(jù)交互的安全訪問信息

? - 捕獲執(zhí)行醇坝,步驟,活動等操作的信息

- 搜索與血緣

? - 預定義的導航路徑用來探索數(shù)據(jù)分類以及審計信息

? - 基于文本的搜索特性來快速和準確的定位相關聯(lián)的數(shù)據(jù)和審計事件

? - 對數(shù)據(jù)集血緣關系的可視化瀏覽使用戶可以下鉆到操作次坡,安全以及數(shù)據(jù)起源相關的信息

- 安全與策略引擎

? - 基于數(shù)據(jù)分類模式呼猪,屬性以及角色的運行時合理合規(guī)策略

? - 基于分類-預測的高級策略定義以防止數(shù)據(jù)推導

? - 基于cell的屬性和值的行/列級別的masking

Apache Atlas的架構如下圖所示:

Atlas的組件可以分為以下幾個部分:

- Core

此類別包含實現(xiàn) Atlas 功能核心的組件,包括:

? - Type System: Atlas 允許用戶為他們想要管理的元數(shù)據(jù)對象定義一個模型砸琅。該模型由稱為 "類型" 的定義組成宋距。"類型" 的 實例被稱為 "實體" 表示被管理的實際元數(shù)據(jù)對象。類型系統(tǒng)是一個組件症脂,允許用戶定義和管理類型和實體谚赎。由 Atlas 管理的所有元數(shù)據(jù)對象(例如Hive表)都使用類型進行建模,并表示為實體诱篷。要在 Atlas 中存儲新類型的元數(shù)據(jù)壶唤,需要了解類型系統(tǒng)組件的概念。

? - Ingest/Export:Ingest 組件允許將元數(shù)據(jù)添加到 Atlas棕所。類似地闸盔,Export 組件暴露由 Atlas 檢測到的元數(shù)據(jù)更改,以作為事件引發(fā)琳省,消費者可以使用這些更改事件來實時響應元數(shù)據(jù)更改迎吵。

? - Graph Engine:在內部躲撰,Atlas 通過使用圖形模型管理元數(shù)據(jù)對象。以實現(xiàn)元數(shù)據(jù)對象之間的巨大靈活性和豐富的關系击费。圖形引擎是負責在類型系統(tǒng)的類型和實體之間進行轉換的組件茴肥,以及基礎圖形模型。除了管理圖形對象之外荡灾,圖形引擎還為元數(shù)據(jù)對象創(chuàng)建適當?shù)乃饕亢员阌行У厮阉魉鼈儭?/p>

? - Titan:目前,Atlas 使用 Titan 圖數(shù)據(jù)庫來存儲元數(shù)據(jù)對象批幌。 Titan 使用兩個存儲:默認情況下元數(shù)據(jù)存儲配置為 HBase 础锐,索引存儲配置為 Solr。也可以通過構建相應的配置文件使用BerkeleyDB存儲元數(shù)據(jù)存儲 和使用ElasticSearch存儲 Index荧缘。元數(shù)據(jù)存儲用于存儲元數(shù)據(jù)對象本身皆警,索引存儲用于存儲元數(shù)據(jù)屬性的索引,其允許高效搜索截粗。

- Integration

用戶可以使用兩種方法管理 Atlas 中的元數(shù)據(jù):

? - API: Atlas 的所有功能都可以通過 REST API 提供給最終用戶信姓,允許創(chuàng)建摹蘑,更新和刪除類型和實體蜂奸。它也是查詢和發(fā)現(xiàn)通過 Atlas 管理的類型和實體的主要方法。

? - Messaging:除了 API 之外吞鸭,用戶還可以選擇使用基于 Kafka 的消息接口與 Atlas 集成珊蟀。這對于將元數(shù)據(jù)對象傳輸?shù)?Atlas 以及從 Atlas 使用可以構建應用程序的元數(shù)據(jù)更改事件都非常有用菊值。如果希望使用與 Atlas 更松散耦合的集成,這可以允許更好的可擴展性育灸,可靠性等腻窒,消息傳遞接口是特別有用的。Atlas 使用 Apache Kafka 作為通知服務器用于鉤子和元數(shù)據(jù)通知事件的下游消費者之間的通信磅崭。事件由鉤子(hook)和 Atlas 寫到不同的 Kafka 主題:

? ? - ATLAS_HOOK: 來自 各個組件的Hook 的元數(shù)據(jù)通知事件通過寫入到名為 ATLAS_HOOK 的 Kafka topic 發(fā)送到 Atlas

? ? - ATLAS_ENTITIES:從 Atlas 到其他集成組件(如Ranger)的事件寫入到名為 ATLAS_ENTITIES 的 Kafka topic

- Metadata source

Atlas 支持與許多元數(shù)據(jù)源的集成儿子,將來還會添加更多集成。目前砸喻,Atlas 支持從以下數(shù)據(jù)源獲取和管理元數(shù)據(jù):

? - Hive:通過hive bridge柔逼, atlas可以接入Hive的元數(shù)據(jù),包括hive_db/hive_table/hive_column/hive_process

? - Sqoop:通過sqoop bridge恩够,atlas可以接入關系型數(shù)據(jù)庫的元數(shù)據(jù)卒落,包括sqoop_operation_type/ sqoop_dbstore_usage/sqoop_process/sqoop_dbdatastore

? - Falcon:通過falcon bridge,atlas可以接入Falcon的元數(shù)據(jù)蜂桶,包括falcon_cluster/falcon_feed/falcon_feed_creation/falcon_feed_replication/ falcon_process

? - Storm:通過storm bridge儡毕,atlas可以接入流式處理的元數(shù)據(jù),包括storm_topology/storm_spout/storm_bolt

? Atlas集成大數(shù)據(jù)組件的元數(shù)據(jù)源需要實現(xiàn)以下兩點:

? - 首先,需要基于atlas的類型系統(tǒng)定義能夠表達大數(shù)據(jù)組件元數(shù)據(jù)對象的元數(shù)據(jù)模型(例如Hive的元數(shù)據(jù)模型實現(xiàn)在org.apache.atlas.hive.model.HiveDataModelGenerator)腰湾;

? - 然后雷恃,需要提供hook組件去從大數(shù)據(jù)組件的元數(shù)據(jù)源中提取元數(shù)據(jù)對象,實時偵聽元數(shù)據(jù)的變更并反饋給atlas费坊;

- Applications

? - Atlas Admin UI: 該組件是一個基于 Web 的應用程序倒槐,允許數(shù)據(jù)管理員和科學家發(fā)現(xiàn)和注釋元數(shù)據(jù)。Admin UI提供了搜索界面和 類SQL的查詢語言附井,可以用來查詢由 Atlas 管理的元數(shù)據(jù)類型和對象讨越。Admin UI 使用 Atlas 的 REST API 來構建其功能。

? - Tag Based Policies: Apache Ranger 是針對 Hadoop 生態(tài)系統(tǒng)的高級安全管理解決方案永毅,與各種 Hadoop 組件具有廣泛的集成把跨。通過與 Atlas 集成,Ranger 允許安全管理員定義元數(shù)據(jù)驅動的安全策略沼死,以實現(xiàn)有效的治理着逐。 Ranger 是由 Atlas 通知的元數(shù)據(jù)更改事件的消費者。

? - Business Taxonomy:從元數(shù)據(jù)源獲取到 Atlas 的元數(shù)據(jù)對象主要是一種技術形式的元數(shù)據(jù)意蛀。為了增強可發(fā)現(xiàn)性和治理能力耸别,Atlas 提供了一個業(yè)務分類界面,允許用戶首先定義一組代表其業(yè)務域的業(yè)務術語县钥,并將其與 Atlas 管理的元數(shù)據(jù)實體相關聯(lián)秀姐。業(yè)務分類法是一種 Web 應用程序,目前是 Atlas Admin UI 的一部分魁蒜,并且使用 REST API 與 Atlas 集成囊扳。

? ? - 在HDP2.5中,Business Taxonomy是提供了Technical Preview版本兜看,需要在Atlas > Configs > Advanced > Custom application-properties中添加atlas.feature.taxonomy.enable=true并重啟atlas服務來開啟


部署與配置

在HDP集群中,可以通過Ambari快速部署Apache atlas服務:

Ambari會部署啟動Atlas metadata server和Atlas Metadata Client狭瞎,并將自動配置hive/sqoop/falcon/storm等服務的atlas hook(以Hive為例):

Apache Atlas需要依賴以下HDP組件:

- HBase:Titan默認使用HBase存儲元數(shù)據(jù)

- Ambari infra/Solr:Titan默認使用Solr存儲元數(shù)據(jù)索引

- Kafka:Apache Atlas使用Kafka作為消息隊列细移,實現(xiàn)hook和元數(shù)據(jù)通知事件的消費者之間的通信

部署完Apache Atlas之后,可以通過腳本導入Atlas自帶的示例數(shù)據(jù):

Apache Atlas支持配置多個Atlas Web服務實例來實現(xiàn)自動故障轉移(failover)熊锭,多個服務實例之間采取主動/被動模式弧轧。其中一個實例將被自動選擇為 “活動” 實例來為用戶請求提供服務。其他人將自動被視為 “被動”碗殷。如果 “活動” 實例由于故意停止或由于意外故障而變得不可用精绎,則其他實例之一將自動選為 “活動” 實例,并開始為用戶請求提供服務锌妻。

“活動” 實例是能夠正確響應用戶請求的唯一實例代乃,其可以創(chuàng)建,刪除,修改或響應元數(shù)據(jù)對象上的查詢搁吓。 “被動” 實例將接受用戶請求原茅,但會使用 HTTP 重定向將其重定向到當前已知的 “活動” 實例。

多個Apache Atlas Web服務實例之間使用Zookeeper進行協(xié)調堕仔。

當配置為高可用性模式時擂橘,具有以下優(yōu)勢:

- 在維護間隔期間不間斷服務:如果需要停用 Atlas Web 服務的活動實例進行維護,則另一個實例將自動變?yōu)榛顒訝顟B(tài)并可以為請求提供服務摩骨。

- 在意外故障事件中的不間斷服務:如果由于軟件或硬件錯誤通贞,Atlas Web 服務的活動實例失敗,另一個實例將自動變?yōu)榛顒訝顟B(tài)并可以為請求提供服務恼五。

Apache Atlas的高可用性目前只支持手動配置滑频,Ambari尚不支持添加新的Atlas Metadata Server。


類型系統(tǒng)

Atlas 允許用戶為他們想要管理的元數(shù)據(jù)對象定義一個模型唤冈。該模型由稱為 “類型” (type)的定義組成峡迷。被稱為 “實體” (entities)的 “類型” 實例表示被管理的實際元數(shù)據(jù)對象。由 Atlas 管理的所有元數(shù)據(jù)對象(例如Hive表)都使用類型進行建模你虹,并表示為實體绘搞。

- Type:Atlas中的 “類型” 定義了如何存儲和訪問特定類型的元數(shù)據(jù)對象。類型表示了所定義元數(shù)據(jù)對象的一個或多個屬性集合傅物。具有開發(fā)背景的用戶可以將 “類型” 理解成面向對象的編程語言的 “類” 定義的或關系數(shù)據(jù)庫的 “表模式”夯辖。類型具有元類型,元類型表示 Atlas 中此模型的類型:

? - 基本元類型: Int董饰,String蒿褂,Boolean等

? - 枚舉元類型

? - 集合元類型:例如Array,Map

? - Class卒暂,Struct啄栓,Trait

- Entities:Atlas中的 “實體” 是類 “類型” 的特定值或實例,因此表示真實世界中的特定元數(shù)據(jù)對象也祠。 回顧我們的面向對象編程語言的類比昙楚,“實例” 是某個 “類” 的 “對象”。

- Attributes:Atlas 中的屬性還有一些屬性诈嘿,其定義了與類型系統(tǒng)相關的更多概念堪旧,包括:

? - isComposite - 是否復合

? - isIndexable - 是否索引

? - isUnique - 是否唯一

? - multiplicity - 指示此屬性是(必需的/可選的/還是可以是多值)的

Atlas 提供了一些預定義的系統(tǒng)類型:

- Referenceable:此類型表示可使用名為 qualifiedName 的唯一屬性搜索的所有實體

- Asset:此類型包含名稱,說明和所有者等屬性

- Infrastructure:此類型擴展了Referenceable和Asset 奖亚,通炒久危可用于基礎設施元數(shù)據(jù)對象(如群集,主機等)的常用超類型

- DataSet:此類型擴展了Referenceable和Asset 昔字。在概念上爆袍,它可以用于表示存儲數(shù)據(jù)的類型。在 Atlas 中,hive表螃宙,Sqoop RDBMS表等都是從 DataSet 擴展的類型蛮瞄。擴展 DataSet 的類型可以期望具有模式,它們將具有定義該數(shù)據(jù)集的屬性的屬性谆扎。例如挂捅, hive_table 中的 columns 屬性。另外堂湖,擴展 DataSet 的實體類型的實體參與數(shù)據(jù)轉換闲先,這種轉換可以由 Atlas 通過 lineage(或 provenance)生成圖形。

- Process:此類型擴展了Referenceable和Asset 无蜂。在概念上伺糠,它可以用于表示任何數(shù)據(jù)變換操作。例如斥季,將原始數(shù)據(jù)的 hive 表轉換為存儲某個聚合的另一個 hive 表的 ETL 過程可以是擴展過程類型的特定類型训桶。流程類型有兩個特定的屬性,輸入和輸出酣倾。


元數(shù)據(jù)搜索與血緣

Atlas 支持使用以下 2 種方式搜索元數(shù)據(jù):

- Search using DSL

- Full-text search

? - Atlas也支持lucene風格的全文檢索

Apache atlas的其中一個核心特性就是可以追溯數(shù)據(jù)湖(Data Lake)中數(shù)據(jù)的血緣關系并以可視化的方式呈現(xiàn)舵揭,使用戶能夠快速了解數(shù)據(jù)的生命周期,并能夠知曉自己的數(shù)據(jù)時從那里來以及和數(shù)據(jù)湖中的那些數(shù)據(jù)具有關聯(lián)關系躁锡。

參考下面的例子午绳,創(chuàng)建兩張hive表,然后通過表的join創(chuàng)建一張新表:

- 創(chuàng)建一張hive表存儲以數(shù)組形式存儲tweet文本中的單詞

? CREATE TABLE words_array AS SELECT tweet_id AS id, split(text,' ') AS words FROM tweets;

- 創(chuàng)建一張hive表將文本中的數(shù)組切分成單獨的單詞

? CREATE TABLE tweet_word AS SELECT id AS id, word FROM words_array LATERAL VIEW explode(words) w as word;

- 通過對上述表的Join操作創(chuàng)建新的表

? CREATE TABLE word_join AS SELECT tweet_word.id, tweet_word.word, sentiment_dictionary.rating FROM tweet_word LEFT OUTER JOIN sentiment_dictionary ON (tweet_word.word=sentiment_dictionary.word);

在Atlas中映之,上述操作生成的word_join表的血緣關系圖如下所示:


基于標簽的安全策略

Atlas通過與Ranger集成拦焚,為Hadoop提供了基于標簽(Tag)的動態(tài)訪問權限控制,通過控制與資源關聯(lián)的標簽而非資源本身可以為權限控制模型提供諸多便利:

- 將資源分類從權限控制中分離出來杠输,不同Hadoop組件的資源(比如HDFS目錄赎败,Hive表,HBase表)中的同一類數(shù)據(jù)(比如社保賬號/信用卡帳號)可以被打上同一個標簽抬伺,以統(tǒng)一的權限來控制訪問

- 如果Hadoop資源被打上標簽螟够,那么與標簽相關的權限將被自動賦予該資源

- 單獨的訪問控制策略可以應用于不同的Hadoop組件的資源,而不再需要為每一個組件的資源都創(chuàng)建單獨的策略

Ranger 0.6版本引入了一個新的服務(ranger-tagsync)用來同步Atlas的tag峡钓,ranger-tagsync通過監(jiān)聽Kafka topic(ATLAS_ENTITIES)的消息變更來接受來自Atlas的tag(以及Taxonomy Terms)詳細信息;當Atlas的tag(以及Taxonomy Terms)在atlas里被增加若河,修改或刪除時能岩,ranger-tagsync會接受來自Kafka的通知并更新Ranger的數(shù)據(jù)庫(ranger.x_tag*)。

通用Ranger Admin UI創(chuàng)建基于標簽的策略需要如下步驟:

- 創(chuàng)建tag服務實例(tag服務實例可以創(chuàng)建多個以歸類不同集群的基于標簽策略)

? - Login to Ranger Admin

? - Select menu: Access Manager è Tag Based Policies

? - Click the + icon next to TAG

? - In ‘Service Name’ field, enter tagdev and click ‘Add’

- Ranger的各個組件的服務實例需要被更新以實施指定的tag服務實例所提供的基于標簽的訪問控制策略萧福,以hive為例:

? - Login to Ranger Admin

? - Select menu: Access Manager è Resource Based Policies

? - Click on the edit icon next to your hive service instance, like hdp_hive,

? - In ‘Select Tag Service’ field, select tag-test and click ‘Save’

- 在”Tag Based Policies”頁面創(chuàng)建基于策略的訪問控制策略拉鹃,例如:


集成Apache Falcon

? - Atlas可以提供對Falcon元數(shù)據(jù)(cluster/feed/process)的存儲和搜索

? ? - Atlas的Falcon Hook監(jiān)聽Falcon的元數(shù)據(jù)變更(比如falcon feed/process的創(chuàng)建,更改,刪除)并將這些元數(shù)據(jù)變更詳細信息寫入Kafka的topic中膏燕,Atlas metadata server從Kafka接收到Falcon的元數(shù)然后作為entity更新到Titan數(shù)據(jù)庫中

? ? - 用戶通過Atlas Admin UI可以通過DSL或全文方式去搜索Falcon的元數(shù)據(jù)

- Atlas可以對Falcon元數(shù)據(jù)進行分類(tag/taxonomy)

- Atlas可以展示Falcon元數(shù)據(jù)的血緣關系


總結

Apache Atlas為Hadoop集群提供了包括數(shù)據(jù)分類钥屈、集中策略引擎、數(shù)據(jù)血緣坝辫、安全和生命周期管理在內的元數(shù)據(jù)治理核心能力篷就,其與Apache Falcon,Apache Ranger相互整合可以形成完整的數(shù)據(jù)治理解決方案近忙。但是Atlas目前還是Apache孵化項目竭业,尚未成熟,有待發(fā)展及舍。

Atlas目前還存在以下一些需要改進之處:

- 缺乏對元數(shù)據(jù)的全局視圖未辆,對元數(shù)據(jù)的血緣追溯只能夠展示具體某張表或某個SQL的生命周期(其前提是用戶必須對Hadoop的元數(shù)據(jù)結構十分清楚,才能夠通過Atlas的查詢語句去定位自己需要了解的表)

- 0.8以前的版本锯玛,對元數(shù)據(jù)只能進行只讀操作咐柜,例如只能展示Hive的表但是不能創(chuàng)建新表

- 與Hadoop各組件的集成尚待完善,例如Atlas對Hive的元數(shù)據(jù)變更操作的捕獲只支持hive CLI攘残,不支持beeline/JDBC


Reference

- http://atlas.apache.org/

- https://zh.hortonworks.com/apache/atlas/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末拙友,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子肯腕,更是在濱河造成了極大的恐慌献宫,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件实撒,死亡現(xiàn)場離奇詭異姊途,居然都是意外死亡,警方通過查閱死者的電腦和手機知态,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門捷兰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人负敏,你說我怎么就攤上這事贡茅。” “怎么了其做?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵顶考,是天一觀的道長。 經(jīng)常有香客問我妖泄,道長驹沿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任蹈胡,我火速辦了婚禮渊季,結果婚禮上朋蔫,老公的妹妹穿的比我還像新娘。我一直安慰自己却汉,他們只是感情好驯妄,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著合砂,像睡著了一般青扔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上既穆,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天赎懦,我揣著相機與錄音,去河邊找鬼幻工。 笑死励两,一個胖子當著我的面吹牛,可吹牛的內容都是我干的囊颅。 我是一名探鬼主播当悔,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼踢代!你這毒婦竟也來了盲憎?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤胳挎,失蹤者是張志新(化名)和其女友劉穎饼疙,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慕爬,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡窑眯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了医窿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磅甩。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖姥卢,靈堂內的尸體忽然破棺而出卷要,到底是詐尸還是另有隱情,我是刑警寧澤独榴,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布僧叉,位于F島的核電站,受9級特大地震影響棺榔,放射性物質發(fā)生泄漏彪标。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一掷豺、第九天 我趴在偏房一處隱蔽的房頂上張望捞烟。 院中可真熱鬧,春花似錦当船、人聲如沸题画。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苍息。三九已至,卻和暖如春壹置,著一層夾襖步出監(jiān)牢的瞬間竞思,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工钞护, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盖喷,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓难咕,卻偏偏與公主長得像课梳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子余佃,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內容