數(shù)據(jù)庫(kù)架構(gòu)之【TiDB】NewSQL 分布式融合數(shù)據(jù)庫(kù)應(yīng)用研究

TiDB 是一款開源(遵循 Apache License 2.0 協(xié)議)的定位于在線事務(wù)處理/在線分析處理( HTAP: Hybrid Transactional/Analytical Processing)的融合型數(shù)據(jù)庫(kù)產(chǎn)品,實(shí)現(xiàn)了一鍵水平伸縮赚楚,強(qiáng)一致性的多副本數(shù)據(jù)安全爸吮,分布式事務(wù)器仗,實(shí)時(shí) OLAP 等重要特性趟紊。同時(shí)兼容 MySQL 協(xié)議和生態(tài)繁堡,遷移便捷迷帜,運(yùn)維成本極低迹鹅。TiDB 的目標(biāo)是為用戶提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解決方案吃警。TiDB 適合高可用糕篇、強(qiáng)一致要求較高、數(shù)據(jù)規(guī)模較大等各種應(yīng)用場(chǎng)景酌心。

TiDB 官方網(wǎng)站提供了非常豐富且完整的案例和學(xué)習(xí)資源拌消,因此本文基于 TiDB v4.0 (最新穩(wěn)定版)摘取了官方在線文檔中的部分內(nèi)容,旨在幫助讀者快速了解 TiDB 的定位安券、架構(gòu)墩崩、生態(tài)、特性和應(yīng)用場(chǎng)景侯勉。


1.應(yīng)用案例

TiDB 官方提供了大量針對(duì)互聯(lián)網(wǎng)鹦筹、游戲、金融址貌、大型企業(yè)等行業(yè)的生產(chǎn)環(huán)境應(yīng)用案例:

TiDB 應(yīng)用案例

2.使用指南

TiDB 官方提供了極其優(yōu)秀的中文在線文檔铐拐,文檔中涵蓋了 TiDB 的產(chǎn)品概述、安裝部署练对、數(shù)據(jù)遷移遍蟋、運(yùn)維操作、監(jiān)控告警螟凭、故障診斷匿值、性能調(diào)優(yōu)、生態(tài)工具赂摆、技術(shù)指南、常見問題等全面的應(yīng)用案例和指令參數(shù)表钟些,文檔與產(chǎn)品版本一致性完整烟号,且提供 PDF 格式的本地文檔。

TiDB 官方在線文檔【https://pingcap.com/docs-cn/stable/】政恍。如下圖:

官方用戶文檔

3.核心架構(gòu)

TiDB 核心架構(gòu)圖

1)TiDB Server
TiDB Server 負(fù)責(zé)接收 SQL 請(qǐng)求汪拥,處理 SQL 相關(guān)的邏輯,并通過 PD 找到存儲(chǔ)計(jì)算所需數(shù)據(jù)的 TiKV 地址篙耗,與 TiKV 交互獲取數(shù)據(jù)迫筑,最終返回結(jié)果。TiDB Server 是無(wú)狀態(tài)的宗弯,其本身并不存儲(chǔ)數(shù)據(jù)脯燃,只負(fù)責(zé)計(jì)算,可以無(wú)限水平擴(kuò)展蒙保,可以通過負(fù)載均衡組件(LVS辕棚、HAProxy 或 F5)對(duì)外提供統(tǒng)一的接入地址。

2)PD Server
Placement Driver(簡(jiǎn)稱 PD)是整個(gè)集群的管理模塊,其主要工作有三個(gè):一是存儲(chǔ)集群的元信息(某個(gè) Key 存儲(chǔ)在那個(gè) TiKV 節(jié)點(diǎn))逝嚎;二是對(duì) TiKV 集群進(jìn)行調(diào)度和負(fù)載均衡(如數(shù)據(jù)的遷移扁瓢、Raft Group Leader 的遷移等);三是分配全局唯一且遞增的事務(wù) ID补君。PD 是一個(gè)集群引几,需要部署奇數(shù)個(gè)節(jié)點(diǎn),一般線上推薦至少部署 3 個(gè)節(jié)點(diǎn)挽铁。PD 在選舉的過程中無(wú)法對(duì)外提供服務(wù)伟桅,這個(gè)時(shí)間大約是 3 秒。

3)TiKV Server
TiKV Server 負(fù)責(zé)存儲(chǔ)數(shù)據(jù)屿储,從外部看 TiKV 是一個(gè)分布式的提供事務(wù)的 Key-Value 存儲(chǔ)引擎贿讹。存儲(chǔ)數(shù)據(jù)的基本單位是 【Region(分片)】,每個(gè) Region 負(fù)責(zé)存儲(chǔ)一個(gè) Key Range(從 StartKey 到 EndKey 的左閉右開區(qū)間)的數(shù)據(jù)够掠,每個(gè) TiKV 節(jié)點(diǎn)會(huì)負(fù)責(zé)多個(gè) Region 民褂。TiKV 使用 Raft 協(xié)議做復(fù)制,保持?jǐn)?shù)據(jù)的一致性和容災(zāi)疯潭。副本以 Region 為單位進(jìn)行管理赊堪,不同節(jié)點(diǎn)上的多個(gè) Region 構(gòu)成一個(gè) Raft Group,互為副本竖哩。數(shù)據(jù)在多個(gè) TiKV 之間的負(fù)載均衡以 Region 為單位進(jìn)行調(diào)度由 PD 調(diào)度哭廉。

4)TiFlash
TiFlash 是一類特殊的存儲(chǔ)節(jié)點(diǎn)。和普通 TiKV 節(jié)點(diǎn)不一樣的是相叁,在 TiFlash 內(nèi)部遵绰,數(shù)據(jù)是以列式的形式進(jìn)行存儲(chǔ),主要的功能是為分析型的場(chǎng)景加速增淹。

關(guān)于 TiDB 架構(gòu)的詳細(xì)內(nèi)容請(qǐng)參見官方在線文檔【https://pingcap.com/docs-cn/stable/tidb-architecture/


4.生態(tài)工具

1椿访、TiDB Operator

TiDB Operator 是 Kubernetes 上的 TiDB 集群自動(dòng)運(yùn)維系統(tǒng),提供包括部署虑润、升級(jí)成玫、擴(kuò)縮容、備份恢復(fù)拳喻、配置變更的 TiDB 全生命周期管理哭当。借助 TiDB Operator,TiDB 可以無(wú)縫運(yùn)行在公有云或私有部署的 Kubernetes 集群上冗澈。

關(guān)于 TiDB Operator 的詳細(xì)內(nèi)容請(qǐng)參見官方在線文檔【https://docs.pingcap.com/zh/tidb-in-kubernetes/stable/】钦勘。如下圖:

TiDB Operator 官方在線文檔

2、TiDB Data Migration

TiDB Data Migration (DM) 是一體化的數(shù)據(jù)同步任務(wù)管理平臺(tái)亚亲,支持從 MySQL 或 MariaDB 到 TiDB 的全量數(shù)據(jù)遷移和增量數(shù)據(jù)同步个盆。使用 DM 工具有利于簡(jiǎn)化錯(cuò)誤處理流程脖岛,降低運(yùn)維成本。DM 以 SQL 語(yǔ)句的形式將數(shù)據(jù)同步到 TiDB 中颊亮,因此各個(gè)版本的 DM 都分別兼容所有版本的 TiDB柴梆。在生產(chǎn)環(huán)境中,推薦使用 DM 的最新已發(fā)布版本终惑。

關(guān)于 TiDB Data Migration 的詳細(xì)內(nèi)容請(qǐng)參見官方在線文檔【https://docs.pingcap.com/zh/tidb-data-migration/stable】绍在。如下圖:

TiDB Data Migration 官方在線文檔

3、Database Tools

TiDB 數(shù)據(jù)庫(kù)工具是用于處理 TiDB 導(dǎo)入導(dǎo)出數(shù)據(jù)的命令行實(shí)用程序的集合雹有。

1)全量數(shù)據(jù)導(dǎo)出工具:Dumpling 是一個(gè)用于從 MySQL/TiDB 進(jìn)行全量邏輯導(dǎo)出的工具偿渡,該工具可以把存儲(chǔ)在 TiDB/MySQL 中的數(shù)據(jù)導(dǎo)出為 SQL 或者 CSV 格式,可以用于完成邏輯上的全量備份或者導(dǎo)出霸奕。

關(guān)于 Dumpling 的詳細(xì)內(nèi)容請(qǐng)參見官方在線文檔【https://docs.pingcap.com/zh/tidb/dev/dumpling-overview】溜宽。

2)全量數(shù)據(jù)導(dǎo)入工具:TiDB Lightning 是一個(gè)將全量數(shù)據(jù)高速導(dǎo)入到 TiDB 集群的工具,該工具有以下兩個(gè)主要的應(yīng)用場(chǎng)景:一是大量新數(shù)據(jù)的快速導(dǎo)入质帅;二是全量數(shù)據(jù)的備份恢復(fù)适揉。目前,Lightning 支持 Mydumper 或 CSV 輸出格式的數(shù)據(jù)源煤惩。

關(guān)于 TiDB Lightning 的詳細(xì)內(nèi)容請(qǐng)參見官方在線文檔【https://docs.pingcap.com/zh/tidb/dev/tidb-lightning-overview】嫉嘀。

3)數(shù)據(jù)和備份工具:Backup & Restore(簡(jiǎn)稱 BR)是 TiDB 分布式備份恢復(fù)的命令行工具,用于對(duì) TiDB 集群進(jìn)行數(shù)據(jù)備份和恢復(fù)魄揉。

關(guān)于 BR 的詳細(xì)內(nèi)容請(qǐng)參見官方在線文檔【https://docs.pingcap.com/zh/tidb/dev/backup-and-restore-tool】剪侮。

4)增量日志同步工具:TiDB Binlog 是一個(gè)用于收集 TiDB 的 binlog,并提供準(zhǔn)實(shí)時(shí)備份和同步功能的商業(yè)工具洛退。該工具有兩個(gè)主要的應(yīng)用場(chǎng)景:一是實(shí)時(shí)同步 TiDB 集群數(shù)據(jù)到其他數(shù)據(jù)庫(kù)瓣俯;二是實(shí)時(shí)備份 TiDB 集群數(shù)據(jù),同時(shí)可以用于 TiDB 集群故障時(shí)恢復(fù)兵怯。

關(guān)于 TiDB Binlog 的詳細(xì)內(nèi)容請(qǐng)參見官方在線文檔【https://docs.pingcap.com/zh/tidb/dev/tidb-binlog-overview】降铸。

4、TiUP

從 TiDB 4.0 版本開始摇零,TiUP 作為新的工具,承擔(dān)著包管理器的角色桶蝎,管理著 TiDB 生態(tài)下眾多的組件驻仅,如 TiDB、PD登渣、TiKV 等噪服。用戶想要運(yùn)行 TiDB 生態(tài)中任何組件時(shí),只需要執(zhí)行 TiUP 一行命令即可胜茧,相比以前粘优,極大地降低了管理難度仇味。

關(guān)于 TiUP 的詳細(xì)內(nèi)容請(qǐng)參見官方在線文檔【https://docs.pingcap.com/zh/tidb/dev/tiup-overview】。


5.核心特性

1雹顺、水平彈性擴(kuò)展

分布式的 TiDB 可隨著數(shù)據(jù)增長(zhǎng)而無(wú)縫地水平擴(kuò)展丹墨,只需要通過增加更多的機(jī)器來滿足業(yè)務(wù)增長(zhǎng)需要,應(yīng)用層可以不用關(guān)心存儲(chǔ)的容量和吞吐嬉愧。 TiDB 根據(jù)存儲(chǔ)贩挣、網(wǎng)絡(luò)、距離等因素没酣,動(dòng)態(tài)進(jìn)行負(fù)載均衡調(diào)整王财,以保證更優(yōu)的讀寫性能。

2裕便、故障自動(dòng)恢復(fù)

TiDB 使用多副本進(jìn)行數(shù)據(jù)存儲(chǔ)绒净,并依賴業(yè)界最先進(jìn)的 Raft 多數(shù)派選舉算法確保數(shù)據(jù) 100% 強(qiáng)一致性和高可用。 副本可跨地域部署在不同的數(shù)據(jù)中心偿衰,主副本故障時(shí)自動(dòng)切換挂疆,無(wú)需人工介入,自動(dòng)保障業(yè)務(wù)的連續(xù)性哎垦,實(shí)現(xiàn)真正意義上的異地多活囱嫩。

3、實(shí)時(shí) HTAP(實(shí)時(shí)在線事務(wù)處理與在線分析處理)

提供行存儲(chǔ)引擎 TiKV漏设、列存儲(chǔ)引擎 TiFlash 兩款存儲(chǔ)引擎墨闲,TiFlash 通過 Raft 協(xié)議實(shí)時(shí)從 TiKV 復(fù)制數(shù)據(jù),確保行存儲(chǔ)引擎 TiKV 和列存儲(chǔ)引擎 TiFlash 之間的數(shù)據(jù)強(qiáng)一致郑口。TiKV鸳碧、TiFlash 可按需部署在不同的機(jī)器,解決 HTAP 資源隔離的問題犬性。

4瞻离、一致性分布事務(wù)

可以把 TiDB 想象成一個(gè)單機(jī)的 RDBMS,ACID 事務(wù)可以在多節(jié)點(diǎn)間進(jìn)行乒裆,無(wú)需擔(dān)心一致性問題套利。 TiDB 對(duì)業(yè)務(wù)沒有任何侵入性,是傳統(tǒng)的數(shù)據(jù)庫(kù)中間件鹤耍、數(shù)據(jù)庫(kù)分庫(kù)分表等優(yōu)雅的替換方案肉迫。

5、高度兼容 MySQL

TiDB 的通訊協(xié)議與 MySQL 高度兼容稿黄,可以像使用 MySQL 單點(diǎn)數(shù)據(jù)庫(kù)一樣使用 TiDB喊衫,用 TiDB 替換 MySQL 幾乎無(wú)需修改應(yīng)用系統(tǒng)的代碼。 MySQL 的客戶端管理工具及社區(qū)所有的周邊工具都可直接接入杆怕,極大降低學(xué)習(xí)和使用成本族购。TiDB 在大數(shù)據(jù)量下復(fù)雜查詢方面壳贪,相比 MySQL 有絕對(duì)的性能優(yōu)勢(shì)。
注意:TiDB 不支持 MySQL 的功能特性包括:

  • 存儲(chǔ)過程與函數(shù)
  • 觸發(fā)器
  • 事件
  • 自定義函數(shù)
  • 外鍵約束
  • 全文/空間函數(shù)與索引
  • 非 ascii/latin1/binary/utf8/utf8mb4 的字符集
  • SYS schema
  • MySQL 追蹤優(yōu)化器
  • XML 函數(shù)
  • X Protocol
  • Savepoints
  • 列級(jí)權(quán)限
  • XA 語(yǔ)法(TiDB 內(nèi)部使用兩階段提交寝杖,但并沒有通過 SQL 接口公開)
  • CREATE TABLE tblName AS SELECT stmt 語(yǔ)法
  • CREATE TEMPORARY TABLE 語(yǔ)法
  • CHECK TABLE 語(yǔ)法
  • CHECKSUM TABLE 語(yǔ)法

詳細(xì)的 MySQL 的兼容情況請(qǐng)參見官方在線文檔【https://pingcap.com/docs-cn/stable/mysql-compatibility

6违施、完善的生態(tài)工具

TiDB 提供包括自動(dòng)化運(yùn)維、數(shù)據(jù)同步朝墩、數(shù)據(jù)導(dǎo)入導(dǎo)出和組件安裝包管理等多種工具醉拓,用戶能夠十分便利的進(jìn)行數(shù)據(jù)庫(kù)部署、管理收苏、監(jiān)控亿卤,數(shù)據(jù)同步、導(dǎo)入鹿霸、導(dǎo)出等維護(hù)工作排吴。


6.應(yīng)用場(chǎng)景

1、對(duì)數(shù)據(jù)一致性及高可靠懦鼠、系統(tǒng)高可用钻哩、可擴(kuò)展性、容災(zāi)要求較高的金融行業(yè)屬性的場(chǎng)景肛冶。

傳統(tǒng)的解決方案是同城兩個(gè)機(jī)房提供服務(wù)街氢、異地一個(gè)機(jī)房提供數(shù)據(jù)容災(zāi)能力但不提供服務(wù),此解決方案存在以下缺點(diǎn):資源利用率低睦袖、維護(hù)成本高珊肃、RTO (Recovery Time Objective) 及 RPO (Recovery Point Objective) 無(wú)法真實(shí)達(dá)到企業(yè)所期望的值。TiDB 采用多副本 + Multi-Raft 協(xié)議的方式將數(shù)據(jù)調(diào)度到不同的機(jī)房馅笙、機(jī)架伦乔、機(jī)器,當(dāng)部分機(jī)器出現(xiàn)故障時(shí)系統(tǒng)可自動(dòng)進(jìn)行切換董习,確保系統(tǒng)的 RTO <= 30s 及 RPO = 0 烈和。

2、對(duì)存儲(chǔ)容量皿淋、可擴(kuò)展性招刹、并發(fā)要求較高的海量數(shù)據(jù)及高并發(fā)的 OLTP 場(chǎng)景。

傳統(tǒng)的單機(jī)數(shù)據(jù)庫(kù)無(wú)法滿足因數(shù)據(jù)爆炸性的增長(zhǎng)對(duì)數(shù)據(jù)庫(kù)的容量要求窝趣,可行方案是采用分庫(kù)分表的中間件產(chǎn)品或者 NewSQL 數(shù)據(jù)庫(kù)替代疯暑、采用高端的存儲(chǔ)設(shè)備等,其中性價(jià)比最大的是 NewSQL 數(shù)據(jù)庫(kù)高帖,例如:TiDB。TiDB 采用計(jì)算畦粮、存儲(chǔ)分離的架構(gòu)散址,可對(duì)計(jì)算乖阵、存儲(chǔ)分別進(jìn)行擴(kuò)容和縮容,計(jì)算最大支持 512 節(jié)點(diǎn)预麸,每個(gè)節(jié)點(diǎn)最大支持 1000 并發(fā)瞪浸,集群容量最大支持 PB 級(jí)別。

3吏祸、事實(shí)在線事務(wù)處理與在線分析處理場(chǎng)景对蒲。

傳統(tǒng)的解決方案是通過 OLTP 型數(shù)據(jù)庫(kù)處理在線聯(lián)機(jī)交易業(yè)務(wù),通過 ETL 工具將數(shù)據(jù)同步到 OLAP 型數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)分析贡翘,這種處理方案存在存儲(chǔ)成本高蹈矮、實(shí)時(shí)性差等多方面的問題。TiDB 在 4.0 版本中引入列存儲(chǔ)引擎 TiFlash 結(jié)合行存儲(chǔ)引擎 TiKV 構(gòu)建真正的 HTAP 數(shù)據(jù)庫(kù)鸣驱,在增加少量存儲(chǔ)成本的情況下泛鸟,可以同一個(gè)系統(tǒng)中做聯(lián)機(jī)交易處理、實(shí)時(shí)數(shù)據(jù)分析踊东,極大地節(jié)省企業(yè)的成本北滥。

4、數(shù)據(jù)匯聚闸翅、二次加工處理的場(chǎng)景再芋。

傳統(tǒng)常見的解決方案是采用 ETL + Hadoop 來完成,但 Hadoop 體系太復(fù)雜坚冀,運(yùn)維济赎、存儲(chǔ)成本太高無(wú)法滿足用戶的需求。與 Hadoop 相比遗菠,TiDB 就簡(jiǎn)單得多联喘,業(yè)務(wù)通過 ETL 工具或者 TiDB 的同步工具將數(shù)據(jù)同步到 TiDB,在 TiDB 中可通過 SQL 直接生成報(bào)表辙纬。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末豁遭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贺拣,更是在濱河造成了極大的恐慌蓖谢,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異切黔,居然都是意外死亡费封,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門盯腌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人陨瘩,你說我怎么就攤上這事腕够〖墩В” “怎么了?”我有些...
    開封第一講書人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵帚湘,是天一觀的道長(zhǎng)玫荣。 經(jīng)常有香客問我,道長(zhǎng)大诸,這世上最難降的妖魔是什么捅厂? 我笑而不...
    開封第一講書人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮资柔,結(jié)果婚禮上焙贷,老公的妹妹穿的比我還像新娘。我一直安慰自己建邓,他們只是感情好盈厘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著官边,像睡著了一般沸手。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上注簿,一...
    開封第一講書人閱讀 49,729評(píng)論 1 289
  • 那天契吉,我揣著相機(jī)與錄音,去河邊找鬼诡渴。 笑死捐晶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的妄辩。 我是一名探鬼主播惑灵,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼眼耀!你這毒婦竟也來了英支?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤哮伟,失蹤者是張志新(化名)和其女友劉穎干花,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體楞黄,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡池凄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鬼廓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肿仑。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尤慰,到底是詐尸還是另有隱情勾邦,我是刑警寧澤,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布割择,位于F島的核電站,受9級(jí)特大地震影響萎河,放射性物質(zhì)發(fā)生泄漏荔泳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一虐杯、第九天 我趴在偏房一處隱蔽的房頂上張望玛歌。 院中可真熱鬧,春花似錦擎椰、人聲如沸支子。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)值朋。三九已至,卻和暖如春巩搏,著一層夾襖步出監(jiān)牢的瞬間昨登,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工贯底, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丰辣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓禽捆,卻偏偏與公主長(zhǎng)得像笙什,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胚想,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348