分布式事务篇-2.2 Seata存储模式,配置模式,注册模式

news2024/9/29 17:24:16

文章目录

  • 前言
  • 一、存储模式:
    • 1.1 存储模式的作用:
    • 1.2 File 存储模式:
      • 1.2.1 映射数据存储文件:
      • 1.2.3 file存储优缺点:
    • 1.3 db 存储模式:
      • 1.3.1 application.yml 配置db 信息:
      • 1.3.1 拷贝驱动jar:
      • 1.3.2 创建 seata 数据库并执行脚本:
      • 1.3.3 重启seata-server:
      • 1.3.4 db 存储模式优缺点:
    • 1.4 redis 存储模式:
  • 二、配置和注册:
    • 2.1 配置中心:
    • 2.2 注册中心:
      • 2.2.1 注册中心的作用:
      • 2.2.2 注册中心配置(nacos):
  • 总结:
  • 参考:


前言

在对Seata 进行部署后,发现Seata 的使用需要配置:存储模式,配置模式,注册模式 ;他们的作用是什么,又应该怎么进行配置?


提示:以下是本篇文章正文内容,下面案例可供参考

一、存储模式:

1.1 存储模式的作用:

存储模式指定了Seata Server用于存储事务和元数据的方式。Seata Server支持三种存储模式:file、db和Redis。列如 当开始事务时需要生成全局事务id Xid ,在生成后就需要Seata 服务进行存储,所以他是Seata Server的重要组成部分;

1.2 File 存储模式:

1.2.1 映射数据存储文件:

-v /root/seata/sessionStore:/seata-server/sessionStore   \

其中 /sessionStore 为容器内数据存储的位置,通过查看application.example.yml 可知为:

在这里插入图片描述

1.2.3 file存储优缺点:

优点:

  • 易于部署和使用:相比于其他存储模式(如数据库存储模式),文件存储模式更加简单和易于部署。不需要额外的依赖或配置,只需通过配置文件指定存储路径即可。

  • 高性能:使用文件系统来存储数据可以提供较高的性能。文件系统通常具有快速的读写速度和较低的延迟,可以满足高并发事务的需求。

  • 低延迟:由于文件系统的本地读写,存储和读取数据的时延较低,可以加速事务的执行速度。

  • 简化维护:使用文件存储模式可以避免额外的数据库配置和维护工作,减少了数据库管理的复杂性和维护成本。

缺点:

  • 单点故障:文件存储模式下,如果使用单个文件系统来存储所有Undo log和Branch Sessions的数据,那么一旦该文件系统出现故障,会造成数据丢失和无法恢复的风险。

  • 有限的扩展性:文件存储模式相对于数据库存储模式来说,扩展性较差。当需要水平扩展时,可能需要考虑文件系统的共享和同步机制,以确保所有节点都可以正确读取和写入数据。

  • 数据备份和恢复的复杂性:文件存储模式的数据备份和恢复相对复杂。需要定期对存储文件进行备份,并在需要时进行还原和恢复。

综上所述,文件存储模式在简化部署和维护、提供高性能和低延迟方面具有优势。但同时需要注意单点故障和有限的扩展性。在选择存储模式时,需要根据具体需求和场景综合考虑,并权衡各种优缺点。

1.3 db 存储模式:

1.3.1 application.yml 配置db 信息:

注意:因为mysql 的版本 需要使用 com.mysql.cj.jdbc.Driver 作为链接驱动

seata:
  config:
    # support: nacos, consul, apollo, zk, etcd3
    # type: file
    type: file
  registry:
    # support: nacos, eureka, redis, zk, consul, etcd3, sofa
    type: file
  store:
    # support: file 、 db 、 redis
    # mode: file
    mode: db
    db:
      datasource: druid
      db-type: mysql
      # driver-class-name: com.mysql.jdbc.Driver
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.01:3306/seata?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useAffectedRows=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8
      user: root
      password: 123456
      min-conn: 5
      max-conn: 100
      global-table: global_table
      branch-table: branch_table
      lock-table: lock_table
      distributed-lock-table: distributed_lock
      query-limit: 100
      max-wait: 5000

1.3.1 拷贝驱动jar:

docker cp /root/xxx/mysql-connector-java-8.0.21.jar seata-server1.5:/seata-server/libs

/root/xxx/mysql-connector-java-8.0.21.jar 为宿主机目录
seata-server1.5:/seata-server/libs 为容器内目录

1.3.2 创建 seata 数据库并执行脚本:

原脚本地址: https://github.com/seata/seata/blob/1.5.0/script/server/db/mysql.sql,可能git 打开比较慢这里直接粘贴一份:

-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(
    `xid`                       VARCHAR(128) NOT NULL,
    `transaction_id`            BIGINT,
    `status`                    TINYINT      NOT NULL,
    `application_id`            VARCHAR(32),
    `transaction_service_group` VARCHAR(32),
    `transaction_name`          VARCHAR(128),
    `timeout`                   INT,
    `begin_time`                BIGINT,
    `application_data`          VARCHAR(2000),
    `gmt_create`                DATETIME,
    `gmt_modified`              DATETIME,
    PRIMARY KEY (`xid`),
    KEY `idx_status_gmt_modified` (`status` , `gmt_modified`),
    KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
    `branch_id`         BIGINT       NOT NULL,
    `xid`               VARCHAR(128) NOT NULL,
    `transaction_id`    BIGINT,
    `resource_group_id` VARCHAR(32),
    `resource_id`       VARCHAR(256),
    `branch_type`       VARCHAR(8),
    `status`            TINYINT,
    `client_id`         VARCHAR(64),
    `application_data`  VARCHAR(2000),
    `gmt_create`        DATETIME(6),
    `gmt_modified`      DATETIME(6),
    PRIMARY KEY (`branch_id`),
    KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
    `row_key`        VARCHAR(128) NOT NULL,
    `xid`            VARCHAR(128),
    `transaction_id` BIGINT,
    `branch_id`      BIGINT       NOT NULL,
    `resource_id`    VARCHAR(256),
    `table_name`     VARCHAR(32),
    `pk`             VARCHAR(36),
    `status`         TINYINT      NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking',
    `gmt_create`     DATETIME,
    `gmt_modified`   DATETIME,
    PRIMARY KEY (`row_key`),
    KEY `idx_status` (`status`),
    KEY `idx_branch_id` (`branch_id`),
    KEY `idx_xid_and_branch_id` (`xid` , `branch_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

CREATE TABLE IF NOT EXISTS `distributed_lock`
(
    `lock_key`       CHAR(20) NOT NULL,
    `lock_value`     VARCHAR(20) NOT NULL,
    `expire`         BIGINT,
    primary key (`lock_key`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('AsyncCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryRollbacking', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('TxTimeoutCheck', ' ', 0);

1.3.3 重启seata-server:

docker restart seata-server1.5

1.3.4 db 存储模式优缺点:

优点:

  • 可靠性:关系型数据库通常具备较高的数据持久性和可靠性,能够提供数据的可靠存储和保护。这意味着在发生故障或宕机时,数据不会丢失。

  • ACID 特性:关系型数据库支持 ACID(原子性、一致性、隔离性和持久性)特性,可以确保事务在执行过程中的一致性和可靠性。

  • 成熟性:关系型数据库在数据管理方面具备较高的成熟度,拥有广泛的应用场景和丰富的工具生态系统。

缺点:

  • 性能瓶颈:关系型数据库在处理大量事务和并发请求时,可能会遇到性能瓶颈。由于事务数据需要写入和读取数据库,因此在高负载场景下,数据库可能成为性能瓶颈。

  • 扩展性限制:关系型数据库在水平扩展方面存在一定的限制。当事务负载增加时,随着数据量的增加,需要更强大的硬件和数据库调优,以保持性能。

  • 配置和管理复杂:关系型数据库的配置和管理需要经验和专业知识。你需要正确地配置和调整数据库参数,以满足 Seata Server 的要求,并确保数据库的稳定性和性能。

1.4 redis 存储模式:

store:
    # support: file 、 db 、 redis
    # mode: file
    # mode: db
    mode: redis
    

    redis:
      # 单机模式
      mode: single
      # 使用第几个库
      database: 0
      min-conn: 1
      max-conn: 10
      # 访问密码
      password: 123456
      max-total: 100
      query-limit: 100
      single:
      	#  redis 地址和端口
        host: 127.0.0.1
        port: 6379
      sentinel:
        master-name:
        sentinel-hosts:

二、配置和注册:

2.1 配置中心:

配置中心的作用:用于配置 Seata Server的相关参数;以nacos 为例
nacos 中创建seat 的命名空间 后在seata-server 下application.yml 中 config 配置 nacos 的地址信息

seata:
  config:
    # support: nacos, consul, apollo, zk, etcd3
    # type: file
    type: nacos
    nacos:
      server-addr: localhost:8828
      namespace: 7f2765bc-d8c1-4b49-b706-8c292d2ffac9
      group: SEATA_GROUP
      username: nacos
      password: nacos
      ##if use MSE Nacos with auth, mutex with username/password attribute
      #access-key: ""
      #secret-key: ""
      data-id: seataServer.properties

可以将 config.txt 的参数 在nacos 中进行配置,原文地址:https://github.com/seata/seata/blob/develop/script/config-center/config.txt
git 可能打开较慢,这里粘贴一份:参数详解可以参照:https://seata.io/zh-cn/docs/user/configurations.html

#For details about configuration items, see https://seata.io/zh-cn/docs/user/configurations.html
#Transport configuration, for client and server
transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableTmClientBatchSendRequest=false
transport.enableRmClientBatchSendRequest=true
transport.enableTcServerBatchSendResponse=false
transport.rpcRmRequestTimeout=30000
transport.rpcTmRequestTimeout=30000
transport.rpcTcRequestTimeout=30000
transport.threadFactory.bossThreadPrefix=NettyBoss
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
transport.threadFactory.shareBossWorker=false
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
transport.threadFactory.clientSelectorThreadSize=1
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
transport.threadFactory.bossThreadSize=1
transport.threadFactory.workerThreadSize=default
transport.shutdown.wait=3
transport.serialization=seata
transport.compressor=none

#Transaction routing rules configuration, only for the client
service.vgroupMapping.default_tx_group=default
#If you use a registry, you can ignore it
service.default.grouplist=127.0.0.1:8091
service.enableDegrade=false
service.disableGlobalTransaction=false

#Transaction rule configuration, only for the client
client.rm.asyncCommitBufferLimit=10000
client.rm.lock.retryInterval=10
client.rm.lock.retryTimes=30
client.rm.lock.retryPolicyBranchRollbackOnConflict=true
client.rm.reportRetryCount=5
client.rm.tableMetaCheckEnable=true
client.rm.tableMetaCheckerInterval=60000
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false
client.rm.sagaJsonParser=fastjson
client.rm.tccActionInterceptorOrder=-2147482648
client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.defaultGlobalTransactionTimeout=60000
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000
client.tm.interceptorOrder=-2147482648
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
client.undo.logTable=undo_log
client.undo.compress.enable=true
client.undo.compress.type=zip
client.undo.compress.threshold=64k
#For TCC transaction mode
tcc.fence.logTableName=tcc_fence_log
tcc.fence.cleanPeriod=1h

#Log rule configuration, for client and server
log.exceptionRate=100

#Transaction storage configuration, only for the server. The file, DB, and redis configuration values are optional.
store.mode=file
store.lock.mode=file
store.session.mode=file
#Used for password encryption
store.publicKey=

#If `store.mode,store.lock.mode,store.session.mode` are not equal to `file`, you can remove the configuration block.
store.file.dir=file_store/data
store.file.maxBranchSessionSize=16384
store.file.maxGlobalSessionSize=512
store.file.fileWriteBufferCacheSize=16384
store.file.flushDiskMode=async
store.file.sessionReloadReadSize=100

#These configurations are required if the `store mode` is `db`. If `store.mode,store.lock.mode,store.session.mode` are not equal to `db`, you can remove the configuration block.
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=username
store.db.password=password
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.distributedLockTable=distributed_lock
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000

#These configurations are required if the `store mode` is `redis`. If `store.mode,store.lock.mode,store.session.mode` are not equal to `redis`, you can remove the configuration block.
store.redis.mode=single
store.redis.single.host=127.0.0.1
store.redis.single.port=6379
store.redis.sentinel.masterName=
store.redis.sentinel.sentinelHosts=
store.redis.maxConn=10
store.redis.minConn=1
store.redis.maxTotal=100
store.redis.database=0
store.redis.password=
store.redis.queryLimit=100

#Transaction rule configuration, only for the server
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
server.distributedLockExpireTime=10000
server.xaerNotaRetryTimeout=60000
server.session.branchAsyncQueueSize=5000
server.session.enableBranchAsyncRemove=false

#Metrics configuration, only for the server
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898

2.2 注册中心:

2.2.1 注册中心的作用:

Seata Server 的注册中心是用于存储和管理 Seata 事务参与者的信息的组件。它的作用可以总结为以下三个方面:

  • 服务注册与发现:Seata Server 通过注册中心来注册和发现事务参与者。事务参与者在启动时向注册中心注册自己,并提供自己的相关信息,如应用名称、IP地址、端口号等。这样,Seata Server 就能够动态地发现可用的事务参与者,并与其进行通信和协调。

  • 运行时配置管理:注册中心可以存储和管理 Seata Server 的运行时配置信息。例如,Seata Server 的注册中心地址、事务日志的存储模式等配置参数可以通过注册中心进行管理。这样,可以在运行时动态地修改和更新 Seata Server 的配置,而无需重新启动。

  • 故障转移和高用:注册中心提供了故障转移和高可用的支持。当一个事务参与者发生故障或不可用时,Seata Server 可以通过注册中心来感知并移除该参与者,从而避免错误的事务协调。同时,当有新的事务参与者加入时,Seata Server 也会通过注册中心进行监测和同步。

总之,Seata Server 的注册中心在分布式事务管理中扮演着重要的角色,它通过提供服务注册与发现、运行时配置管理以及故障转移和高可用的支持,确保 Seata Server 能够高效、灵活地管理和协调分布式事务。

2.2.2 注册中心配置(nacos):

seata-sever 的 application.yml 对注册中心进行配置:

  registry:
    # support: nacos, eureka, redis, zk, consul, etcd3, sofa
    # type: file
    type: nacos
    nacos:
      application: seata-server
      server-addr: localhost:8828
      group: SEATA_GROUP
      namespace: 7f2765bc-d8c1-4b49-b706-8c292d2ffac9
      cluster: default
      username: nacos
      password: nacos
      ##if use MSE Nacos with auth, mutex with username/password attribute
      #access-key: ""
      #secret-key: ""

重启后可以在nacos 中查看是否已经完成注册:
在这里插入图片描述


总结:

本文对Seata 的存储模式,配置中心和注册中心进行了实践;存储模式可以将事务的数据进行存储防止数据的丢失,配置中心可以将一些seata-server 的参数迁移到配置中心中,注册中心可以将分支事务进行注册方便后续的通信;

参考:

1 配置中心参数配置;
2 配置中心参数详解;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/933326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实验室信息化建设都包括哪些方面?

在现代的计算机通信系统、信息安全系统和自动控制等系统中,软件开发工作占了相当大的比重,而与这些系统有关的软件一般十分庞大,也相当复杂。这些软件还要大量地与操作系统核作深层次的交互,以进行信息的传输、控制和实现各种通信…

#systemverilog# 之 event region 和 timeslot 仿真调度(六)疑惑寄存器采样吗

一 象征性啰嗦 想必大家在刚开始尝试写Verilig HDL代码的时候,都是参考一些列参考代码,有些来自于参考书,有些来自于网上大牛的笔记,甚至有写来自于某宝FPGA开发板的授权代码。我还记得自己当时第一次写代码,参考的是一款Altera 芯片,结合Quartus 开发软件, 在上面练习…

线程池也就那么一回事嘛!

线程池详讲 一、线程池的概述二、线程池三、自定义线程池四、线程池工作流程图五、线程池应用场景 一、线程池的概述 线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过…

算法笔记:KD树

1 引入原因 K近邻算法需要在整个数据集中搜索和测试数据x最近的k个点,如果一一计算,然后再排序,开销过大 引入KD树的作用就是对KNN搜索和排序的耗时进行改进 2 KD树 2.1 主体思路 以空间换时间,利用训练样本集中的样本点&…

OSPF配置与协议分析

一、实验目的: 通过该实验学习OSPFv2协议,能够通过GNS3模拟环境并用wireshark抓包分析OSPFv2协议的报文格式 二、预备知识: OSPF(Open Shortest Path First,开放式最短路径优先)是一个链路状态路由协议,被各…

智能引领物流,AGV与工控机完美搭配!

AGV小车现已广泛被制造业使用,成为智能工厂、智能车间的重要组成部分。在制造业的生产中用AGV小车代替工进行装载、搬运、卸载等工作,实现了车间物流的自动化,极大的提高了生产自动化水平。通过AGV小车与产线进行完美结合,可自动化…

如何理解原假设和备择假设?

原假设H0:一般是想要推翻的结论,如指标没有变化,实验组和对照组的该结果指标没有差异等。 备择假设H1:一般是想要证明的结论,如实验组的指标是显著提升的,指标提升10%等。 反证法的思想:因为假…

到目前为止,所有的关于安卓14的详细介绍

安卓14现在可能已经不远了,谷歌已经进行了五次测试,通常10月份的发布窗口时间很快就会到来。但除了在谷歌I/O 2023上进行简短讨论外,谷歌对正在发生的变化相对沉默。 可以肯定地说,Android 14不会是操作系统有史以来最大的一系列变化,但有很多改进和变化可以让Android保持…

Python Requests模块session的使用建议

本篇主要讲解Python Requests模块session的使用建议及整个会话中的所有cookie的方法。 测试代码 服务端:下面是用flask做的一个服务端,用来设置cookie以及打印请求时的请求头。 # -*- coding: utf-8 -*- from flask import Flask, make_response, req…

容器的基本操作

docker中的容器就是一个轻量级的虚拟机,是镜像运行起来的一个状态,本文就先来看看容器的基本操作。 查看容器 查看容器 启动docker后,使用docker ps命令可以查看当前正在运行的容器: 查看所有容器 上面这条命令是查看当前正在…

Hadoop Hdfs基本命令

0目录 1.hadoop安装问题处理 2.hdfs基本命令 3.上传/下载文件和文件夹 1.hadoop安装问题处理 如果安装有进程无法启动,如下图 重新检查6个配置文件 Core-site.xml \ hdfs-site.xml \ hadoop-env.sh \ yarn-site.xml \ workers \ yarn-site.xml 来到hadoop313目录…

8/26 回溯法 周总结 记录个人的想法

DAY1 77. 组合 这道题是经典的回溯题, 递归函数参数和返回值显而易见 终止条件是path.size()k 递归逻辑,需要理解每次调用回溯的startIndex的含义,图解: DAY2 216. 组合总和 III:这道题与77题作类比: 77&#xff1…

剪绳子c、c++实现

给你一根长度为 n 的绳子&#xff0c;请把绳子剪成整数长的 m 段&#xff08; m 、 n 都是整数&#xff0c; n > 1 并且 m > 1 &#xff0c; m < n &#xff09;&#xff0c;每段绳子的长度记为 k[1],...,k[m] 。请问 k[1]*k[2]*...*k[m] 可能的最大乘积是多少&#x…

【MySQL系列】表的内连接和外连接学习

「前言」文章内容大致是对MySQL表的内连接和外连接。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、内连接二、外连接2.1 左外连接2.2 右外连接 一、内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选&#xff0c;前面篇章学习的…

ctfshow-web-红包题第六弹

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 首先跑一下字典&#xff0c;这里用的dirmap,可以看到有一个web.zip 下载下来之后发现是一个网站备份&#xff0c;备份的是check.php.bak 然后接着看&#xff0c;可以看到这里不太可能是sql注入&#xff0c;有…

650V 1200V碳化硅二极管MOS管规格书参数,6A 8A 10A 15A 20A 封装TO220低VF电压 低内阻特性

650V碳化硅二极管6A 8A 15A提供样品 650V 40毫欧超结COOL MOS提供样品 650V 超结COOL MOS资料 国产替代 650V 1200V碳化硅二极管技术资料

Windows 10 文件夹自定义分组

通过配置desktop.ini文件可实现文件夹简单分组&#xff0c;此方法需配置每一个文件夹。 效果如下 1、文件夹设置取消隐藏系统文件 2、文件配置&#xff0c;以test文件夹为例。进入test文件夹&#xff0c;新建txt文件重命名 desktop.ini 注意是否开启显示文件后缀名否则修改后还…

手把手教你从0开始部署Kubernetes(K8s 1.28.x)---超详细

目录 一、基础环境配置&#xff08;所有主机均要配置&#xff09; 1、配置IP地址和主机名、hosts解析 2、关闭防火墙、禁用SELinux 3、安装常用软件 4、配置时间同步 5、禁用Swap分区 6、修改linux的内核参数 7、配置ipvs功能 二、容器环境操作 1、定制软件源 2、安…

接口测试时遇到接口加密了该如何处理?

对明文编码生成信息摘要&#xff0c;以防止被篡改。比如MD5使用的是Hash算法&#xff0c;无论多长的输入&#xff0c;MD5都会输出长度为128bits的一个串。摘要算法不要秘钥&#xff0c;客户端和服务端采用相同的摘要算法即可针对同一段明文获取一致的密文。 对称加密 对称加密…

不同子网络中的通信过程

从输入www.baidu.com经历了什么 一、DNS&#xff08;网址->IP&#xff09; 二、ARP&#xff08;IP->MAC&#xff09; A->B&#xff1a;有数据发送&#xff0c;数据封装ip之后发现没有主机B的mac地址。然后ARP在本网段广播&#xff1a;检查目标地址和源地址是否在同一…