全域性事務服務(global transaction service,簡稱 gts)是一款高效能、高可靠、接入簡單的分布式事務中介軟體,用於解決分布式環境下的事務一致性問題。 在單機資料庫下很容易維持事務的 acid(atomicity、consistency、isolation、durability)特性,但在分布式系統中並不容易,gts 可以保證分布式系統中的分布式事務的 acid 特性。 gts 支援 drds、rds、mysql 等多種資料來源,可以配合 edas 和 dubbo 等微服務框架使用, 相容 mq 實現事務訊息。通過各種組合,可以輕鬆實現分布式資料庫事務、多庫事務、訊息事務、服務鏈路級事務等多種業務需求。
這是阿里雲官網對gts的介紹,官網也給了很多demo,我就拿其中的sample-txc-****** 來作個效能比較測試
訪問
2、建立資料庫
a. 建立兩個資料庫
b . 建表
sql如下
create table `user_money_a` (
`id` int(11) not null auto_increment,
`money` int(11) default null,
primary key (`id`)
) engine=innodb default charset=utf8;
create table `user_money_b` (
`id` int(11) not null auto_increment,
`money` int(11) default null,
primary key (`id`)
) engine=innodb default charset=utf8;
create table `txc_undo_log` (
`id` bigint(20) not null auto_increment comment '主鍵',
`gmt_create` datetime not null comment '建立時間',
`gmt_modified` datetime not null comment '修改時間',
`xid` varchar(100) not null comment '全域性事務id',
`branch_id` bigint(20) not null comment '分支事務id',
`rollback_info` longblob not null comment 'log',
`status` int(11) not null comment '狀態',
`server` varchar(32) not null comment '分支所在db ip',
primary key (`id`),
key `unionkey` (`xid`,`branch_id`)
) engine=innodb auto_increment=211225994 default charset=utf8 comment='事務日誌表';
結果如下
3、修改配製檔案
注意:本地除錯時,一定要選擇公網測試的配製
4、增加標記**
5、進行四組測試
測試結果如下
有事務有錯誤
有事務無錯誤
無事務有錯誤
無事務無錯誤
執行時間(毫秒)
11335
8277
1586
1500
從上面測試結果綜合分析可以看出,
當程式出錯 時,有事務的效能要慢7倍左右
當程式不出錯時,有事務的效能要慢5倍左右
我是在本地進行測試,如果放在複雜的線上環境,預計結果偏差可能更大!
簡談python中的 call
最近在思考 call 和類方法的使用場景,雖然功能會有重疊,但凡存在的必是合理的,肯定會有輕微的不同,看了django以及部分框架的設計原始碼,各有各的設計風格,本著功能邊界的看法,所以做個總結。classa def init self,a,b self.a a self.b b defdo sta...
Vim 編輯器的使用簡談
1.建立檔案 vi 檔名 表示開啟或者建立乙個檔案,如果建立乙個檔案之後,但是什麼也沒寫就退出的話這個檔案不會被建立 1.命令模式 可以支援很多的命令 a,進入編輯模式,游標右移一位 i,進入編輯模式,游標不動 o,進入編輯模式,游標移動到下一行 進入底行模式 yw,拷貝乙個單詞 yy,拷貝一行 n...
簡談scala 中的val 與 var
斷斷續續學習scala也有一段時間了,初期總對val 與var 的理解不太透徹,今天來做做總結。一般都知道val 表示不可變,var表示可變,比如 val s hello s world 錯誤,不能對val重新賦值 var i 1 i 2 沒有問題 但是在碰到可變與不可變資料結構的時候,容易造成迷惑...