京东面试官:呦,你对中间件 Mycat了解的还挺深~
1.數(shù)據(jù)切分概念
數(shù)據(jù)的切分[(Sharding)]根據(jù)其切分規(guī)則的類型,可以分為兩種切分模式。一種是按照不同的表(或者Schema)來(lái)切分到不同的數(shù)據(jù)庫(kù)(主機(jī)))之上,這種切可以稱之為數(shù)據(jù)的垂直(縱向)切分;另外一則是根據(jù)表中的數(shù)據(jù)的邏輯關(guān)系,將同一個(gè)表中的數(shù)據(jù)按照某種條件拆分到多臺(tái)數(shù)據(jù)庫(kù)(主機(jī))上面,這種切分稱之為數(shù)據(jù)的水平([橫向])切分。 垂直切分的最大特點(diǎn)就是規(guī)則簡(jiǎn)單,實(shí)施也更為方便,尤其適合各業(yè)務(wù)之間的耦合度非常低,相互影響很小,業(yè)務(wù)邏輯非常清晰的系統(tǒng)。在這種系統(tǒng)中,可以很容易做到將不同業(yè)務(wù)模塊所使用的表分拆到不同的數(shù)據(jù)庫(kù)中。根據(jù)不同的表來(lái)進(jìn)行拆分,對(duì)應(yīng)用程序的影響也更小,拆分規(guī)則也會(huì)比較簡(jiǎn)單清晰。 水平切分于垂直切分相比,相對(duì)來(lái)說(shuō)稍微復(fù)雜一些。因?yàn)橐獙⑼粋€(gè)表中的不同數(shù)據(jù)拆分到不同的數(shù)據(jù)庫(kù)中,對(duì)于應(yīng)用程序來(lái)說(shuō),拆分規(guī)則本身就較根據(jù)表名來(lái)拆分更為復(fù)雜,后期的數(shù)據(jù)維護(hù)也會(huì)更為復(fù)雜一些。
垂直切分
一個(gè)數(shù)據(jù)庫(kù)由很多表的構(gòu)成,每個(gè)表對(duì)應(yīng)著不同的業(yè)務(wù),垂直切分是指按照業(yè)務(wù)將表進(jìn)行分類,分布到
不同 的數(shù)據(jù)庫(kù)上面,這樣也就將數(shù)據(jù)或者說(shuō)壓力分擔(dān)到不同的庫(kù)上面,如下圖:
一般來(lái)講業(yè)務(wù)存在著復(fù)雜 join 的場(chǎng)景是難以切分的,往往業(yè)務(wù)獨(dú)立的易于切分。如何切分,切分到何種程度是考驗(yàn)技術(shù)架構(gòu)的一個(gè)難題。 下面來(lái)分析下垂直切分的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
- 拆分后業(yè)務(wù)清晰,拆分規(guī)則明確。
- 系統(tǒng)之間整合或擴(kuò)展容易。
- 數(shù)據(jù)維護(hù)簡(jiǎn)單。
缺點(diǎn):
- 部分業(yè)務(wù)表無(wú)法 join,只能通過(guò)接口方式解決,提高了系統(tǒng)復(fù)雜度。
- 受每種業(yè)務(wù)不同的限制存在單庫(kù)性能瓶頸,不易數(shù)據(jù)擴(kuò)展跟性能提高。
- 事務(wù)處理復(fù)雜。 由于垂直切分是按照業(yè)務(wù)的分類將表分散到不同的庫(kù),所以有些業(yè)務(wù)表會(huì)過(guò)于龐大,存在單庫(kù)讀寫與存儲(chǔ)瓶頸,所以就需要水平拆分來(lái)做解決。
水平切分
相對(duì)于垂直拆分,水平拆分不是將表做分類,而是按照某個(gè)字段的某種規(guī)則來(lái)分散到多個(gè)庫(kù)之中,每個(gè)表中包含一部分?jǐn)?shù)據(jù)。簡(jiǎn)單來(lái)說(shuō),我們可以將數(shù)據(jù)的水平切分理解為是按照數(shù)據(jù)行的切分,就是將表中的某些行切分到一個(gè)數(shù)據(jù)庫(kù),而另外的某些行又切分到其他的數(shù)據(jù)庫(kù)中,如圖:
拆分?jǐn)?shù)據(jù)就需要定義分片規(guī)則。關(guān)系型數(shù)據(jù)庫(kù)是行列的二維模型,拆分的第一原則是找到拆分維度。幾種典型的分片規(guī)則包括: ? 按照用戶 ID 求模,將數(shù)據(jù)分散到不同的數(shù)據(jù)庫(kù),具有相同數(shù)據(jù)用戶的數(shù)據(jù)都被分散到一個(gè)庫(kù)中。 ? 按照日期,將不同月甚至日的數(shù)據(jù)分散到不同的庫(kù)中。 ? 按照某個(gè)特定的字段求摸,或者根據(jù)特定范圍段分散到不同的庫(kù)中。
優(yōu)點(diǎn):
- 拆分規(guī)則抽象好,join 操作基本可以數(shù)據(jù)庫(kù)做。
- 不存在單庫(kù)大數(shù)據(jù),高并發(fā)的性能瓶頸。
- 應(yīng)用端改造較少。
- 提高了系統(tǒng)的穩(wěn)定性跟負(fù)載能力。
缺點(diǎn):
- 拆分規(guī)則難以抽象。
- 分片事務(wù)一致性難以解決。
- 數(shù)據(jù)多次擴(kuò)展難度跟維護(hù)量極大。
- 跨庫(kù) join 性能較差。
垂直切分和水平切分都有缺點(diǎn),但共同的缺點(diǎn)有:
- 引入分布式事務(wù)的問(wèn)題。
- 跨節(jié)點(diǎn) Join 的問(wèn)題。
- 跨節(jié)點(diǎn)合并排序分頁(yè)問(wèn)題。
- 多數(shù)據(jù)源管理問(wèn)題。
針對(duì)數(shù)據(jù)源管理,目前主要有兩種思路:
-
A. 客戶端模式,在每個(gè)應(yīng)用程序模塊中配置管理自己需要的一個(gè)(或者多個(gè))數(shù)據(jù)源,直接訪問(wèn)各個(gè)數(shù)據(jù) 庫(kù),在模塊內(nèi)完成數(shù)據(jù)的整合;
-
B. 通過(guò)中間代理層來(lái)統(tǒng)一管理所有的數(shù)據(jù)源,后端數(shù)據(jù)庫(kù)集群對(duì)前端應(yīng)用程序透明;
集中式代理 proxy mycat
嵌入應(yīng)用去中心化架構(gòu) sharding-jdbc
基于主機(jī)進(jìn)程的去中心化架構(gòu) sharding-sidecar service mesh
數(shù)據(jù)切分原則
第一原則:能不切分盡量不要切分。
第二原則:如果要切分一定要選擇合適的切分規(guī)則,提前規(guī)劃好。
第三原則:數(shù)據(jù)切分盡量通過(guò)數(shù)據(jù)冗余或表分組來(lái)降低跨庫(kù) Join 的可能。
第四原則:由于數(shù)據(jù)庫(kù)中間件對(duì)數(shù)據(jù) Join 實(shí)現(xiàn)的優(yōu)劣難以把握,而且實(shí)現(xiàn)高性能難度極大,業(yè)務(wù)讀取盡量 少使用多表 Join。
2.什么是Mycat
定義
- 一個(gè)徹底開(kāi)源的,面向企業(yè)應(yīng)用開(kāi)發(fā)的大數(shù)據(jù)庫(kù)集群
- 支持事務(wù)、ACID、可以替代MySQL的加強(qiáng)版數(shù)據(jù)庫(kù)
- 一個(gè)可以視為MySQL集群的企業(yè)級(jí)數(shù)據(jù)庫(kù),用來(lái)替代昂貴的Oracle集群
- 一個(gè)融合內(nèi)存緩存技術(shù)、NoSQL技術(shù)、HDFS大數(shù)據(jù)的新型SQL Server
- 結(jié)合傳統(tǒng)數(shù)據(jù)庫(kù)和新型分布式數(shù)據(jù)倉(cāng)庫(kù)的新一代企業(yè)級(jí)數(shù)據(jù)庫(kù)產(chǎn)品
- 一個(gè)新穎的數(shù)據(jù)庫(kù)中間件產(chǎn)品
跨分片數(shù)據(jù)合并
應(yīng)用場(chǎng)景
Mycat 發(fā)展到現(xiàn)在,適用的場(chǎng)景已經(jīng)很豐富,而且不斷有新用戶給出新的創(chuàng)新性的方案,以下是幾個(gè)典
型的 應(yīng)用場(chǎng)景:
單純的讀寫分離,此時(shí)配置最為簡(jiǎn)單,支持讀寫分離,主從切換
分表分庫(kù),對(duì)于超過(guò) 1000 萬(wàn)的表進(jìn)行分片,最大支持 1000 億的單表分片
多租戶應(yīng)用,每個(gè)應(yīng)用一個(gè)庫(kù),但應(yīng)用程序只連接 Mycat,從而不改造程序本身,實(shí)現(xiàn)多租戶化
報(bào)表系統(tǒng),借助于 Mycat的分表能力,處理大規(guī)模報(bào)表的統(tǒng)計(jì)
替代 Hbase,分析大數(shù)據(jù)
作為海量數(shù)據(jù)實(shí)時(shí)查詢的一種簡(jiǎn)單有效方案,比如 100 億條頻繁查詢的記錄需要在 3 秒內(nèi)查詢出來(lái)結(jié)果, 除了基于主鍵的查詢,還可能存在范圍查詢或其他屬性查詢,此時(shí) Mycat 可能是最簡(jiǎn)單有效的選擇
3.Mycat中的核心概念及配置
核心概念
數(shù)據(jù)庫(kù)中間件
Mycat 是數(shù)據(jù)庫(kù)中間件,就是介于數(shù)據(jù)庫(kù)與應(yīng)用之間,進(jìn)行數(shù)據(jù)處理與交互的中間服務(wù)。
邏輯庫(kù)(schema)
通常對(duì)實(shí)際應(yīng)用來(lái)說(shuō),并不需要知道中間件的存在,業(yè)務(wù)開(kāi)發(fā)人員只需要知道數(shù)據(jù)庫(kù)的概念,所以
數(shù)據(jù)庫(kù)中間件可以被看做是一個(gè)或多個(gè)數(shù)據(jù)庫(kù)集群構(gòu)成的邏輯庫(kù)
邏輯表(table)
邏輯表,可以是數(shù)據(jù)切分后,分布在一個(gè)或多個(gè)分片庫(kù)中,也可以不做數(shù)據(jù)切分,不分片,只有一
個(gè)表構(gòu)成。
分片表 分片表,是指那些原有的很大數(shù)據(jù)的表,需要切分到多個(gè)數(shù)據(jù)庫(kù)的表,這樣,每個(gè)分
片都有一部分?jǐn)?shù)據(jù),所有分片構(gòu)成了完整的數(shù)據(jù)。 例如在 mycat 配置中的 t_node 就屬于分
片表,數(shù)據(jù)按照規(guī)則被分到 dn1,dn2 兩個(gè)分片節(jié)點(diǎn)(dataNode) 上。
非分片表
一個(gè)數(shù)據(jù)庫(kù)中并不是所有的表都很大,某些表是可以不用進(jìn)行切分的,非分片是相對(duì)分片表
來(lái)說(shuō)的,就是那些不需要進(jìn)行數(shù)據(jù)切分的表。
如下配置中 t_node,只存在于分片節(jié)點(diǎn)(dataNode)dn1 上。
分片節(jié)點(diǎn)(dataNode)
數(shù)據(jù)切分后,一個(gè)大表被分到不同的分片數(shù)據(jù)庫(kù)上面,每個(gè)表分片所在的數(shù)據(jù)庫(kù)就是分片節(jié)
(dataNode)
節(jié)點(diǎn)主機(jī)(dataHost) 數(shù)據(jù)切分后,每個(gè)分片節(jié)點(diǎn)(dataNode)不一定都會(huì)獨(dú)占一臺(tái)機(jī)器,同一機(jī)
器上面可以有多個(gè)分片數(shù)據(jù)庫(kù), 這樣一個(gè)或多個(gè)分片節(jié)點(diǎn)(dataNode)所在的機(jī)器就是節(jié)點(diǎn)主機(jī)
(dataHost),為了規(guī)避單節(jié)點(diǎn)主機(jī)并發(fā)數(shù)限 制,盡量將讀寫壓力高的分片節(jié)點(diǎn)(dataNode)均
衡的放在不同的節(jié)點(diǎn)主機(jī)(dataHost)。
分片規(guī)則(rule)
一個(gè)大表被分成若干個(gè)分片表,就需要一定的規(guī)則,這樣按照某種業(yè)務(wù)規(guī)則把數(shù)據(jù)分到 某個(gè)分片
的規(guī)則就是分片規(guī)則,數(shù)據(jù)切分選擇合適的分片規(guī)則非常重要,將極大的避免后續(xù)數(shù)據(jù)處理的難
度。
全局序列號(hào)(sequence)
數(shù)據(jù)切分后,原有的關(guān)系數(shù)據(jù)庫(kù)中的主鍵約束在分布式條件下將無(wú)法使用,因此需要引入外部機(jī)制
保證數(shù)據(jù) 唯一性標(biāo)識(shí),這種保證全局性的數(shù)據(jù)唯一標(biāo)識(shí)的機(jī)制就是全局序列號(hào)(sequence)。
安裝與配置
基于源碼
-
MyCAT-Server 源碼下載 MyCAT-Server 倉(cāng)庫(kù)地址
-
源碼調(diào)試與配置 MyCAT 目前主要通過(guò)配置文件的方式來(lái)定義邏輯庫(kù)和相關(guān)配置: ?MYCAT_HOME/conf/schema.xml 中定義邏輯庫(kù),表、分片節(jié)點(diǎn)等內(nèi)容.
-
?MYCAT_HOME/conf/rule.xml 中定義分片規(guī)則.
-
? MYCAT_HOME/conf/server.xml 中定義用戶以及系統(tǒng)相關(guān)變量,如端口等.
-
源碼運(yùn)行 MyCAT 入口程序是 org.opencloudb.MycatStartup.java ,需要設(shè)置MYCAT_HOME 目
錄,為你工程當(dāng)前所在目錄(src/main) , 設(shè)置完 MYCAT 主目錄后即可正常運(yùn)行 MyCAT 服務(wù)。
](https://jq.qq.com/?_wv=1027&k=0IsBuUb0)
linux安裝
下載
wget http://dl.mycat.io/1.6.7.3/20190927161129/Mycat-server-1.6.7.3-release- 20190927161129-linux.tar.gz #解壓進(jìn)入mycat目錄 #啟動(dòng)mycat ./bin/mycat start #停止 ./bin/mycat stop #重啟服務(wù) ./bin/mycat restart #查看啟動(dòng)狀態(tài) ./bin/mycat statusconf 目錄下存放配置文件,server.xml 是 Mycat 服務(wù)器參數(shù)調(diào)整和用戶授權(quán)的配置文件,schema.xml 是邏 輯庫(kù)定義和表以及分片定義的配置文件,rule.xml 是分片規(guī)則的配置文件,分片規(guī)則的具體一些參數(shù)信息單獨(dú)存 放為文件
4. MyCat配置
- bin 啟動(dòng)目錄
- conf 配置目錄存放配置文件:
- server.xml:是Mycat服務(wù)器參數(shù)調(diào)整和用戶授權(quán)的配置文件。
- schema.xml:是邏輯庫(kù)定義和表以及分片定義的配置文件。
- rule.xml: 是分片規(guī)則的配置文件,分片規(guī)則的具體一些參數(shù)信息單獨(dú)存放為文件,也在這個(gè)目錄
下,配置文件修改需要重啟MyCAT。 - log4j.xml: 日志存放在logs/log中,每天一個(gè)文件,日志的配置是在conf/log4j.xml中,根據(jù)
自己的需要可以調(diào)整輸出級(jí)別為debug debug級(jí)別下,會(huì)輸出更多的信
息,方便排查問(wèn)題。 - autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties,
- sequence_db_conf.properties 分片相關(guān)的id分片規(guī)則配置文件
- lib MyCAT自身的jar包或依賴的jar包的存放目錄。
- logs MyCAT日志的存放目錄。日志存放在logs/log中,每天一個(gè)文件
下面圖片描述了Mycat最重要的3大配置文件:
配置Mycat環(huán)境參數(shù)
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://org.opencloudb/"><system><property name="defaultSqlParser">druidparser</property></system> </mycat:server>如例子中配置的所有的Mycat參數(shù)變量都是配置在server.xml 文件中,system標(biāo)簽下配置所有的參數(shù),如果需要配置某個(gè)變量添加相應(yīng)的配置即可,例如添加啟動(dòng)端口8066,默認(rèn)為8066:
<property name="serverPort">8066</property>其他所有變量類似。
配置Mycat邏輯庫(kù)與用戶
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://org.opencloudb/"> <user name="mycat"> <property name="password">mycat</property> <property name="schemas">TESTDB</property> </user> </mycat:server>如例子中配置的所有的Mycat連接的用戶與邏輯庫(kù)映射都是配置在server.xml 文件中,user標(biāo)簽下配置所有的參數(shù),例如例子中配置了一個(gè)mycat用戶供應(yīng)用連接到mycat,同時(shí)mycat 在schema.xml中配置后了一個(gè)邏輯庫(kù)TESTDB,配置好邏輯庫(kù)與用戶的映射關(guān)系。【參考文獻(xiàn)】
配置邏輯庫(kù)(schema)
Mycat作為一個(gè)中間件,實(shí)現(xiàn)mysql協(xié)議,那么對(duì)前端應(yīng)用連接來(lái)說(shuō)就是一個(gè)數(shù)據(jù)庫(kù),也就有數(shù)據(jù)庫(kù)的配置,mycat的數(shù)據(jù)庫(kù)配置是在schema.xml中配置,配置好后映射到server.xml里面的用戶就可以了。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://org.opencloudb/"><schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"><table name="t_user" dataNode="dn1,dn2" rule="sharding-by-mod2"/><table name="ht_jy_login_log" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-date_jylog"/></schema><dataNode name="dn1" dataHost="localhost1" database="mycat_node1"/><dataNode name="dn2" dataHost="localhost1" database="mycat_node2"/><dataHost name="localhost1" writeType="0" switchType="1" slaveThreshold="100" balance="1" dbType="mysql" maxCon="10" minCon="1" dbDriver="native"><heartbeat>show status like 'wsrep%'</heartbeat><writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="root" ></writeHost> </dataHost> </mycat:schema >上面例子配置了一個(gè)邏輯庫(kù)TESTDB,同時(shí)配置了t_user,ht_jy_login_log兩個(gè)分片表。
邏輯表配置
<table name="t_user" dataNode="dn1,dn2" rule="sharding-by-mod2"/>table 標(biāo)簽 是邏輯表的配置 其中
name代表表名,
dataNode代表表對(duì)應(yīng)的分片,
Mycat默認(rèn)采用分庫(kù)方式,也就是一個(gè)表映射到不同的庫(kù)上,
rule代表表要采用的數(shù)據(jù)切分方式,名稱對(duì)應(yīng)到rule.xml中的對(duì)應(yīng)配置,如果要分片必須配置。
配置分片(dataNode)
<dataNode name="dn1" dataHost="localhost1" database="mycat_node1"/><dataNode name="dn2" dataHost="localhost1" database="mycat_node2"/>表切分后需要配置映射到哪幾個(gè)數(shù)據(jù)庫(kù)中,Mycat的分片實(shí)際上就是庫(kù)的別名,例如上面例子配置了兩個(gè)分片dn1,dn2 分別對(duì)應(yīng)到物理機(jī)映射dataHost localhost1 的兩個(gè)庫(kù)上。
配置物理庫(kù)分片映射(dataHost)
<dataHost name="localhost1" writeType="0" switchType="1" slaveThreshold="100" balance="1" dbType="mysql" maxCon="10" minCon="1" dbDriver="native"><heartbeat>show status like 'wsrep%'</heartbeat><writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="root" ></writeHost> </dataHost>Mycat作為數(shù)據(jù)庫(kù)代理需要邏輯庫(kù),邏輯用戶,表切分后需要配置分片,分片也就需要映射到真實(shí)的物理主機(jī)上,至于是映射到一臺(tái)還是一臺(tái)的多個(gè)實(shí)例上,Mycat并不關(guān)心,只需要配置好映射即可,例如例子中:
配置了一個(gè)名為localhost1的物理主機(jī)(dataHost)映射。
heartbeat 標(biāo)簽代表Mycat需要對(duì)物理庫(kù)心跳檢測(cè)的語(yǔ)句,正常情況下生產(chǎn)案例可能配置主從,或者多寫 或者單庫(kù),無(wú)論哪種情況Mycat都需要維持到數(shù)據(jù)庫(kù)的數(shù)據(jù)源連接,因此需要定時(shí)檢查后端連接可以性,心跳語(yǔ)句就是來(lái)作為心跳檢測(cè)。
writeHost 此標(biāo)簽代表 一個(gè)邏輯主機(jī)(dataHost)對(duì)應(yīng)的后端的物理主機(jī)映射,例如例子中寫庫(kù)hostM1 映射到127.0.0.1:3306。如果后端需要做讀寫分離或者多寫 或者主從則通過(guò)配置 多個(gè)writeHost 或者readHost即可。
dataHost 標(biāo)簽中的 writeType balance 等標(biāo)簽則是不同的策略,具體參考指南。
表切分規(guī)則配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:rule SYSTEM "rule.dtd"> <mycat:rule xmlns:mycat="http://org.opencloudb/"><tableRule name="sharding-by-hour"><rule><columns>createTime</columns><algorithm>sharding-by-hour</algorithm></rule></tableRule><function name="sharding-by-hour" class="org.opencloudb.route.function.LatestMonthPartion"><property name="splitOneDay">24</property></function> </mycat:rule >數(shù)據(jù)切分中作為表切分規(guī)則中最重要的配置,表的切分方式?jīng)Q定了數(shù)據(jù)切分后的性能好壞,因此也是最重要的配置。
如上面例子配置了一個(gè)切分規(guī)則,名為sharding-by-hour 對(duì)應(yīng)的切分方式(function )是按日期切
分,該配置中:
tableRule
name 為schema.xml 中table 標(biāo)簽中對(duì)應(yīng)的 rule=“sharding-by-hour” ,也就是配置表的分片規(guī)則,columns 是表的切分字段: createTime 創(chuàng)建日期。algorithm 是規(guī)則對(duì)應(yīng)的切分規(guī)則:映射到function 的name。
function
function 配置是分片規(guī)則的配置。
name 為切分規(guī)則的名稱,名字任意取,但是需要與tableRule 中匹配。
class 是切分規(guī)則對(duì)應(yīng)的切分類,寫死,需要哪種規(guī)則則配置哪種,例如本例子是按小時(shí)分片:org.opencloudb.route.function.LatestMonthPartion
property 標(biāo)簽是切分規(guī)則對(duì)應(yīng)的不同屬性,不同的切分規(guī)則配置不同。【參考文獻(xiàn)】
5.Mycat讀寫分離實(shí)戰(zhàn)
Mysql同步原理
Mysql同步方案
docker配置
讀寫分離配置
配置 mysql 端主從的數(shù)據(jù)自動(dòng)同步,mycat 不負(fù)責(zé)任何的數(shù)據(jù)同步問(wèn)題
配置schema.xml
6.Mycat 全局序列號(hào)
本地文件方式
配置schema.xml
編輯 server.xml
修改主鍵生成策略 <property name="sequnceHandlerType">0</property>編輯sequence_conf.properties
#TRAVELRECORD 是表名稱 #HISIDS 表示歷史分段(一般無(wú)特殊需要?jiǎng)t可以不配置) #MINID 最小id #MAXID 最大id #CURID 當(dāng)前id TRAVELRECORD.HISIDS= TRAVELRECORD.MINID=10001 TRAVELRECORD.MAXID=20000 TRAVELRECORD.CURID=10000本地時(shí)間戳方式
ID= 64 位二進(jìn)制 (42(毫秒)+5(機(jī)器 ID)+5(業(yè)務(wù)編碼)+12(重復(fù)累加)
配置schema.xml
在 mycat 下配置:sequence_time_conf.properties
WORKID=0-31 #任意整數(shù) DATAACENTERID=0-31 #任意整數(shù)多個(gè)個(gè) mycat 節(jié)點(diǎn)下每個(gè) mycat 配置的 WORKID,DATAACENTERID 不同,組成唯一標(biāo)識(shí),總共支持32*32=1024 種組合。
多個(gè)個(gè) mycat 節(jié)點(diǎn)下每個(gè) mycat 配置的 WORKID,DATAACENTERID 不同,組成唯一標(biāo)識(shí),總共支持32*32=1024 種組合。
最后,祝大家早日學(xué)有所成,拿到滿意offer
總結(jié)
以上是生活随笔為你收集整理的京东面试官:呦,你对中间件 Mycat了解的还挺深~的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 现在房贷利率下调了以前买的房子怎么办?
- 下一篇: 面试官问:你做过什么Java线程池实践,