日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

怎样打造一个分布式数据库

發布時間:2023/12/4 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎样打造一个分布式数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文來自:https://www.infoq.cn/article/how-to-build-a-distributed-database
文章寫得很好,備份防丟失

在技術方面,我自己熱衷于 Open Source,寫了很多 Open Source 的東西,擅長的是 Infrastructure 領域。Infrastructure 領域現在范圍很廣,比如說很典型的分布式 Scheduler、Mesos、Kubernetes,另外它和 Microservices 所結合的東西也特別多。Infrastructure 領域還有比如 Database 有分 AP(分析型)和 TP(事務型),比如說很典型的大家知道的 Spark、Greenplum、Apache Phoenix 等等,這些都屬于在 AP 的,它們也會去嘗試支持有限的 TP。另外,還有一個比較有意思的就是 Kudu——Cloudera Open Source 的那個項目,它的目標很有意思:我不做最強的 AP 系統,也不做最強的 TP 系統,我選擇一個相對折中的方案。從文化哲學上看,它比較符合中國的中庸思想。

另外,我先后創建了 Codis、TiDB。去年 12 月份創建了 TiKV 這個 project,TiKV 在所有的 rust 項目里目前排名前三。

首先我們聊聊 Database 的歷史,在已經有這么多種數據庫的背景下我們為什么要創建另外一個數據庫;以及說一下現在方案遇到的困境,說一下 Google Spanner 和 F1、TiKV 和 TiDB,說一下架構的事情,在這里我們會重點聊一下 TiKV。因為我們產品的很多特性是 TiKV 提供的,比如說跨數據中心的復制、Transaction、auto-scale。

接下來聊一下為什么 TiKV 用 Raft 能實現所有這些重要的特性,以及 scale、MVCC 和事務模型。東西非常多,我今天不太可能把里面的技術細節都描述得特別細,因為幾乎每一個話題都可以找到一篇或者是多篇論文,所以詳細的技術問題大家可以單獨來找我聊。

后面再說一下我們現在遇到的窘境,就是大家常規遇到的分布式方案有哪些問題,比如 MySQL Sharding。我們創建了無數 MySQL Proxy,比如官方的 MySQL proxy、Youtube 的 Vitess、淘寶的 Cobar、TDDL 以及基于 Cobar 的 MyCAT、金山的 Kingshard、360 的 Atlas、京東的 JProxy,我在豌豆莢也寫了一個。可以說,隨便一個大公司都會造一個 MySQL Sharding 的方案。

1、為什么我們要創建另外一個數據庫?

昨天晚上我還跟一個同學聊到,基于 MySQL 的方案它的天花板在哪里,它的天花板特別明顯。有一個思路是能不能通過 MySQL 的 server 把 InnoDB 變成一個分布式數據庫,聽起來這個方案很完美,但是很快就會遇到天花板。因為 MySQL 生成的執行計劃是個單機的,它認為整個計劃的 cost 也是單機的,我讀取一行和讀取下一行之間的開銷是很小的,比如迭代 next row 可以立刻拿到下一行。實際上在一個分布式系統里面,這是不一定的。

另外,你把數據都拿回來計算這個太慢了,很多時候我們需要把我們的 expression 或者計算過程等等運算推下去,向上返回一個最終的計算結果,這個一定要用分布式的 plan,前面控制執行計劃的節點,它必須要理解下面是分布式的東西,才能生成最好的 plan,這樣才能實現最高的執行效率。

比如說你做一個 sum,你是一條條拿回來加,還是讓一堆機器一起算,最后給我一個結果。 例如我有 100 億條數據分布在 10 臺機器上,并行在這 10 臺機器我可能只拿到 10 個結果,如果把所有的數據每一條都拿回來,這就太慢了,完全喪失了分布式的價值。聊到 MySQL 想實現分布式,另外一個實現分布式的方案就是 Proxy。但是 Proxy 本身的天花板在那里,就是它不支持分布式的 transaction,它不支持跨節點的 join,它無法理解復雜的 plan,一個復雜的 plan 打到 Proxy 上面,Proxy 就傻了,我到底應該往哪一個節點上轉發呢,如果我涉及到 subquery sql 怎么辦?所以這個天花板是瞬間會到,在傳統模型下面的修改,很快會達不到我們的要求。

另外一個很重要的是,MySQL 支持的復制方式是半同步或者是異步,但是半同步可以降級成異步,也就是說任何時候數據出了問題你不敢切換,因為有可能是異步復制,有一部分數據還沒有同步過來,這時候切換數據就不一致了。前一陣子出現過某公司突然不能支付了這種事件,今年有很多這種類似的 case,所以微博上大家都在說“說好的異地多活呢?”……

為什么傳統的方案在這上面解決起來特別的困難,天花板馬上到了,基本上不可能解決這個問題。另外是多數據中心的復制和數據中心的容災,MySQL 在這上面是做不好的。


在前面三十年基本上是關系數據庫的時代,那個時代創建了很多偉大的公司,比如說 IBM、Oracle、微軟也有自己的數據庫,早期還有一個公司叫 Sybase,有一部分特別老的程序員同學在當年的教程里面還可以找到這些東西,但是現在基本上看不到了。

另外是 NoSQL。NoSQL 也是一度非常火,像 Cassandra、MongoDB 等等,這些都屬于在互聯網快速發展的時候創建這些能夠 scale 的方案,但 Redis scale 出來比較晚,所以很多時候大家把 Redis 當成一個 Cache,現在慢慢大家把它當成存儲不那么重要的數據的數據庫。因為它有了 scale 支持以后,大家會把更多的數據放在里面。

然后到了 2015,嚴格來講是到 2014 年到 2015 年之間,Raft 論文發表以后,真正的 NewSQL 的理論基礎終于完成了。我覺得 NewSQL 這個理論基礎,最重要的劃時代的幾篇論文,一個是谷歌的 Spanner,是在 2013 年初發布的;再就是 Raft 是在 2014 年上半年發布的。這幾篇相當于打下了分布式數據庫 NewSQL 的理論基礎,這個模型是非常重要的,如果沒有模型在上面是堆不起來東西的。說到現在,大家可能對于模型還是可以理解的,但是對于它的實現難度很難想象。

前面我大概提到了我們為什么需要另外一個數據庫,說到 Scalability 數據的伸縮,然后我們講到需要 SQL,比如你給我一個純粹的 key-velue 系統的 API,比如我要查找年齡在 10 歲到 20 歲之間的 email 要滿足一個什么要求的。如果只有 KV 的 API 這是會寫死人的,要寫很多代碼,但是實際上用 SQL 寫一句話就可以了,而且 SQL 的優化器對整個數據的分布是知道的,它可以很快理解你這個 SQL,然后會得到一個最優的 plan,他得到這個最優的 plan 基本上等價于一個真正理解 KV 每一步操作的人寫出來的程序。通常情況下,SQL 的優化器是為了更加了解或者做出更好的選擇。

另外一個就是 ACID 的事務,這是傳統數據庫必須要提供的基礎。以前你不提供 ACID 就不能叫數據庫,但是近些年大家寫一個內存的 map 也可以叫自己是數據庫。大家寫一個 append-only 文件,我們也可以叫只讀數據庫,數據庫的概念比以前極大的泛化了。

另外就是高可用和自動恢復,他們的概念是什么呢?有些人會有一些誤解,因為今天還有朋友在現場問到,出了故障,比如說一個機房掛掉以后我應該怎么做切換,怎么操作。這個實際上相當于還是上一代的概念,還需要人去干預,這種不算是高可用。

未來的高可用一定是系統出了問題馬上可以自動恢復,馬上可以變成可用。比如說一個機房掛掉了,十秒鐘不能支付,十秒鐘之后系統自動恢復了變得可以支付,即使這個數據中心再也不起來我整個系統仍然是可以支付的。Auto-Failover 的重要性就在這里。大家不希望在睡覺的時候被一個報警給拉起來,我相信大家以后具備這樣一個能力,5 分鐘以內的報警不用理會,掛掉一個機房,又掛掉一個機房,這種連續報警才會理。我們內部開玩笑說,希望大家都能睡個好覺,很重要的事情就是這個。

說完應用層的事情,現在很有很多業務,在應用層自己去分片,比如說我按照 user ID 在代碼里面分片,還有一部分是更高級一點我會用到一致性哈希。問題在于它的復雜度,到一定程度之后我自動的分庫,自動的分表,我覺得下一代數據庫是不需要理解這些東西的,不需要了解什么叫做分庫,不需要了解什么叫做分表,因為系統是全部自動搞定的。同時復雜度,如果一個應用不支持事務,那么在應用層去做,通常的做法是引入一個外部隊列,引入大量的程序機制和狀態轉換,A 狀態的時候允許轉換到 B 狀態,B 狀態允許轉換到 C 狀態。

舉一個簡單的例子,比如說在京東上買東西,先下訂單,支付狀態之后這個商品才能出庫,如果不是支付狀態一定不能出庫,每一步都有嚴格的流程。

2、Google Spanner / F1

說一下 Google 的 Spanner 和 F1,這是我非常喜歡的論文,也是我最近幾年看過很多遍的論文。 Google Spanner 已經強大到什么程度呢?Google Spanner 是全球分布的數據庫,在國內目前普遍做法叫做同城兩地三中心,它們的差別是什么呢?以 Google 的數據來講,谷歌比較高的級別是他們有 7 個副本,通常是美國保存 3 個副本,再在另外 2 個國家可以保存 2 個副本,這樣的好處是萬一美國兩個數據中心出了問題,那整個系統還能繼續可用,這個概念就是比如美國 3 個副本全掛了,整個數據都還在,這個數據安全級別比很多國家的安全級別還要高,這是 Google 目前做到的,這是全球分布的好處。

現在國內主流的做法是兩地三中心,但現在基本上都不能自動切換。大家可以看到很多號稱實現了兩地三中心或者異地多活,但是一出現問題都說不好意思這段時間我不能提供服務了。大家無數次的見到這種 case, 我就不列舉了。

Spanner 現在也提供一部分 SQL 特性。在以前,大部分 SQL 特性是在 F1 里面提供的,現在 Spanner 也在逐步豐富它的功能,Google 是全球第一個做到這個規模或者是做到這個級別的數據庫。事務支持里面 Google 有點黑科技(其實也沒有那么黑),就是它有GPS 時鐘和原子鐘。大家知道在分布式系統里面,比如說數千臺機器,兩個事務啟動先后順序,這個順序怎么界定 (事務外部一致性)。這個時候 Google 內部使用了 GPS 時鐘和原子鐘,正常情況下它會使用一個 GPS 時鐘的一個集群,就是說我拿的一個時間戳,并不是從一個 GPS 上來拿的時間戳,因為大家知道所有的硬件都會有誤差。如果這時候我從一個上拿到的 GPS 本身有點問題,那么你拿到的這個時鐘是不精確的。而 Google 它實際上是在一批 GPS 時鐘上去拿了能夠滿足 majority 的精度,再用時間的算法,得到一個比較精確的時間。大家知道 GPS 也不太安全,因為它是美國軍方的,對于 Google 來講要實現比國家安全級別更高的數據庫,而 GPS 是可能受到干擾的,因為 GPS 信號是可以調整的,這在軍事用途上面很典型的,大家知道導彈的制導需要依賴 GPS,如果調整了 GPS 精度,那么導彈精度就廢了。所以他們還用原子鐘去校正 GPS,如果 GPS 突然跳躍了,原子鐘上是可以檢測到 GPS 跳躍的,這部分相對有一點黑科技,但是從原理上來講還是比較簡單,比較好理解的。

最開始它 Spanner 最大的用戶就是 Google 的 Adwords,這是 Google 最賺錢的業務,Google 就是靠廣告生存的,我們一直覺得 Google 是科技公司,但是他的錢是從廣告那來的,所以一定程度來講 Google 是一個廣告公司。Google 內部的方向先有了 Big table ,然后有了 MegaStore ,MegaStore 的下一代是 Spanner ,F1 是在 Spanner 上面構建的。

3、TiDB and TiKV

TiKV 和 TiDB 基本上對應 Google Spanner 和 Google F1,用 Open Source 方式重建。目前這兩個項目都開放在 GitHub 上面,兩個項目都比較火爆,TiDB 是更早一點開源的, 目前 TiDB 在 GitHub 上 有 4300 多個 Star,每天都在增長。

另外,對于現在的社會來講,我們覺得 Infrastructure 領域閉源的東西是沒有任何生存機會的。沒有任何一家公司,愿意把自己的身家性命壓在一個閉源的項目上。舉一個很典型的例子,在美國有一個數據庫叫 FoundationDB,去年被蘋果收購了。FoundationDB 之前和用戶簽的合約都是一年的合約。比如說,我給你服務周期是一年,現在我被另外一個公司收購了,我今年服務到期之后,我是滿足合約的。但是其他公司再也不能找它服務了,因為它現在不叫 FoundationDB 了,它叫 Apple 了,你不能找 Apple 給你提供一個 Enterprise service。


TiDB 和 TiKV 為什么是兩個項目,因為它和 Google 的內部架構對比差不多是這樣的:TiKV 對應的是 Spanner,TiDB 對應的是 F1 。F1 里面更強調上層的分布式的 SQL 層到底怎么做,分布式的 Plan 應該怎么做,分布式的 Plan 應該怎么去做優化。同時 TiDB 有一點做的比較好的是,它兼容了 MySQL 協議,當你出現了一個新型的數據庫的時候,用戶使用它是有成本的。大家都知道作為開發很討厭的一個事情就是,我要每個語言都寫一個 Driver,比如說你要支持 C++、你要支持 Java、你要支持 Go 等等,這個太累了,而且用戶還得改他的程序,所以我們選擇了一個更加好的東西兼容 MySQL 協議,讓用戶可以不用改。一會我會用一個視頻來演示一下,為什么一行代碼不改就可以用,用戶就能體會到 TiDB 帶來的所有的好處。


這個圖實際上是整個協議棧或者是整個軟件棧的實現。大家可以看到整個系統是高度分層的,從最底下開始是 RocksDB ,然后再上面用 Raft 構建一層可以被復制的 RocksDB ,在這一層的時候它還沒有 Transaction,但是整個系統現在的狀態是所有寫入的數據一定要保證它復制到了足夠多的副本。也就是說只要我寫進來的數據一定有足夠多的副本去 cover 它,這樣才比較安全,在一個比較安全的 Key-value store 上面, 再去構建它的多版本,再去構建它的分布式事務,然后在分布式事務構建完成之后,就可以輕松的加上 SQL 層,再輕松的加上 MySQL 協議的支持。然后,這兩天我比較好奇,自己寫了 MongoDB 協議的支持,然后我們可以用 MongoDB 的客戶端來玩,就是說協議這一層是高度可插拔的。TiDB 上可以在上面構建一個 MongoDB 的協議,相當于這個是構建一個 SQL 的協議,可以構建一個 NoSQL 的協議。這一點主要是用來驗證 TiKV 在模型上面的支持能力。


這是整個 TiKV 的架構圖,從這個看來,整個集群里面有很多 Node,比如這里畫了四個 Node ,分別對應了四個機器。每一個 Node 上可以有多個 Store,每個 Store 里面又會有很多小的 Region,就是說一小片數據,就是一個 Region 。從全局來看所有的數據被劃分成很多小片,每個小片默認配置是 64M,它已經足夠小,可以很輕松的從一個節點移到另外一個節點,Region 1 有三個副本,它分別在 Node1、Node 2 和 Node4 上面, 類似的 Region 2,Region 3 也是有三個副本。每個 Region 的所有副本組成一個 Raft Group,整個系統可以看到很多這樣的 Raft groups。

Raft 細節我不展開了,大家有興趣可以找我私聊或者看一下相應的資料。

因為整個系統里面我們可以看到上一張圖里面有很多 Raft group 給我們,不同 Raft group 之間的通訊都是有開銷的。所以我們有一個類似于 MySQL 的 group commit 機制 ,你發消息的時候實際上可以 share 同一個 connection , 然后 pipeline + batch 發送,很大程度上可以省掉大量 syscall 的開銷。

另外,其實在一定程度上后面我們在支持壓縮的時候,也有非常大的幫助,就是可以減少數據的傳輸。對于整個系統而言,可能有數百萬的 Region,它的大小可以調整,比如說 64M、128M、256M,這個實際上依賴于整個系統里面當前的狀況。

比如說我們曾經在有一個用戶的機房里面做過測試,這個測試有一個香港機房和新加坡的機房。結果我們在做復制的時候,新加坡的機房大于 256M 就復制不過去,因為機房很不穩定,必須要保證數據切的足夠小,這樣才能復制過去。

如果一個 Region 太大以后我們會自動做 SPLIT,這是非常好玩的過程,有點像細胞的分裂。

然后 TiKV 的 Raft 實現,是從 etcd 里面 port 過來的,為什么要從 etcd 里面 port 過來呢?首先 TiKV 的 Raft 實現是用 Rust 寫的。作為第一個做到生產級別的 Raft 實現,所以我們從 etcd 里面把它用 Go 語言寫的 port 到這邊。


這個是 Raft 官網上面列出來的 TiKV 在里面的狀態,大家可以看到 TiKV 把所有 Raft 的 feature 都實現了。 比如說 Leader Election、Membership Changes,這個是非常重要的,整個系統的 scale 過程高度依賴 Membership Changes,后面我用一個圖來講這個過程。后面這個是 Log Compaction,這個用戶不太關心。


這是很典型的細胞分裂的圖,實際上 Region 的分裂過程和這個是類似的。

我們看一下擴容是怎么做的。

比如說以現在的系統假設,我們剛開始說只有三個節點,有 Region1 分別是在 1 、2、4,我用虛線連接起來代表它是一個 Raft group ,大家可以看到整個系統里面有三個 Raft group ,在每一個 Node 上面數據的分布是比較均勻的,在這個假設每一個 Region 是 64M ,相當于只有一個 Node 上面負載比其他的稍微大一點點。

一個在線視頻默認我們都是推薦 3 個副本或者 5 個副本的配置。Raft 本身有一個特點,如果一個 leader down 掉之后,其它的節點會選一個新的 leader ,那么這個新的 leader 會把它還沒有 commit 但已經 reply 過去的 log 做一個 commit ,然后會再做 apply ,這個有點偏 Raft 協議,細節我不講了。

復制數據的小的 Region,它實際上是跨多個數據中心做的復制。這里面最重要的一點是永遠不丟失數據,無論如何我保證我的復制一定是復制到 majority ,任何時候我只要對外提供服務,允許外面寫入數據一定要復制到 majority 。很重要的一點就是恢復的過程一定要是自動化的,我前面已經強調過,如果不能自動化恢復,那么中間的宕機時間或者對外不可服務的時間,便不是由整個系統決定的,這是相對回到了幾十年前的狀態。

4、MVCC

MVCC 我稍微仔細講一下這一塊。MVCC 的好處,它很好支持 Lock-free 的 snapshot read ,一會兒我有一個圖會展示 MVCC 是怎么做的。isolation level 就不講了, MySQL 里面的級別是可以調的,我們的 TiKV 有 SI,還有 SI+lock,默認是支持 SI 的這種隔離級別,然后你寫一個 select for update 語句,這個會自動的調整到 SI 加上 lock 這個隔離級別。這個隔離級別基本上和 SSI 是一致的。還有一個就是 GC 的問題,如果你的系統里面的數據產生了很多版本,你需要把這個比較老的數據給 GC 掉,比如說正常情況下我們是不刪除數據的, 你寫入一行,然后再寫入一行,不斷去 update 同一行的時候,每一次 update 會產生新的版本,新的版本就會在系統里存在,所以我們需要一個 GC 的模塊把比較老的數據給 GC 掉,實際上這個 GC 不是 Go 里面的 GC,不是 Java 的 GC,而是數據的 GC。


這是一個數據版本,大家可以看到我們的數據分成兩塊,一個是 meta,一個是 data。meta 相對于描述我的數據當前有多少個版本。大家可以看到綠色的部分,比如說我們的 meta key 是 A ,keyA 有三個版本,是 A1 、A2、A3,我們把 key 自己和 version 拼到一起。那我們用 A1、A2、A3 分別描述 A 的三個版本,那么就是 version 1/2/3。meta 里面描述,就是我的整個 key 相對應哪個版本,我想找到那個版本。比如說我現在要讀取 key A 的版本 10,但顯然現在版本 10 是沒有的,那么小于版本 10 最大的版本是 3,所以這時我就能讀取到 3,這是它的隔離級別決定的。關于 data,我剛才已經講過了。

5、分布式事務模型

接下來是分布式事務模型,其實是基于 Google Percolator,這是 Google 在 2006 發表的一篇論文,是 Google 在做內部增量處理的時候發現了這個方法,本質上還是二階段提交的。這使用的是一個樂觀鎖,比如說我提供一個 transaction ,我去改一個東西,改的時候是發布在本地的,并沒有馬上 commit 到數據存儲那一端,這個模型就是說,我修改的東西我馬上去 Lock 住,這個基本就是一個悲觀鎖。但如果到最后一刻我才提交出去,那么鎖住的這一小段的時間,這個時候實現的是樂觀鎖。樂觀鎖的好處就是當你沖突很小的時候可以得到非常好的性能,因為沖突特別小,所以我本地修改通常都是有效的,所以我不需要去 Lock ,不需要去 roll back 。本質上分布式事務就是 2PC (兩階段提交) 或者是 2+x PC,基本上沒有 1PC,除非你在別人的級別上做弱化。比如說我允許你讀到當前最新的版本,也允許你讀到前面的版本,書里面把這個叫做幻讀。如果你調到這個程度是比較容易做 1PC 的,這個實際上還是依賴用戶設定的隔離級別的,如果用戶需要更高的隔離級別,這個 1PC 就不太好做了。

這是一個路由,正常來講,大家可能會好奇一個 SQL 語句怎么最后會落到存儲層,然后能很好的運行,最后怎么能映射到 KV 上面,又怎么能路由到正確的節點,因為整個系統可能有上千個節點,你怎么能正確路由到那一個的節點。我們在 TiDB 有一個 TiKV driver , 另外 TiKV 對外使用的是 Google Protocol Buffer 來作為通訊的編碼格式。

6、Placement Driver

來說一下 Placement Driver 。Placement Driver 是什么呢?整個系統里面有一個節點,它會時刻知道現在整個系統的狀態。比如說每個機器的負載,每個機器的容量,是否有新加的機器,新加機器的容量到底是怎么樣的,是不是可以把一部分數據挪過去,是不是也是一樣下線, 如果一個節點在十分鐘之內無法被其他節點探測到,我認為它已經掛了,不管它實際上是不是真的掛了,但是我也認為它掛了。因為這個時候是有風險的,如果這個機器萬一真的掛了,意味著你現在機器的副本數只有兩個,有一部分數據的副本數只有兩個。那么現在你必須馬上要在系統里面重新選一臺機器出來,它上面有足夠的空間,讓我現在只有兩個副本的數據重新再做一份新的復制,系統始終維持在三個副本。整個系統里面如果機器掛掉了,副本數少了,這個時候應該會被自動發現,馬上補充新的副本,這樣會維持整個系統的副本數。這是很重要的 ,為了避免數據丟失,必須維持足夠的副本數,因為副本數每少一個,你的風險就會再增加。這就是 Placement Driver 做的事情。

同時,Placement Driver 還會根據性能負載,不斷去 move 這個 data 。比如說你這邊負載已經很高了,一個磁盤假設有 100G,現在已經用了 80G,另外一個機器上也是 100G,但是他只用了 20G,所以這上面還可以有幾十 G 的數據,比如 40G 的數據,你可以 move 過去,這樣可以保證系統有很好的負載,不會出現一個磁盤巨忙無比,數據已經多的裝不下了,另外一個上面還沒有東西,這是 Placement Driver 要做的東西。

Raft 協議還提供一個很高級的特性叫 leader transfer。leader transfer 就是說在我不移動數據的時候,我把我的 leadership 給你,相當于從這個角度來講,我把流量分給你,因為我是 leader,所以數據會到我這來,但我現在把 leader 給你,我讓你來當 leader,原來打給我的請求會被打給你,這樣我的負載就降下來。這就可以很好的動態調整整個系統的負載,同時又不搬移數據。不搬移數據的好處就是,不會形成一個抖動。

7、MySQL Sharding

MySQL Sharding 我前面已經提到了它的各種天花板,MySQL Sharding 的方案很典型的就是解決基本問題以后,業務稍微復雜一點,你在 sharding 這一層根本搞不定。它永遠需要一個 sharding key,你必須要告訴我的 proxy,我的數據要到哪里找,對用戶來說是極不友好的,比如我現在是一個單機的,現在我要切入到一個分布式的環境,這時我必須要改我的代碼,我必須要知道我這個 key ,我的 row 應該往哪里 Sharding。如果是用 ORM ,這個基本上就沒法做這個事情了。有很多 ORM 它本身假設我后面只有一個 MySQL。但 TiDB 就可以很好的支持,因為我所有的角色都是對的,我不需要關注 Sharding 、分庫、分表這類的事情。

這里面有一個很重要的問題沒有提,我怎么做 DDL。如果這個表非常大的話,比如說我們有一百億吧,橫跨了四臺機器,這個時候你要給它做一個新的 Index,就是我要添加一個新的索引,這個時候你必須要不影響任何現有的業務,實際上這是多階段提交的算法,這個是 Google 和 F1 一起發出來那篇論文。

簡單來講是這樣的,先把狀態標記成 delete only ,delete only 是什么意思呢?因為在分布式系統里面,所有的系統對于 schema 的視野不是一致的,比如說我現在改了一個值,有一部分人發現這個值被改了,但是還有一部分人還沒有開始訪問這個,所以根本不知道它被改了。然后在一個分布系統里,你也不可能實時通知到所有人在同一時刻發現它改變了。比如說從有索引到沒有索引,你不能一步切過去,因為有的人認為它有索引,所以他給它建了一個索引,但是另外一個機器他認為它沒有索引,所以他就把數據給刪了,索引就留在里面了。這樣遇到一個問題,我通過索引找的時候告訴我有, 實際數據卻沒有了,這個時候一致性出了問題。比如說我 count 一個 email 等于多少的,我通過 email 建了一個索引,我認為它是在,但是 UID 再轉過去的時候可能已經不存在了。

比如說我先標記成 delete only,我刪除它的時候不管它現在有沒有索引,我都會嘗試刪除索引,所以我的數據是干凈的。如果我刪除掉的話,我不管結果是什么樣的,我嘗試去刪一下,可能這個索引還沒 build 出來,但是我仍然刪除,如果數據沒有了,索引一定沒有了,所以這可以很好的保持它的一致性。后面再類似于前面,先標記成 write only 這種方式,連續再迭代這個狀態,就可以迭代到一個最終可以對外公開的狀態。比如說當我迭代到一定程度的時候,我可以從后臺 build index ,比如說我一百億,正在操作的 index 會馬上 build,但是還有很多沒有 build index ,這個時候后臺不斷的跑 map-reduce 去 build index ,直到整個都 build 完成之后,再對外 public ,就是說我這個索引已經可用了,你可以直接拿索引來找,這個是非常經典的。在這個 Online,Asynchronous Schema Change in F1 paper 之前,大家都不知道這事該怎么做。

Proxy Sharding 的方案不支持分布式事務,更不用說跨數據中心的一致性事務了。 TiKV 很好的支持 transaction,剛才提到的 Raft 除了增加副本之外,還有 leader transfer,這是一個傳統的方案都無法提供的特性。以及它帶來的好處,當我瞬間平衡整個系統負載的時候,對外是透明的, 做 leader transfer 的時候并不需要移動數據,只是個簡單的 leader transfer 消息。

然后說一下如果大家想參與我們項目的話是怎樣的過程,因為整個系統是完全開源的,如果大家想參與其中任何一部分都可以,比如說我想參與到分布式 KV,可以直接貢獻到 TiKV。TiKV 需要寫 Rust,如果大家對這塊特別有激情可以體驗寫 Rust 的感覺 。

TiDB 是用 Go 寫的,Go 在中國的群眾基礎是非常多的,目前也有很多人在貢獻。整個 TiDB 和 TiKV 是高度協作的項目,因為 TiDB 目前還用到了 etcd ,我們在和 CoreOS 在密切的合作,也特別感謝 CoreOS 幫我們做了很多的支持,我們也為 CoreOS 的 etcd 提了一些 patch。同時,TiKV 使用 RocksDB ,所以我們也為 RocksDB 提了一些 patch 和 test,我們也非常感謝 Facebook RocksDB team 對我們項目的支持。

另外一個是 PD,就是我們前面提的 Placement Driver,它負責監控整個系統。這部分的算法比較好玩,大家如果有興趣的話,可以去自己控制整個集群的調度,它和 Kubernetes 或者是 Mesos 的調度算法是不一樣的,因為它調度的維度實際上比那個要更多。比如說磁盤的容量,你的 leader 的數量,你的網絡當前的使用情況,你的 IO 的負載和 CPU 的負載都可以放進去。同時你還可以讓它調度不要跨一個機房里面建多個副本。

總結

以上是生活随笔為你收集整理的怎样打造一个分布式数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产理论免费 | 日韩电影中文字幕在线 | www.五月婷 | 韩国三级在线一区 | 成人a在线| 国产精品1区2区3区在线观看 | 日本在线观看一区二区三区 | 天天综合导航 | 女人18片毛片90分钟 | 99久久精品无码一区二区毛片 | 中文字幕乱码一区二区 | 91九色蝌蚪在线 | 国产一区成人 | 黄色字幕网 | 黄视频色网站 | 国产福利一区在线观看 | 人人爽久久久噜噜噜电影 | 精品国产乱码一区二 | 日韩三级中文字幕 | 久久国产精品一二三区 | 婷婷中文字幕综合 | 激情电影影院 | 婷婷在线视频 | 日韩精品视频免费 | 精品日韩中文字幕 | 国产69久久久 | 国产一区视频在线播放 | av线上免费观看 | 欧美一级日韩三级 | 成人午夜电影免费在线观看 | 在线视频中文字幕一区 | 97国产大学生情侣酒店的特点 | 免费瑟瑟网站 | 久久精品一区二区三区中文字幕 | av中文在线播放 | 成人永久在线 | 最近中文字幕免费av | 狠日日| 成人av在线影院 | 丁香九月婷婷综合 | 在线观看国产成人av片 | 国产成人在线看 | 欧美在线视频一区二区三区 | 久草视频资源 | 777久久久 | 色噜噜在线观看视频 | 国产免费久久精品 | 在线精品国产 | 久久五月天综合 | 中文永久免费观看 | 97天天干| 激情欧美一区二区三区免费看 | 免费国产亚洲视频 | 午夜精品久久久久久久久久久久久久 | 99精品视频免费 | 日韩极品在线 | 亚洲草视频 | 午夜影院一级 | 国产精品麻豆99久久久久久 | 中文字幕成人在线 | 超级碰99| 日韩av免费大片 | 日韩三级不卡 | 国产一级二级在线观看 | 午夜国产成人 | 伊人婷婷色 | 狠狠色狠狠色综合系列 | 性日韩欧美在线视频 | 亚洲天堂毛片 | 精品二区视频 | 天天操综合网站 | 97超碰人人看 | 麻花豆传媒mv在线观看 | 国产丝袜在线 | 五月婷婷六月丁香在线观看 | 天堂中文在线视频 | 色福利网 | 成人免费在线观看av | 特级毛片在线免费观看 | 在线观看亚洲专区 | 在线视频婷婷 | 国产精品久久久久久久久毛片 | 亚洲涩涩涩 | 96久久| 欧美一区成人 | 日韩av快播电影网 | 在线综合 亚洲 欧美在线视频 | 2023av在线 | 国产精品综合久久久久 | 婷婷综合影院 | 日韩免费观看av | 92国产精品久久久久首页 | 在线 成人 | 日韩视频免费在线观看 | 国产在线高清视频 | 天天干天天操天天干 | 日韩欧美中文 | 日韩电影在线视频 | 久久国产精品99久久久久久老狼 | 国产视频精品视频 | a黄色一级 | 天天躁天天狠天天透 | av日韩av | 国产色一区 | 超碰电影在线观看 | 人人澡超碰碰97碰碰碰软件 | 中文字幕综合在线 | 懂色av一区二区三区蜜臀 | 国产成人精品不卡 | 9幺看片 | 精品一区二区综合 | 久久99热这里只有精品 | 婷婷成人亚洲综合国产xv88 | 91精品在线免费观看 | 丝袜美腿一区 | 免费观看91视频大全 | 在线天堂中文在线资源网 | 欧美日韩91 | 日韩av成人免费看 | 99精品在线免费视频 | 黄色三级免费片 | 一区二区三区视频在线 | 996久久国产精品线观看 | av资源在线看 | 成全在线视频免费观看 | 久久激情久久 | 日韩免费中文字幕 | 色婷婷国产精品 | 97精品欧美91久久久久久 | 91香蕉视频黄| 午夜精品久久久久久久99 | 亚洲天堂自拍视频 | 欧美不卡在线 | 麻豆传媒一区二区 | 黄色天堂在线观看 | 最近中文字幕高清字幕在线视频 | www.久久免费视频 | 一级一片免费看 | 成人av在线直播 | 黄色国产高清 | 夜夜夜夜夜夜操 | 国产精品一区电影 | 99久久精品视频免费 | 狠狠躁夜夜躁人人爽视频 | 久久只精品99品免费久23小说 | 日韩视频在线不卡 | 久久久久久久久久久免费av | 国产一区视频在线观看免费 | 国产精品中文在线 | 黄色免费观看 | 国产剧情在线一区 | 天天插狠狠插 | 亚洲精品日韩av | 亚洲夜夜网| 亚洲精品久久久久www | 999日韩| 人人插人人艹 | 国产视频一区二区在线观看 | 国产亚洲欧美日韩高清 | 久久试看 | 精品国产自在精品国产精野外直播 | 69久久99精品久久久久婷婷 | 亚洲在线| 中文字幕色在线视频 | 一区二区视频在线看 | 精品一区二区日韩 | 欧美福利视频一区 | 亚洲 精品在线视频 | 中文久久精品 | 国产成人av综合色 | 精品国产一区二区三区av性色 | 成人黄色小说视频 | 国产在线观看免 | 亚洲人成免费网站 | 免费精品视频在线观看 | www色,com | 国产视| 国产高清黄| 欧美色噜噜 | 国产精品 久久 | av一区二区三区在线播放 | 久久久www成人免费精品张筱雨 | 超碰97人人在线 | 91成人免费在线视频 | 天天草天天操 | 男女精品久久 | 黄网站免费久久 | 黄色三级在线观看 | 九九热免费在线观看 | 国产91国语对白在线 | 国产资源网站 | 午夜免费福利视频 | 国产日韩欧美在线一区 | 久久999久久 | 在线影院中文字幕 | 久久精品最新 | 午夜美女福利直播 | 亚洲精品一区二区三区高潮 | 欧美坐爱视频 | 在线国产一区二区 | 亚洲jizzjizz日本少妇 | 最近中文字幕高清字幕免费mv | 涩av在线| 久久综合网色—综合色88 | 国产一级黄色片免费看 | 天天插伊人| 久久综合导航 | 一区电影| 国产精品理论片 | 四虎成人免费观看 | 欧美日韩国产网站 | 久久视频免费在线观看 | 亚洲国产福利视频 | 在线免费av网站 | 亚洲 综合 精品 | 视频国产| 天天操天天射天天插 | 成人免费网站视频 | 久久综合桃花 | 日韩黄在线观看 | 99c视频高清免费观看 | 一二三精品视频 | 日日摸日日碰 | 亚洲高清网站 | 午夜视频在线观看一区二区三区 | 久久99精品久久久久久秒播蜜臀 | 狠狠干夜夜爽 | 超碰在线观看97 | 狠狠干综合网 | 国产美女视频免费观看的网站 | 欧美一级黄色网 | 国产精品久久久久久一二三四五 | 国产成人精品一区二区 | 久草视频精品 | 992tv在线观看网站 | 美女视频黄免费的 | 国产精品美女在线 | 欧美成年性 | 深爱激情久久 | 中文字幕亚洲综合久久五月天色无吗'' | 香蕉在线视频播放网站 | 99久久精| 国产a级片免费观看 | 黄色免费网战 | 日韩二区在线播放 | 精品久久久久久久久久 | 男女全黄一级一级高潮免费看 | 黄色成人在线网站 | 日批视频国产 | 毛片无卡免费无播放器 | 欧美日一级片 | 97视频免费播放 | 96久久 | 在线精品国产 | 麻豆一二| 91精品一区国产高清在线gif | 欧美激情片在线观看 | 国产精品女人久久久 | 中文字幕av一区二区三区四区 | 免费观看国产视频 | 欧美性黄网官网 | 国产精品福利无圣光在线一区 | 福利久久 | 中文字幕亚洲欧美 | av中文字幕网址 | 超碰97国产| 国产精品视频区 | www黄色软件 | 国产精品影音先锋 | 久草免费在线观看 | 亚洲精品视频久久 | 久久99久久99精品免观看粉嫩 | 国产精品在线看 | 日韩婷婷 | 午夜av一区 | 超碰人人舔 | 欧美国产精品久久久久久免费 | 国产美女黄网站免费 | 中文字幕电影一区 | 色网免费观看 | 91精品久久久久久久久 | 国产精品久久久亚洲 | 91桃色在线免费观看 | 日韩偷拍精品 | 国产小视频在线免费观看视频 | 欧美国产日韩久久 | 亚洲天堂网站视频 | 国产精品久久99综合免费观看尤物 | 五月婷av| 色婷婷综合久久久久 | 欧洲亚洲激情 | 91在线看视频 | 欧美另类xxx| 欧美久久久影院 | 日本精品中文字幕 | 8x成人免费视频 | 18性欧美xxxⅹ性满足 | 亚洲精品国偷拍自产在线观看蜜桃 | 在线视频你懂得 | 美腿丝袜一区二区三区 | 337p日本欧洲亚洲大胆裸体艺术 | 日韩精品在线免费观看 | 国内久久| 久久久久久国产一区二区三区 | 亚洲美女精品视频 | 国产精品一区二区久久久久 | 天天操天天干天天插 | 亚洲精品动漫成人3d无尽在线 | 一区二区三区动漫 | 91视频下载| 日韩激情视频 | 亚洲伊人婷婷 | 国产99亚洲| 婷婷亚洲五月色综合 | av在线等 | 天天操网站 | 久久综合干 | 99精品国产一区二区 | 久久9视频 | 一区二区三区四区在线 | 日韩电影在线观看中文字幕 | 综合色综合 | 人人插人人爱 | 91chinesexxx | 麻豆精品视频在线观看免费 | 精品国产乱码久久久久久久 | 在线色视频小说 | 色综合天天狠天天透天天伊人 | 国产一区二区不卡视频 | 99在线精品视频在线观看 | 亚洲a网 | 亚洲综合视频在线 | 久久99热国产 | 亚洲综合欧美激情 | 日韩女同av| 日韩一级黄色片 | 在线观看成人一级片 | 国产亚洲精品久久久久久久久久久久 | 国产黄色精品 | 日韩av二区 | 国产一区二区三区免费在线观看 | 久久极品| 九九热视频在线播放 | 精品夜夜嗨av一区二区三区 | 在线中文字幕一区二区 | 久久国产91 | 久久精品视频在线 | 中文字幕在线视频一区二区 | 精品二区视频 | 中文字幕在线播放第一页 | 久草免费看 | 亚洲综合欧美日韩狠狠色 | 毛片网站观看 | 日韩av免费一区 | 精品av在线播放 | 婷婷视频在线 | 97国产精品一区二区 | 亚洲国产精品视频在线观看 | 成年人免费看的视频 | 日韩av成人在线观看 | 国产精品美女在线 | 久久全国免费视频 | 在线直播av| 婷婷深爱 | 国产成人精品电影久久久 | 黄色aa久久| 99热在线免费观看 | 日日干激情五月 | 制服丝袜在线91 | 亚洲永久免费av | 亚洲每日更新 | 成人av电影在线 | aaa免费毛片| 国产一二三区在线观看 | 久久久国产高清 | 大荫蒂欧美视频另类xxxx | 手机在线观看国产精品 | 婷婷久久一区 | 香蕉国产91 | 久久a v电影 | 香蕉视频网站在线观看 | av一级片在线观看 | 成人午夜电影网站 | 热久久这里只有精品 | 日韩va在线观看 | 天天操导航 | 久久精品九色 | 91精品国产91久久久久久三级 | 色婷婷狠狠五月综合天色拍 | 日本高清久久久 | 国产精品久久久久久麻豆一区 | 中文在线免费视频 | 日韩影视在线 | 中文字幕二区在线观看 | 日韩午夜一级片 | 日韩在线播放av | 久久久一本精品99久久精品 | 天天干天天在线 | 亚州欧美精品 | 精品久久久久久久久久 | 视频在线一区二区三区 | 久久福利小视频 | 片黄色毛片黄色毛片 | 国产成人99久久亚洲综合精品 | 九九视频网站 | 日韩免费三级 | 日韩在线视频一区二区三区 | 美女视频黄免费的久久 | 亚洲精品中文字幕视频 | 国产精品国产三级国产aⅴ9色 | 久久精品欧美视频 | 日本高清中文字幕有码在线 | 色综久久| 欧美日韩三级在线观看 | 欧美老少交 | 中文字幕精品在线 | 国产成人61精品免费看片 | 丁香婷婷自拍 | 日韩.com | 在线播放日韩 | 色综合久久综合 | 亚洲色图激情文学 | 西西大胆免费视频 | 免费a网址| 久操操 | 国产一卡久久电影永久 | 欧美日韩中文字幕在线视频 | 亚洲精品中文字幕视频 | 国产小视频精品 | 日韩精品电影在线播放 | 97免费中文视频在线观看 | 国产精品www| 51久久夜色精品国产麻豆 | 久久久久 | 五月天综合色 | 九九九热精品免费视频观看网站 | 日韩高清一区二区 | 夜夜骑首页 | 91av精品| 69视频网站| 欧美日韩视频 | 欧美激情va永久在线播放 | 丁香高清视频在线看看 | 四虎成人精品 | 久久综合狠狠综合久久狠狠色综合 | 伊人国产视频 | 欧美日韩免费一区二区三区 | 最近中文字幕高清字幕免费mv | 亚洲美女视频网 | 精品久久久久久久久久久久久久久久 | 人人超碰97 | 91精品久久久久久久久久久久久 | 成人午夜性影院 | 日韩久久午夜一级啪啪 | 91精品国产乱码久久桃 | 国产成人a亚洲精品v | 国产精品久久久久久久久久久久午夜片 | 日本高清中文字幕有码在线 | 国产福利精品在线观看 | 久草在线观看视频免费 | 日韩动态视频 | 免费a v在线| caobi视频| 午夜国产一区二区三区四区 | 亚洲区另类春色综合小说校园片 | 99九九99九九九视频精品 | aaa毛片视频| 五月香视频在线观看 | 日韩精品免费在线观看视频 | 97在线观看免费高清完整版在线观看 | 日本一区二区免费在线观看 | 麻豆视频免费入口 | 国产网站在线免费观看 | 午夜免费久久看 | 中文字幕免费高清 | 97超碰在线免费 | 亚洲成人精品久久久 | 激情欧美一区二区三区免费看 | 97精产国品一二三产区在线 | 久久国产一区 | 午夜18视频在线观看 | 97超碰人人干 | 久久久久亚洲国产 | 免费成人av在线看 | 免费成人在线电影 | 国产午夜精品一区二区三区欧美 | 在线观看视频黄 | 欧美视频在线观看免费网址 | 国产91亚洲| 国产精品毛片一区二区在线 | 国产精品情侣视频 | 精品福利在线 | 亚洲精品国产成人 | 日韩com | 亚洲国产精品免费 | 在线超碰av| 国产手机精品视频 | 午夜体验区 | 91视频麻豆视频 | 国产精品久久久久久超碰 | 国产看片免费 | 在线成人av | 日韩国产精品一区 | 2021国产在线视频 | av免费观看网站 | 午夜精品一区二区三区免费 | 日日干干夜夜 | 欧美日韩精品国产 | 国产精品入口66mio女同 | 毛片激情永久免费 | 97香蕉久久超级碰碰高清版 | 国产一区二区三区高清播放 | 国产123区在线观看 国产精品麻豆91 | 色视频在线免费 | 97视频免费看 | 婷婷六月网 | 国产精品理论在线观看 | 欧美日在线观看 | 欧美色综合天天久久综合精品 | 国产精品18久久久久vr手机版特色 | 精品国产理论片 | 亚洲 成人 一区 | www.夜夜爱 | 五月天婷婷免费视频 | 深爱婷婷久久综合 | 天天干干 | 久久a免费视频 | 色五丁香 | 制服丝袜欧美 | 天天拍夜夜拍 | 精品一区二区免费在线观看 | 色婷婷亚洲综合 | 在线a人片免费观看视频 | 综合久久综合久久 | 青春草免费视频 | 中文字幕av最新 | 国产在线一线 | 天天爽天天摸 | 四虎国产精 | 手机在线永久免费观看av片 | 欧美专区日韩专区 | 国产日韩欧美视频 | .国产精品成人自产拍在线观看6 | 在线va网站 | 日韩免费播放 | 美女国产精品 | 婷婷电影在线观看 | 久久激情小视频 | 成人夜晚看av | 久久免费在线观看 | 欧美精选一区二区三区 | 亚洲一区二区三区在线看 | 天天爱天天 | 丁香综合网 | 视频在线一区 | 四虎国产视频 | 色综合久久久久 | 日韩a在线看| 国产一区私人高清影院 | 国产午夜在线观看 | 久久不卡国产精品一区二区 | 欧美日韩国产在线 | 天天色天天射综合网 | 天天做夜夜做 | 成人av久久 | 四虎在线免费观看 | 亚洲在线a| 日日干干| 久久综合之合合综合久久 | 欧美成人黄| 婷婷在线五月 | 四虎影视精品成人 | 狠狠操狠狠干天天操 | 成人在线免费视频观看 | 九九99靖品 | 久久久久网址 | 人人玩人人添人人澡97 | 久久视讯 | 久草国产视频 | 久久久久亚洲精品成人网小说 | 一二三区在线 | 视频一区二区在线 | 中文乱码视频在线观看 | 精品一区二区免费 | 西西www4444大胆视频 | 欧美日韩高清在线一区 | 久草在线免费看视频 | 99热最新地址 | 伊人五月天婷婷 | 最新日韩精品 | 黄色av影院 | 99精品在线看 | 国产一区二区久久久 | 国内毛片毛片 | 综合久久2023 | 色婷婷97 | 色噜噜日韩精品欧美一区二区 | 欧美成人精品在线 | 国产欧美日韩视频 | 日韩久久视频 | 亚洲国产中文字幕在线 | 久久久精华网 | 夜夜骑天天操 | 国产一区二区午夜 | 国产精品久久久久婷婷二区次 | 精品视频网站 | 久草精品免费 | 日韩精品欧美一区 | 中文字幕在线播放日韩 | 久久不射电影院 | 成人影视免费 | 国产一区高清在线 | av理论电影 | 久草色在线观看 | 在线日韩中文 | 丁香六月婷婷开心婷婷网 | 日韩av二区| 国产精品久久久电影 | 国产一区二区视频在线播放 | 欧美日韩国产网站 | 久久国产精品系列 | 日日天天 | 成人免费在线电影 | 国产一区二区播放 | 国产精品一区二区三区久久久 | 91人人澡人人爽人人精品 | 亚洲作爱视频 | www视频免费在线观看 | 99视频免费看 | 伊人手机在线 | 色在线免费视频 | 精品国产乱码久久久久久1区二区 | 91在线一区二区 | 国产黄色片久久 | 日日夜夜爱 | 色偷偷网站视频 | 精品久久久久久国产91 | 成人免费视频免费观看 | 国产精品私人影院 | 天天干天天操天天爱 | 成人免费观看完整版电影 | 日韩免费| 97国产人人| 亚洲精品av中文字幕在线在线 | 香蕉视频在线观看免费 | 国产亚洲精品日韩在线tv黄 | 成人精品在线 | 天天操夜夜拍 | 亚洲精品乱码久久久久久蜜桃动漫 | av短片在线观看 | 成人黄色资源 | 亚洲成人免费在线观看 | 色狠狠婷婷| 97国产视频 | 黄色的网站在线 | 色综合久久五月天 | 亚洲精选国产 | 欧美日在线观看 | 91视频免费看网站 | 一级黄色片在线免费观看 | 婷婷网站天天婷婷网站 | 日日天天狠狠 | 中文字幕久久久精品 | 成人精品久久久 | 婷五月激情 | 久久精品女人毛片国产 | 精品中文字幕在线播放 | 亚洲日韩欧美视频 | 99免费观看视频 | 日韩av片免费在线观看 | 日韩99热 | 午夜精品一区二区三区在线 | 亚洲国产精品视频 | 国产精品久久久久久久久久99 | www.少妇 | 亚洲理论电影网 | 最新超碰在线 | 精品视频97 | 天天干,天天射,天天操,天天摸 | 国产小视频在线免费观看视频 | 18久久久久| 久久久国产精品免费 | 欧美二区三区91 | 在线观看一级 | 一区二区三区免费在线观看视频 | 亚洲国产精品va在线看 | 激情综合五月天 | 一区二区三区四区久久 | 日韩在线免费看 | 久久久999免费视频 日韩网站在线 | 久久精品中文字幕少妇 | 亚洲va韩国va欧美va精四季 | 日韩性色 | 91成人免费观看视频 | 一区 二区 精品 | 久久久在线 | 最近最新最好看中文视频 | 成人av播放| 看av免费| 在线观看91精品国产网站 | 97成人资源| 国产精品麻豆91 | 久久久精品免费观看 | 国产 视频 久久 | av福利在线播放 | 五月天天在线 | av福利超碰网站 | 久久久久久久国产精品影院 | 九九久久国产 | 91插插插网站 | 亚洲欧美视频在线 | 黄色一级大片在线观看 | 久久免费国产视频 | 久久久免费看片 | 国产精品永久免费 | 午夜精品视频一区 | 国产一级黄色片免费看 | 成人av动漫在线 | 91成人免费观看视频 | 黄色av电影 | 亚洲精品中文在线资源 | 91视频久久久久久 | 一级片黄色片网站 | 久久综合视频网 | 日韩黄在线观看 | 五月婷婷在线视频观看 | 一区二区三区精品久久久 | 亚洲播播 | 久久免费在线观看 | 韩日精品视频 | 中文乱码视频在线观看 | 日韩精品免费 | 久久国产精品免费一区二区三区 | 欧美日韩高清在线 | 国产麻豆精品久久一二三 | 成人av观看 | 欧美日韩aaaa | 日本精品视频免费 | 国产精品video爽爽爽爽 | 久久综合导航 | 国产日韩av在线 | 久久久久久久久久伊人 | 日韩久久午夜一级啪啪 | 成年人视频在线免费播放 | 日韩r级电影在线观看 | 国产成人免费在线观看 | 久久久久久久久国产 | 亚洲成人xxx | bayu135国产精品视频 | 日本视频久久久 | 国产在线精品国自产拍影院 | 日韩一级电影在线 | av成人在线观看 | 日韩久久久久久久久久 | av三级在线播放 | 亚洲资源在线 | 一级一片免费视频 | 国产一级二级三级视频 | 欧美 另类 交 | 成人不用播放器 | 国产 色 | 在线免费黄色片 | 天天操天天爱天天爽 | av3级在线 | www.干| 天天射,天天干 | www.五月天婷婷 | 色999在线 | 999久久久免费精品国产 | 亚洲综合小说 | 九九免费在线观看视频 | 亚洲日韩精品欧美一区二区 | 91 在线视频| 成人av在线网址 | 久久精品欧美 | 国产福利91精品一区 | 亚洲在线高清 | 色综合天天 | 久久久免费高清视频 | 中文字幕在线观看视频一区二区三区 | 黄色aaa级片 | 在线观看av黄色 | 成人黄色中文字幕 | 丝袜美腿在线视频 | 99久高清在线观看视频99精品热在线观看视频 | 在线免费观看国产黄色 | 国产精品久久久久aaaa | 免费看短 | 国产精品大全 | 91免费看片黄 | 六月丁香激情网 | 九九热.com | 亚洲国产大片 | 精品久久综合 | 成人xxxx| a在线播放| 国产一区二区视频在线播放 | 丝袜足交在线 | 九九久久电影 | 99爱国产精品| 精品国产一区二区三区在线观看 | 精品久久久久久久久久久久久久久久 | 成年美女黄网站色大片免费看 | 伊人狠狠 | 婷婷av资源 | 中文字幕免费观看全部电影 | 国产手机av在线 | 日韩精品一区二区三区丰满 | 你操综合 | av在线免费播放 | 精品久久久久免费极品大片 | 国产三级国产精品国产专区50 | 亚洲成人av免费 | 深爱五月网 | 国产精品一级在线 | 天天射天天干天天爽 | 亚洲国产精品一区二区久久hs | 色姑娘综合天天 | 国产黄色精品 | 九九热只有这里有精品 | 伊人久久一区 | 奇米网在线观看 | 国产经典三级 | 中文字幕电影在线 | 日韩电影中文字幕 | 欧美亚洲一级片 | 国产精品一区二区在线免费观看 | 色婷婷狠狠干 | 天天爽夜夜爽人人爽曰av | 久久这里只有精品久久 | 久久色亚洲 | 西西444www大胆高清视频 | 国产做aⅴ在线视频播放 | 久久精品视频观看 | 亚洲第一色 | 在线观看黄色的网站 | 国产伦理一区二区 | 久久精品波多野结衣 | 国产精品美女免费视频 | 99精品视频一区 | 国产视频97 | 久久精品免费电影 | 国产成人精品一区二区三区 | 免费毛片一区二区三区久久久 | 婷婷去俺也去六月色 | 精品国产视频在线 | www.天天干 | 91精品国产亚洲 | 亚洲涩涩网 | 亚洲欧美精品一区 | 人人dvd | 亚洲国产精品成人综合 | 99精品系列| 在线欧美小视频 | 成人羞羞视频在线观看免费 | 日韩理论在线视频 | 日韩免费在线视频观看 | 中文字幕电影高清在线观看 | 欧美 日韩 国产 成人 在线 | 国产破处在线视频 | 麻豆影视在线观看 | 伊人久在线 | 精品久久美女 | 在线观看的a站 | 有码一区二区三区 | 精品国产一二三四区 | 国产精品99视频 | 人人澡超碰碰 | 久久久综合香蕉尹人综合网 | 成人免费视频网址 | 国产精品永久免费 | 国产在线精品观看 | 亚洲黄色av | 午夜精品一区二区三区四区 | 99视频在线免费看 | 超碰人人91| 国产不卡在线播放 | 亚洲欧洲在线视频 | 久草在线免费在线观看 | 日韩高清久久 | 美女啪啪图片 | 91精品日韩 | 99产精品成人啪免费网站 | 国产精品美女久久久久久久 | 日日碰夜夜爽 | 99久久日韩精品免费热麻豆美女 | 久久只精品99品免费久23小说 | 最近日本字幕mv免费观看在线 | 亚洲精品88欧美一区二区 | 日韩精品久久久久 | 中文在线字幕免费观 | 青青草国产免费 | 92精品国产成人观看免费 | 伊人亚洲综合网 | 国产精品高| 久久久精品 一区二区三区 国产99视频在线观看 | 91麻豆精品国产91久久久久久 | 天天干,天天操 | 久久网站免费 | 黄色亚洲大片免费在线观看 | 免费av在线网 | 婷婷综合av| 国产精品日韩高清 | 国产麻豆精品久久 | 日韩高清免费无专码区 | 国产永久免费高清在线观看视频 | www.91国产| 欧美日韩精品在线观看视频 | 久久99视频精品 | 中文字幕日韩高清 | 五月天激情开心 | 中文字幕av专区 | 亚洲精品免费观看视频 | 久久综合九色综合久久久精品综合 | 国产99在线播放 | 日韩免费网站 | 97色在线观看 | 夜夜躁狠狠躁日日躁视频黑人 | 中文字幕欧美日韩va免费视频 | 五月婷婷丁香 | 欧美99热 | 岛国av在线不卡 | 狠狠色综合网站久久久久久久 | 久久黄色a级片 | 麻豆传媒视频观看 | 国产精品99久久久久久宅男 | 在线你懂的视频 | 国产91免费在线观看 | 日本中文字幕一二区观 | 色综合天天射 | 伊人久久在线观看 | 在线视频久久 | 日本精品视频在线观看 | 亚洲欧洲成人精品av97 | 色片网站在线观看 | 香蕉影视在线观看 | 福利视频一区二区 | 日韩v在线91成人自拍 | 91在线网址 | 免费观看一级 | 色在线免费 | 日韩理论片 | 亚洲精品免费在线 | 亚洲区另类春色综合小说校园片 | av中文字幕网址 | 久久夜色网 | 一区二区三区在线观看中文字幕 | 国产精品久久久久av福利动漫 | 91av在线不卡 | 日韩网站在线观看 | 精品久久久成人 | 免费亚洲视频在线观看 | 欧美成人性战久久 | 激情五月网站 | 91黄色在线观看 | 日韩欧美一区二区三区在线 | 97超碰在 | 亚洲综合日韩在线 | 九九免费在线观看视频 | 精品亚洲免费 | 日韩av中文字幕在线免费观看 | 黄色一级大片在线观看 | 中文字幕三区 | 婷婷黄色片| 中文字幕在线播放日韩 | 五月激情电影 | 免费成视频 | 日韩免费在线 | 亚洲午夜在线视频 | www.黄色片网站| www.色综合.com | 免费看网站在线 | 波多在线视频 | 亚洲毛片在线观看. | 狠狠搞,com| 中文字幕乱视频 | 国产精品久久久久久久久久久久久久 | 日韩乱色精品一区二区 | 日韩精品久久久久久久电影竹菊 | 亚州成人av在线 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 狠狠色噜噜狠狠狠合久 | 人人澡超碰碰97碰碰碰软件 | 97看片网| 人人操日日干 | 免费av网址在线观看 | 久久99精品久久久久蜜臀 | av在线播放免费 | 久久免费的精品国产v∧ | 激情综合网天天干 | av 在线观看| 婷婷综合五月天 | 国产精品成人自产拍在线观看 | 97中文字幕 | 国产成人一二三 | 久久久久久久久久免费 | 天天草综合 | 婷婷丁香色综合狠狠色 |