返回顶部
首页 > 资讯 > 数据库 >如何理解MySQL中GTID和自增列的数据测试
  • 802
分享到

如何理解MySQL中GTID和自增列的数据测试

2024-04-02 19:04:59 802人浏览 泡泡鱼
摘要

今天就跟大家聊聊有关如何理解Mysql中GTID和自增列的数据测试,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。   昨天的一篇文章,今

今天就跟大家聊聊有关如何理解Mysql中GTID和自增列的数据测试,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

  昨天的一篇文章,今天有不少网友向我确认一些细节,我想最近正好在看GTID的东西,可以揉在一起来说说。

   GTID这个概念看似简单,实际上还是有不少的门道。

我们来从架构的设计角度来看看存在哪些场景需要考虑GTID的变化。  

一主两从的架构模式下GTID的变化

  我们就以一主两从的架构为基准进行阐述。在这个架构模式下我们会用到MHA的方案。

   如何理解MySQL中GTID和自增列的数据测试

如果这个时候Master节点宕机了,MHA就会开启检查机制。

如何理解MySQL中GTID和自增列的数据测试

这个时候Slave 1节点就会变为新的Master,Slave 2会从Slave 1上重新应用数据变更,这个时候GTID是怎么变化的,从库的Executed GTID Set到底是一个还是两个。

如何理解MySQL中GTID和自增列的数据测试

这个场景继续往下延伸。如果宕机的主库启动之后,假设是硬件问题,比如电源故障灯原因,Master节点启动了,那么Master节点的重新加入主从环境中GTID是如何变化的。这样就是下面的架构图了。

如何理解MySQL中GTID和自增列的数据测试

而我们把这个问题继续细化,那就是和自增列值的问题结合起来。看看在这种场景下,mysql的实现方式是否会出现数据不一致,无法复制的情况。两者结合起来算是一个相对完整的测试场景了。当然我要标记为第一篇,因为还会有第二篇出来。

 我们看看如何操作。

一主两从的架构模式下GTID的实践

一主两从我们标识为主(Master节点),从库1(Slave 1),从库2 (Slave 2),大体的测试步骤如下:

  1. 初始化一主两从

  2. Master节点初始化数据,测试自增列值

  3. 配置MHA,Master节点宕机

  4. MHA切换,Slave 1节点升为主库,Slave 2节点为从库

  5. Master节点启动

  6. Master节点加入主从复制环境

步骤1:初始化,得到一主两从的GTID情况

步骤1相对简单,可以使用sandbox或者是快速脚本的方式搭建。

搭建完成后,先来看看Gtid的情况。

mysql> show master status\G
*************************** 1. row ***************************
             File: binlog.000001
         Position: 1475
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: 4f7b0b93-2400-11e7-99cb-782bcb377193:1-7
查看server_uuid的情况如下:

mysql> show global variables like 'server_uuid%';
+----------------+--------------------------------------+
| Variable_name  | Value                                |
+----------------+--------------------------------------+
| server_uuid    | 4f7b0b93-2400-11e7-99cb-782bcb377193
+----------------+--------------------------------------+
3 rows in set (0.01 sec)我们后续的测试都会参考这个值。

Slave 1节点的情况如下,和Master节点的server_uuid明显不同。这个信息可以在初始化的目录auto.cnf可以得到。

mysql> show global variables like 'server%';
+----------------+--------------------------------------+
| Variable_name  | Value                                |
+----------------+--------------------------------------+
| server_id      | 24802                                |
| server_id_bits | 32                                   |
| server_uuid    | 5433468e-2400-11e7-a834-782bcb377193
+----------------+--------------------------------------+查看master status的信息如下,这一点可以看出是和Master节点的Gtid Set值相同,证明这个Gtid的值是一个唯一性标识,当然从GTID的全称就是全局事务标识。

mysql> show master status\G
*************************** 1. row ***************************
             File: binlog.000001
         Position: 438
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: 4f7b0b93-2400-11e7-99cb-782bcb377193:1-7
1 row in set (0.00 sec)我们来看看show slave status的结果。
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.127.128.78
                  Master_User: rpl_user
。。。           
           Retrieved_Gtid_Set: 4f7b0b93-2400-11e7-99cb-782bcb377193:6-7
            Executed_Gtid_Set: 4f7b0b93-2400-11e7-99cb-782bcb377193:1-7
。。。
1 row in set (0.00 sec)

步骤2:初始化Master节点,测试自增列问题

步骤2我们来初始化一下Master节点。就创建一个数据库test
create database test;Slave 1节点的情况如下,可以看到末尾的事务ID序号开始增加。
mysql> show master status\G
*************************** 1. row ***************************
             File: binlog.000001
         Position: 589
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: 4f7b0b93-2400-11e7-99cb-782bcb377193:1-8下面的初始化就是关键了,我们会测试自增列的情况,来复现一个经典问题。创建一个表t1,然后插入3条记录。
mysql>  drop table if exists t1;
mysql> create table t1(id int auto_increment, a int, primary key (id)) engine=innodb;
mysql> insert into t1 values (1,2);
mysql> insert into t1 values (null,2);
mysql> insert into t1 values (null,2);
mysql> select *from t1;
+----+------+
| id | a    |
+----+------+
|  1 |    2 |
|  2 |    2 |
|  3 |    2 |
+----+------+毫无疑问,这个时候自增列的值是4.

mysql> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1在Slave 1节点和Slave 2节点得到的数据情况是一致的,都是4
然后我们做下面的变更,删除表中id=3的值。这个情况也很容易理解,那就是自增列不会变化。

mysql> delete from t1 where id=3;
mysql> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
Slave 1节点和Slave 2节点也是如此,自增列值都是4

步骤3:配置MHA,Master节点宕机

这个步骤可以参考 sandbox和MHA快速测试(r12笔记第32天),对MHA的配置有一个基本的介绍,可以使用如下的两个脚本来做基本的检验,app1.cnf就是基础的配置文件。内容大体如下:

[server default]
manager_workdir=/home/mha/manager
manager_log=/home/mha/manager/app1/manager.log
port=24801   -指定的端口
user=mha_test
passWord=mha_test  --需要提前创建
repl_user=rpl_user
repl_password=rpl_pass
master_ip_failover_script= /home/mha/conf/master_ip_failover2
# shutdown_script= /script/masterha/power_manager
# report_script= /script/masterha/send_report
# master_ip_online_change_script= /script/masterha/master_ip_online_change

[server1]
hostname=10.127.128.78
port=24801
candidate_master=1

[server2]
hostname=10.127.128.78
candidate_master=1
port=24802

[server3]
hostname=10.127.128.78
candidate_master=1
port=24803ssh的互信检查。

# masterha_check_ssh  --conf=app1.cnf主从复制的检查。

# masterha_check_repl  --conf=app1.cnf  
检查无误后,我们启动MHA manager服务。

nohup masterha_manager --conf=/home/mha/conf/app1.cnf  > /tmp/mha_manager.log 2>&1 &
然后我们查到对应的进程号,直接Kill即可。

[root@grtest app1]# ps -ef|grep 24801
mysql     2168  1918  0 14:29 pts/7    00:00:00 /usr/local/mysql/bin/mysqld --defaults-file=/home/data/s1/s1.cnf --basedir=/usr/local/mysql_5.7.17 --datadir=/home/data/s1 --plugin-dir=/usr/local/mysql_5.7.17/lib/plugin --user=mysql --log-error=/home/data/s1/grtest.err --pid-file=/home/data/s1/grtest.pid --Socket=/home/data/s1/s1.sock --port=24801
root      3623 12108  0 14:40 pts/7    00:00:00 grep 24801
[root@grtest app1]# kill -9 1918 2168我们简单描述一下,Master节点杀掉后,主库的表t1的自增列值如果启动之后就会是3,即上一次的max(id)+1开始计算。而从库的自增列值为4,这个该怎么平衡呢?

步骤4:MHA切换,Slave1节点为主库

整个切换的过程是自动完成的,MHA会检测心跳,然后自动开始切换主从复制关系。整个过程GTID就是一个需要注意的地方。
Started automated(non-interactive) failover.
Invalidated master IP address on 10.127.128.78(10.127.128.78:24801)
Selected 10.127.128.78(10.127.128.78:24802) as a new master.
10.127.128.78(10.127.128.78:24802): OK: Applying all logs succeeded.
10.127.128.78(10.127.128.78:24802): OK: Activated master IP address.
10.127.128.78(10.127.128.78:24803): OK: Slave started, replicating from 10.127.128.78(10.127.128.78:24802)
10.127.128.78(10.127.128.78:24802): Resetting slave info succeeded.
Master failover to 10.127.128.78(10.127.128.78:24802) completed successfully.于是Slave 1节点就正式接管环境。

查看新主库Slave 1节点的信息如下,这个GTID还是原来Master节点的。

mysql> show master status\G
*************************** 1. row ***************************
             File: binlog.000001
         Position: 1895
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: 4f7b0b93-2400-11e7-99cb-782bcb377193:1-14server_uuid的部分还是原来的设置。

mysql> show global variables like 'server%';
+----------------+--------------------------------------+
| Variable_name  | Value                                |
+----------------+--------------------------------------+
| server_id      | 24802                                |
| server_id_bits | 32                                   |
| server_uuid    | 5433468e-2400-11e7-a834-782bcb377193 |
+----------------+--------------------------------------+这个地方需要关注,那就是查看自增列的情况,因为原来是从库,所以得到的最新值为4.

mysql> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1在这种情况下Slave 2节点就会重新调整复制关系,
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.127.128.78
                  Master_User: rpl_user
                  Master_Port: 24802
。。。
           Retrieved_Gtid_Set:
            Executed_Gtid_Set: 4f7b0b93-2400-11e7-99cb-782bcb377193:1-14
                Auto_Position: 1
。。。
查看自增列的情况如下:
mysql> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
这里可能会有些疑惑,而且对于GTID的理解会有一些误差,我们在Slave 1节点上插入一行数据。
mysql> insert into t1 values(null,2);这个时候查看自增列的情况如下,会逐步递增。

mysql> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1这个时候就需要重新查看下Gtid的情况了。可以看到这里有原来Master节点的server_uuid,也有当前新主库的server_uuid值。

mysql> show master status\G
*************************** 1. row ***************************
             File: binlog.000001
         Position: 2133
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: 4f7b0b93-2400-11e7-99cb-782bcb377193:1-14,
5433468e-2400-11e7-a834-782bcb377193:1   

新的从库Slave 2节点的信息如下:

节点3:
mysql>
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.127.128.78
                  Master_User: rpl_user
                  Master_Port: 24802
      。。。
           Retrieved_Gtid_Set: 5433468e-2400-11e7-a834-782bcb377193:1
            Executed_Gtid_Set: 4f7b0b93-2400-11e7-99cb-782bcb377193:1-14,
5433468e-2400-11e7-a834-782bcb377193:1   
                Auto_Position: 1
。。。
所以可以发现failover以后的自增列值不会受到影响,而且GTID set会包含当前主库和原来的主库信息。

步骤5:Master节点启动

启动Master节点步骤相对简单。

#  /usr/local/mysql_5.7.17/bin/mysqld_safe --defaults-file=/home/data/s1/s1.cnf &启动之后有很多细节需要确认,一个是关于master status的信息。

mysql> show slave status\G
Empty set (0.00 sec)
mysql> show master status\G
*************************** 1. row ***************************
             File: binlog.000002
         Position: 190
     Binlog_Do_DB:
 Binlog_Ignore_DB:
Executed_Gtid_Set: 4f7b0b93-2400-11e7-99cb-782bcb377193:1-14这个地方明显不对,那是因为主从复制关系还没有调整。
我们看看这个时候的自增列值情况。纠结的问题就是自增列之为3,而Slave 1节点和Slave 2节点的自增列值为5.


mysql> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1

步骤:6:Master节点加入主从复制环境

重新配置主从复制关系:

CHANGE MASTER TO MASTER_HOST='10.127.128.78', MASTER_PORT=24802, MASTER_AUTO_POSITION=1, MASTER_USER='rpl_user', MASTER_PASSWORD='rpl_pass';启动新的从库,启动后会发现GTID会是两个。

mysql> start slave;
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.127.128.78
                  Master_User: rpl_user
                  Master_Port: 24802
   。。。
           Retrieved_Gtid_Set: 5433468e-2400-11e7-a834-782bcb377193:1
            Executed_Gtid_Set: 4f7b0b93-2400-11e7-99cb-782bcb377193:1-14,
5433468e-2400-11e7-a834-782bcb377193:1
                Auto_Position: 1
。。。这个时候再次查看自增列的情况。这个步骤看起来复杂一些,其实就是新的从库会去接收应用在Slave 1节点上的数据变化,相当于在Master节点插入了一条记录,导致这个自增列之继续增加。

mysql> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1  --id值 恢复了
1 row in set (0.00 sec)我们可以查看binlog的信息来进行基本的验证。
[root@grtest app1]# /usr/local/mysql_5.7.17/bin/mysqlbinlog -vv /home/data/s1/binlog.000002
...
BEGIN
;
# at 310
#170418 14:44:01 server id 24802  end_log_pos 352       Table_map: `test`.`t1` mapped to number 219
# at 352
#170418 14:44:01 server id 24802  end_log_pos 392       Write_rows: table id 219 flags: STMT_END_F

BINLOG '
sbX1WBPiYAAAKgAAAGABAAAAANsAAAAAAAEABHRlc3QAAnQxAAIDAwAC
sbX1WB7iYAAAKAAAAIgBAAAAANsAAAAAAAEAAgAC//wEAAAAAgAAAA==
';
### INSERT INTO `test`.`t1`
### SET
###   @1=4
###   @2=2
# at 392
#170418 14:44:01 server id 24802  end_log_pos 419       Xid = 19
COMMIT;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' ;
DELIMITER ;
# End of log file
;
;这样一来对于GTID的理解就会更加清晰一些。对于自增列的问题也会更加明确,确确实实目前能够解决数据不一致的情况。

看完上述内容,你们对如何理解MySQL中GTID和自增列的数据测试有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网数据库频道,感谢大家的支持。

您可能感兴趣的文档:

--结束END--

本文标题: 如何理解MySQL中GTID和自增列的数据测试

本文链接: https://lsjlt.com/news/66247.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解MySQL中GTID和自增列的数据测试
    今天就跟大家聊聊有关如何理解MySQL中GTID和自增列的数据测试,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。   昨天的一篇文章,今...
    99+
    2024-04-02
  • 如何理解mysql自增长列
    本篇文章给大家分享的是有关如何理解mysql自增长列,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 自增长列必须是...
    99+
    2024-04-02
  • MySQL中如何自动生成测试数据
    MySQL中可以通过以下几种方法来自动生成测试数据: 使用INSERT INTO语句插入数据:可以编写INSERT INTO语句来...
    99+
    2024-04-30
    MySQL
  • 如何处理PHP开发中的单元测试和自动化测试
    随着软件开发行业的日益发展,单元测试和自动化测试成为了开发者们重视的环节。PHP作为一种广泛应用于Web开发的脚本语言,单元测试和自动化测试同样也在PHP开发中扮演着重要的角色。本文将介绍如何处理PHP开发中的单元测试和自动化测试,并提供一...
    99+
    2023-10-21
    自动化测试 单元测试 PHP开发
  • 如何理解MySQL基准测试和sysbench工具
    如何理解MySQL基准测试和sysbench工具,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言作为一名后台开发,对数据库进行基准测试,...
    99+
    2024-04-02
  • 如何更改MySQL中的自增数?
    auto_increment 是一个默认属性,它会自动递增新添加的记录。 通过1. 使用alter命令可以更改起始数字。首先,使用insert命令创建一个表。具体操作如下 −mysql> CREATE table AutoIncrem...
    99+
    2023-10-22
  • 在AmazonAurora中如何实现数据库的性能测试和基准测试
    在Amazon Aurora中实现数据库的性能测试和基准测试可以通过以下步骤进行: 定义测试目标:确定要测试的性能指标,例如吞吐...
    99+
    2024-04-09
    AmazonAurora
  • MSSQL如何修改已有数据的表的自增列
    这篇文章主要介绍了MSSQL如何修改已有数据的表的自增列,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 use...
    99+
    2024-04-02
  • 如何测试和调试自定义的golang函数实现
    单元测试自定义函数涉及创建测试文件、定义测试函数、编写测试用例和执行断言。调试失败的测试涉及启用调试信息、使用调试器和设置断点。 如何测试和调试自定义 Go 函数实现 在 Go 中,测...
    99+
    2024-04-26
    调试 golang
  • Java自动化测试中多数据源如何切换
    这篇文章主要介绍了Java自动化测试中多数据源如何切换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一. 用外部文件做数据驱动的基本写法1.1 我们在做数据驱动时,把数据存储...
    99+
    2023-05-31
    java
  • 如何使用Python中的数据分析库处理和预测时间序列数据
    如何使用Python中的数据分析库处理和预测时间序列数据时间序列数据是指按时间顺序排列的数据,其特点是具有时间上的相关性和趋势性。在许多领域中,时间序列数据分析起着重要的作用,如股市预测、天气预报、销售预测等。Python中有许多强大的数据...
    99+
    2023-10-22
    Python 时间序列数据 数据分析库
  • 如何理解MySQL Profile在MySQL5.7的简单测试
    本篇文章给大家分享的是有关如何理解MySQL Profile在MySQL5.7的简单测试,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 ...
    99+
    2024-04-02
  • 如何进行自动化测试unitest中case的管理
    这篇文章主要为大家分析了如何进行自动化测试unitest中case的管理的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“如何进行自动化测试unitest中ca...
    99+
    2023-06-04
  • MySQL如何快速的创建千万级测试数据
    备注: 此文章的数据量在100W,如果想要千万级,调大数量即可,但是不要大量使用rand() 或者uuid() 会导致性能下降 背景 在进行查询操作的性能测试或者sql优化时,我们经常需要在线下环境构建...
    99+
    2024-04-02
  • 如何使用MongoDB实现数据的自动化测试功能
    如何使用MongoDB实现数据的自动化测试功能摘要:随着软件开发的不断发展,自动化测试已经成为了一项非常重要的工作。对于使用MongoDB作为后台数据库的项目来说,如何实现数据的自动化测试功能尤为重要。本文将介绍如何使用MongoDB来实现...
    99+
    2023-10-22
    MongoDB自动化测试 数据测试实现 使用MongoDB进行自动化测试
  • MySQL数据库中预处理prepared statement性能测试的示例
    小编给大家分享一下MySQL数据库中预处理prepared statement性能测试的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了...
    99+
    2024-04-02
  • 如何在Storm中处理数据的序列化和反序列化
    在Apache Storm中处理数据的序列化和反序列化通常涉及使用序列化库或框架,如Apache Avro,Apache Thrif...
    99+
    2024-03-07
    Storm
  • 如何知道MySQL数据库中表和列的确切数量?
    要获取MySQL数据库中表和列的确切数量,请在COUNT()内部使用DISTINCT。假设我们有一个名为“sample”的数据库,我们需要对其进行操作以获取表和列的确切数量。为了实现这一目标,查询如下:mysql> SELECT...
    99+
    2023-10-22
  • 如何在 PHP 中进行数据库连接测试和验收?
    在 php 中测试和验收数据库连接至关重要,本文介绍了以下两种方法:使用 php 内置函数,利用 mysqli 扩展进行连接和错误处理。使用第三方库,如 pdo,用于连接和异常处理。 ...
    99+
    2024-05-21
    php 数据库连接 mysql
  • 微服务架构中如何处理服务的自动化测试和部署?
    随着互联网技术的快速发展,微服务架构也越来越被广泛应用。使用微服务架构可以有效避免单体应用的复杂度和代码耦合,提高应用的可扩展性和可维护性。然而,与单体应用不同,在微服务架构中,服务数量庞大,每个服务都需要进行自动化测试和部署,以确保服务的...
    99+
    2023-05-17
    自动化测试 部署 微服务架构
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作