三主机部署HP Anyware Manager服务
一、序言
在部署拓扑和方案方面,HP Anyware Manager 非常灵活,可以部署在单个主机中,也可以部署在多个主机中,具体取决于组织的网络环境和运营要求。
二、单主机部署
2.1 描述
此部署配置是当 Anyware Manager 和 MongoDB 以及 Vault 服务器在单个主机上运行时,可将其部署在任何云或本地的虚拟机上。
可以使用与 Anyware Manager 进行初始原型设计或小规模生产部署。如果用于生产环境,则必须确保有备份和恢复过程。这对于最大限度地减少数据丢失和最大限度地减少停机时间是必要的。

2.2 虚拟机系统需求
- 操作系统:RHEL 8 和 Rocky Linux 8。
- 最低 8 GB RAM
- 4 CPU
- 60 GB 存储空间:如果您使用 LVM并/var安装在单独的卷上,则该卷必须具有 30GB 或更多空间才能成功安装并且 Anyware Manager 才能正常运行。
- Active Directory 权限设置为列出内容和读取所有属性。如果不设置这些权限,您将无法连接到特定的远程工作站。
- VM的主机名应符合RFC1123中定义的标准,并且必须:
-仅包含 253 个字符。
-仅包含小写字母数字字符、“-”或“。”。
-以字母数字字符开头。
-以字母数字字符结尾。
默认安装过程链接
三、两/三台主机部署
3.1 描述
此部署配置适用于 Anyware Manager、MongoDB 和 Vault 服务器在单独的主机上运行的情况。
通过在单独的计算机上托管数据库和机密存储,可以降低 Anyware Manager 服务器发生故障时数据丢失的风险。
此配置通过部署多个 Anyware Manager 实例来实现 Anyware Manager 的高可用性和可扩展性。此配置具有以下限制:
- 如果仅部署一个 MongoDB 和 Vault 实例,数据持久层无法实现高可用性,并且必须为托管 MongoDB 和 Vault 的服务器制定备份和恢复过程,以最大限度地减少数据丢失。
- 可以在本地或任何云上托管的虚拟机上配置此部署。 此配置需要一定程度的 MongoDB 和 Vault 技术知识,才能正确部署和操作这些外部组件。

四、三主机安装 之 为外部DB和Vault创建自签名证书
这些命令的目的是生成一个自签名的根证书颁发机构 (CA) 证书和一个由该根CA签署的服务器证书,并包括特定的Subject Alternative Name (SAN) 条目。每个命令的详细功能如下:
-
生成根CA私钥:
openssl genrsa -out rootCA.key 4096- 生成一个4096位的RSA私钥并将其保存在
rootCA.key文件中。 - 这个私钥将用于签署根CA证书。
- 生成一个4096位的RSA私钥并将其保存在
-
生成自签名根CA证书:
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt -subj "/C=CA/ST=BC/O=Team Voltron/CN=Voltron Test CA"- 使用生成的私钥
rootCA.key创建一个新的自签名根CA证书,并将其保存为rootCA.crt。 -x509表示生成一个自签名证书。-days 1024指定证书的有效期为1024天。-subj提供证书的主题信息(国家、州/省、组织和通用名称)。
- 使用生成的私钥
-
设置Subject Alternative Name (SAN) 环境变量:
export SAN="subjectAltName=DNS:DBVault-10-47,IP:192.168.10.47,IP:192.168.10.47,IP:127.0.0.1"- 将特定的SAN值存储在
SAN环境变量中。 - SAN包含DNS名称和多个IP地址,用于扩展证书的主机名验证。
- 将特定的SAN值存储在
-
生成服务器私钥:
openssl genrsa -out mycert.key 2048- 生成一个2048位的RSA私钥并将其保存在
mycert.key文件中。 - 这个私钥将用于生成服务器证书签名请求 (CSR)。
- 生成一个2048位的RSA私钥并将其保存在
-
生成证书签名请求 (CSR):
openssl req -new -sha256 \ -key mycert.key \ -subj "/C=CA/ST=BC/O=Team Voltron/CN=localhost" \ -reqexts SAN \ -config <(cat /etc/pki/tls/openssl.cnf <(printf "\n[SAN]\n${SAN}")) \ -out mycert.csr- 使用
mycert.key生成一个新的CSR,并将其保存为mycert.csr。 -subj提供CSR的主题信息。-reqexts SAN和-config <(cat /etc/pki/tls/openssl.cnf <(printf "\n[SAN]\n${SAN}"))用于将SAN信息添加到CSR中。-sha256指定使用SHA-256哈希算法。
- 使用
-
使用根CA签署服务器证书:
openssl x509 -req -in mycert.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out mycert.crt -days 500 -sha256 -extfile <(printf "${SAN}")- 使用根CA证书
rootCA.crt和根CA私钥rootCA.key签署CSRmycert.csr,生成服务器证书mycert.crt。 -CAcreateserial生成一个序列号文件(默认为rootCA.srl)。-days 500指定证书的有效期为500天。-extfile <(printf "${SAN}")包含SAN信息的扩展文件。
- 使用根CA证书
-
将服务器证书追加到 PEM 文件:
cat mycert.crt >> myserver.pem- 将生成的服务器证书 (
mycert.crt) 的内容追加到myserver.pem文件中。 myserver.pem文件将包含服务器证书的公钥。
- 将生成的服务器证书 (
-
将服务器私钥追加到 PEM 文件:
cat mycert.key >> myserver.pem- 将生成的服务器私钥 (
mycert.key) 的内容追加到myserver.pem文件中。 myserver.pem文件现在包含了服务器的公钥和私钥。
通过这两个步骤,你将服务器证书和私钥组合到一个 PEM 文件 (
myserver.pem) 中,这个文件可以方便地用于配置支持 SSL/TLS 的服务。 - 将生成的服务器私钥 (
-
验证服务器证书:
openssl verify -CAfile rootCA.crt mycert.crt- 使用根CA证书 (
rootCA.crt) 验证服务器证书 (mycert.crt) 的有效性。 -CAfile rootCA.crt指定用于验证的根CA证书。- 如果证书有效且由指定的根CA签署,OpenSSL 会输出
mycert.crt: OK。 - 如果证书无效或不匹配,OpenSSL 会输出相应的错误信息。
- 使用根CA证书 (
总结
这些命令的整体操作流程如下:
- 创建一个根CA证书及其私钥。
- 为服务器生成一个私钥和一个包含SAN的CSR。
- 使用根CA证书和私钥签署该CSR,生成一个包含SAN的服务器证书。
- 将服务器证书和私钥组合到一个 PEM 文件中 (
myserver.pem)。 - 使用根CA证书验证服务器证书的有效性,确保服务器证书是由指定的根CA签署的,并且没有问题。
这些步骤通常用于准备证书和密钥,以便在配置支持SSL/TLS的服务(如MongoDB、HashiCorp Vault等)时使用。
五、三主机安装之 HashiCorp Vault 1.11 安装配置
安装和配置 Vault
-
安装
yum-utils工具包:sudo yum install -y yum-utils- 安装
yum-utils,这是一个提供各种 YUM 命令的工具包,用于管理和维护 YUM 仓库及软件包。
- 安装
-
添加 HashiCorp 的 YUM 仓库:
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo- 将 HashiCorp 官方的 YUM 仓库添加到系统中,以便安装 HashiCorp 的软件包,包括 Vault。
-
安装 Vault:
sudo yum -y install vault-1.11.6-1.x86_64- 从刚刚添加的 YUM 仓库安装 Vault 1.11.6 版本。
-
运行 Vault 命令以验证安装:
vault- 运行 Vault 命令行工具以确认 Vault 已正确安装并能够启动。
配置 Vault
-
复制服务器证书到 Vault 目录:
sudo cp myserver.pem /opt/vault/tls/myserver.pem- 将之前生成的服务器证书 (
myserver.pem) 复制到 Vault 的 TLS 目录中。
- 将之前生成的服务器证书 (
-
备份现有的 Vault 配置文件:
sudo mv /etc/vault.d/vault.hcl /etc/vault.d/vault.hcl.old- 将现有的 Vault 配置文件重命名为备份文件,以便后续创建新的配置文件。
-
编辑 Vault 配置文件:
vi /etc/vault.d/vault.hcl- 打开 Vault 配置文件进行编辑。
Vault 配置文件 (/etc/vault.d/vault.hcl)
# Full configuration options can be found at https://www.vaultproject.io/docs/configurationui = truestorage "raft" {path = "/opt/vault/data"node = "node1"
}# HTTP listener
listener "tcp" {address = "0.0.0.0:8200"tls_cert_file = "/opt/vault/tls/myserver.pem"tls_key_file = "/opt/vault/tls/myserver.pem"
}api_addr = "https://127.0.0.1:8200"
cluster_addr = "https://127.0.0.1:8201"
ui = true: 启用 Vault 的 Web 用户界面。storage "raft": 配置 Raft 存储后端,数据存储在/opt/vault/data目录。listener "tcp": 配置 TCP 监听器,在 8200 端口上启用 TLS 加密,使用指定的证书和密钥文件。api_addr和cluster_addr: 配置 Vault 的 API 地址和集群地址,均使用 HTTPS。
配置 Vault 服务
-
编辑 Vault 服务文件:
sudo vi /etc/systemd/system/vault.serviceVault 服务文件内容 (
/etc/systemd/system/vault.service):[Unit] Description="HashiCorp Vault - A tool for managing secrets" Documentation=https://www.vaultproject.io/docs/ Requires=network-online.target After=network-online.target ConditionFileNotEmpty=/etc/vault.d/vault.hcl StartLimitIntervalSec=60 StartLimitBurst=3[Service] User=vault Group=vault ProtectSystem=full ProtectHome=read-only PrivateTmp=yes PrivateDevices=yes SecureBits=keep-caps AmbientCapabilities=CAP_IPC_LOCK Capabilities=CAP_IPC_LOCK+ep CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK NoNewPrivileges=yes ExecStart=/usr/bin/vault server -config=/etc/vault.d/vault.hcl ExecReload=/bin/kill --signal HUP $MAINPID KillMode=process KillSignal=SIGINT Restart=on-failure RestartSec=5 TimeoutStopSec=30 StartLimitInterval=60 StartLimitIntervalSec=60 StartLimitBurst=3 LimitNOFILE=65536 LimitMEMLOCK=infinity[Install] WantedBy=multi-user.target- 定义了 Vault 的系统服务单元,配置了启动、重启、权限、安全设置等。
-
启用 Vault 服务:
sudo systemctl enable vault- 设置 Vault 服务在系统启动时自动启动。
-
启动 Vault 服务:
sudo systemctl start vault- 启动 Vault 服务。
-
检查 Vault 服务状态:
sudo systemctl status vault- 检查 Vault 服务是否正在运行并且工作正常。
初始化和解封 Vault
以下命令需要重新开一个SSH执行
-
设置 Vault 地址:
export VAULT_ADDR='https://192.168.10.47:8200'- 设置环境变量
VAULT_ADDR指定 Vault 的 API 地址。
- 设置环境变量
-
设置 CA 证书路径:
export VAULT_CACERT=/opt/vault/tls/myserver.pem- 设置环境变量
VAULT_CACERT指定 Vault 的 CA 证书路径。
- 设置环境变量
-
初始化 Vault:
vault operator init初始化输出示例:
Unseal Key 1: 6vcvTn+oLnFirU9f4Ehrc88RWphgavO5fgdhiH4/DYDg Unseal Key 2: r+ZFy2KipZxnJec5O6geU4DFTXxiVZbLfuD5YDvSbbvl Unseal Key 3: COGjZgfPBlKS0Ok+6vLtIlfui2WA7LHmS5BC9ipXx7vD Unseal Key 4: Vee++P6EkdnW7Hs85KtY3Zo8sWfMNqG8RAMLHpin9MHU Unseal Key 5: s7eu5VWbjqaSAZZKI+ejdEIa7bDKbIoIT6rc7+jQ5XtZInitial Root Token: hvs.QIdivPRK0dUrycWFrh1gQe8Z- 初始化 Vault 并生成解封密钥和 Root Token。
-
解封 Vault:
vault operator unseal- 需要执行三次,输入不同的解封密钥。
-
登录 Vault:
vault login hvs.QIdivPRK0dUrycWFrh1gQe8Z- 使用 Root Token 登录 Vault。
-
启用密钥值 (KV) 存储引擎:
vault secrets enable -path=secret/ kv -
创建 Vault 策略:
vault policy write casm-policy - << EOF path "secret/data/*" { capabilities = ["create", "update", "read", "delete", "list"] } EOF -
创建角色和 token:
vault write auth/token/roles/casm-role allowed_policies="casm-policy" period="768h" vault token create -role=casm-role -orphan创建 token 输出示例:
Key Value --- ----- token hvs.CAESIDA0kcPwDitAjXPtrKjckEj1qJA8DQAl8fEyHo_z7g1WGh4KHGh2cy5lU2pLdU1tb1FWbFgyUE1nVUw0OVlYUzU -
设置 Vault 跳过证书验证(仅用于测试环境):
export VAULT_SKIP_VERIFY=True -
重新解封 Vault:
vault operator unseal- 在 Vault 重启后,执行解封操作。
六、三主机安装之 MongoDB 4.2 安装配置
下面是这些系统命令的详细解释及其功能:
配置 MongoDB YUM 仓库
-
创建并编辑 MongoDB 仓库文件:
sudo vi /etc/yum.repos.d/mongodb-org-4.2.repoMongoDB 仓库配置文件内容 (
/etc/yum.repos.d/mongodb-org-4.2.repo):[mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.2.ascname: 为仓库指定名称。baseurl: 指定 MongoDB 软件包的下载地址。gpgcheck: 启用 GPG 签名检查,以确保软件包的完整性和来源可靠性。enabled: 启用这个仓库。gpgkey: 指定用于验证软件包签名的 GPG 密钥的 URL。
-
安装 MongoDB 相关包:
yum install -y mongodb-org-4.2.14 mongodb-org-server-4.2.14 mongodb-org-shell-4.2.14 mongodb-org-mongos-4.2.14 mongodb-org-tools-4.2.14- 安装 MongoDB 4.2.14 及其所有相关组件,包括服务器、Shell、Mongos 和工具。
配置 MongoDB
-
移动和设置证书权限:
mv myserver.pem /etc/myserver.pem chmod 755 /etc/myserver.pem- 将证书文件
myserver.pem移动到/etc目录,并设置文件权限为 755(所有者可读写执行,其他用户可读)。
- 将证书文件
-
备份并编辑 MongoDB 配置文件:
sudo mv /etc/mongod.conf /etc/mongod.conf.orig sudo vi /etc/mongod.confMongoDB 配置文件内容 (
/etc/mongod.conf):#mongod.conf#for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/# where to write logging data. systemLog:destination: filelogAppend: truepath: /var/log/mongodb/mongod.log# Where and how to store data. storage:dbPath: /var/lib/mongojournal:enabled: true # engine: # wiredTiger:# how the process runs processManagement:fork: true # fork and run in backgroundpidFilePath: /var/run/mongodb/mongod.pid # location of pidfiletimeZoneInfo: /usr/share/zoneinfo# network interfacesnet:port: 27017bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.tls:# mode allowTLS allows connections to be either TLS or non-TLS, but requireTLS means all connections must be TLSmode: requireTLS # All connections MUST be TLScertificateKeyFile: /etc/myserver.pemsecurity:authorization: "enabled"systemLog: 配置日志记录,包括日志文件位置和是否追加日志。storage: 配置数据存储,包括数据文件位置和启用日志。processManagement: 配置 MongoDB 进程管理,包括后台运行、PID 文件路径等。net: 配置网络接口,包括端口号、绑定 IP 地址和 TLS 设置。security: 启用 MongoDB 的认证授权。
-
重新加载系统服务管理器配置:
sudo systemctl daemon-reload- 使系统服务管理器重新加载服务配置文件。
-
设置证书的 SELinux 上下文:
chcon system_u:object_r:mongod_var_lib_t:s0 /etc/myserver.pem- 设置证书文件的 SELinux 上下文,以便 MongoDB 服务可以访问它。
-
启动 MongoDB 服务并检查状态:
sudo systemctl start mongod sudo systemctl status mongod- 启动 MongoDB 服务,并检查其运行状态。
配置和使用 MongoDB
-
以 TLS 连接到 MongoDB:
mongo --tls --tlsAllowInvalidCertificates- 使用 TLS 连接到 MongoDB 实例,即使证书无效也允许连接(用于测试)。
-
切换到
casm数据库:use casm -
创建用户并设置权限:
db.createUser( { user: "sunia", pwd: "Hc@2024", roles: [ {db: "casm", role: "readWrite"} ], // user only needs readWrite Access to cam DB,authenticationRestrictions: [{serverAddress: ["192.168.10.47"] // IP for the MongoDB server}] });- 在
casm数据库中创建一个用户sunia,密码为Hc@2024,并赋予readWrite权限。用户只能从 IP 地址192.168.10.47进行认证。
- 在
注意事项:
1, 完成MongoDB安装后登录第一次创建用户,会出现问题是: 无权限在casm总增加用户
2024-07-18T20:04:42.959+0800 E QUERY [js] uncaught exception: Error: couldn’t add user: not authorized on casm to execute command { createUser: “sunia”, pwd: “xxx”, roles: [ { db: “casm”, role: “readWrite” } ], authenticationRestrictions: [ { serverAddress: [ “192.168.10.47” ] } ], digestPassword: true, writeConcern: { w: “majority”, wtimeout: 600000.0 }, lsid: { id: UUID(“05fe2644-2cdd-4e33-9476-e4e29ba5cbdb”) }, $db: “casm” } :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.createUser@src/mongo/shell/db.js:1413:11
@(shell):1:1
解决办法:
第一次安装mongodb后,需要增加一个账户,如果创建账户的时候报这个错误,是因为启动mongod的时候,指定的配置文件mongodb.conf中,需要先用noauth = true启动,注释掉auth = true
-------------------防火墙打开-----------------------------
sudo firewall-cmd --list-all
sudo firewall-cmd --add-port=27017/tcp --permanent #MongoDB
sudo firewall-cmd --add-port=8200/tcp --permanent #Vault
sudo firewall-cmd --reload
总结
这些命令完成了 MongoDB 的安装、配置和启动,包括:
- 配置 MongoDB YUM 仓库,并安装 MongoDB 4.2 版本。
- 配置 MongoDB 使其支持 TLS 和启用认证。
- 设置 MongoDB 服务并启动,确保服务正常运行。
- 创建 MongoDB 用户并设置权限,以便进行访问控制。
七、三主机安装之 Manager配置刷新
在虚机安装完成Manager之后,需要配置Manager使用外部安装的MongoDB和Vault服务上面。
如下是配置命令:
cat /opt/manager.conf
{"vault-type": "vault","vault-url": "https://192.168.10.47:8200","vault-token": "hvs.CAESIEAIMGzQFyc3ts2WJsjvA-YcavVXizkdFdLFML0cw0bSGh4KHGh2cy5yeXFKTVFsekZDZlFwMUZ2UDJ5ejdjdmw","vault-secret-path": "secret/data","vault-skip-verify-cert": true,"db-connection-string": "mongodb://sunia:Hc%402024@192.168.10.47/casm","db-enable-tls": true,"db-skip-verify-cert": true
}sudo /usr/local/bin/anyware-manager configure --config-file /opt/manager.conf
相关文章:
三主机部署HP Anyware Manager服务
一、序言 在部署拓扑和方案方面,HP Anyware Manager 非常灵活,可以部署在单个主机中,也可以部署在多个主机中,具体取决于组织的网络环境和运营要求。 二、单主机部署 2.1 描述 此部署配置是当 Anyware Manager 和 MongoDB 以及…...
Grafana :利用Explore方式实现多条件查询
背景 日志统一推送到Grafana上管理。所以,有了在Grafana上进行日志搜索的需求,而进行日志搜索通常需要多条件组合。 解决方案 通过Grafana的Explore的方式实现多条件查询。 直接看操作步骤: 在主页搜索框中输入“Explore” 进入这个界面…...
腾讯技术创作特训营 -- SUPERWINNIE -- AI重塑社交内容
目录 1 什么是AI社交内容 2 案例拆解 3 用LLM做爆文选题 4 用LLM出爆文脚本提示词 1 什么是AI社交内容 任何一个因素被AI取代都是AI社交内容 2 案例拆解 数字人 资讯素材 录屏产品的素材(小红书测试AI产品) 脚本 素材 剪辑 3 用LLM做爆文选题 &…...
AV1技术学习: Compound Prediction
一、双向 Compound Prediction AV1支持两个参考帧的预测通过多种复合模式线性组合。复合预测公式为 其中,权重m(x, y) is scaled by 64 以进行整数计算,R1(x, y)和R2(x, y)表示两个参考块中位于(x, y)的像素。P(x, y)将按比例缩小 1/64 以形成最终的预测…...
watch监听vue2与vue3的写法
watch的属性值 handler:回调函数, 即监听到变化时应该执行的函数,可以是单独的函数或带有 immediate 和 deep 属性的对象watch: {someProperty: function(newVal, oldVal) {// 处理逻辑}}deep: 其值是true或false, 当属性值是对象或数组时,深度观察会监…...
docker搭建普罗米修斯监控gpu
ip8的服务器监控ip110和ip111的服务器 被监控的服务器110和111只需要安装node-export和nvidia-container-toolkit 下载镜像包 docker pull prom/node-exporter docker pull prom/prometheus docker pull grafana/grafana新建目录 mkdir /opt/prometheus cd /opt/prometheus/…...
像 MvvmLight 一样使用 CommunityToolkit.Mvvm 工具包
文章目录 简介一、安装工具包二、实现步骤1.按照MvvmLight 的结构创建对应文件夹和文件2.编辑 ViewModelLocator3.引用全局资源二、使用详情1.属性2.命令3. 消息通知4. 完整程序代码展示运行结果简介 CommunityToolkit.Mvvm 包(又名 MVVM 工具包,以前称为 Microsoft.Toolkit…...
python入门课程Pro(2)--循环
循环 第1课 for循环的基本操作1.循环2.遍历3.for 循环遍历字典(1) 遍历字典的键(2)遍历字典的值(3)遍历字典的键和值 4.练习题(1)班级成绩单(2)最出名的城市(3)修改成绩(…...
今日总结:雪花算法,拉取在线用户
雪花算法: public class SnowflakeIdGenerator {private final long epoch 1626804000000L; // 定义起始时间戳,这里设置为2021-07-21 00:00:00 UTCprivate final long workerIdBits 5L; // 机器ID所占的位数private final long sequenceBits 10L; /…...
前瞻断言与后瞻断言:JavaScript 正则表达式的秘密武器
JavaScript 中的前瞻断言(lookahead)和后瞻断言(lookbehind)相信用过的小伙伴就知道它的威力了,在一些特定的需求场景下,可以做到四两拨千斤的作用,今天让我们来盘点一下在 JavaScript 正则表达…...
昇思MindSpore学习总结十六 —— 基于MindSpore的GPT2文本摘要
1、mindnlp 版本要求 !pip install tokenizers0.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 该案例在 mindnlp 0.3.1 版本完成适配,如果发现案例跑不通,可以指定mindnlp版本,执行!pip install mindnlp0.3.1 !pip install mindnlp …...
React Router 6笔记
一个路由就是一个映射关系 key为路径,value可能是function或component 路由分类 后端路由(node) value是function,用来处理客户端提交的请求注册路由:router.get(path, function(req, res))工作过程:当…...
Android init 中的wait_for_property指令
Android开机优化系列文档-CSDN博客 Android 14 开机时间优化措施汇总-CSDN博客Android 14 开机时间优化措施-CSDN博客根据systrace报告优化系统时需要关注的指标和优化策略-CSDN博客Android系统上常见的性能优化工具-CSDN博客Android上如何使用perfetto分析systrace-CSDN博客A…...
智能合约语言(eDSL)—— 并行化方案——调度算法
3、调度算法 处理区块的时候,我们会同时启动多个线程去执行多个交易,这个时候我们需要一个良好的调度策略,来决定当前的线程是应该执行交易还是验证交易、提前结束还是立刻重新执行交易等,只有有一个良好调度策略才能保证所有交易都稳定有序的执行; 线程数量 这是一个不…...
vue2.0中如何实现数据监听
vue2中实现数据监听的原理 在Vue 2中,数据监听是通过ES5的Object.defineProperty实现的。Vue在初始化数据对象时,会遍历data对象,并使用Object.defineProperty为每个属性设置getter和setter。当你尝试读取或修改数据属性时,这些g…...
kafka开启kerberos和ACL
作者:恩慈 一、部署kafka-KB包 1.上传软件包 依次点击 部署中心----部署组件----上传软件包 选择需要升级的kafka版本并点击确定 2.部署kafka 依次点击部署中心----部署组件----物理/虚拟机部署----选择集群----下一步 选择手动部署-…...
QT+winodow 代码适配调试总结(三)
问题描述: 1、开发测试环境为: A: window10 64位 B: QT版本为4.8.6 C:采用VS2017 C++ Compiler 9.0 (x86)编译器版本 根据总结(二)经验,开发环境的可执行程序显示正常; 2、新的环境运行的时候显示乱码; 经过查阅资料,还是代码环境编码配置的问题,下面为解…...
Linux之旅:常用的指令,热键和权限管理
目录 前言 1. Linux指令 (1) ls (2) pwd 和 cd (3)touch 和 mkdir (4) rmdir 和 rm (5)cp (6)mv (7)…...
简单实用的企业舆情安全解决方案
前言:企业舆情安全重要吗?其实很重要,尤其面对负面新闻,主动处理和应对,可以掌握主动权,避免股价下跌等,那么如何做使用简单实用的企业舆情解决方案呢? 背景 好了,提取词…...
【中项】系统集成项目管理工程师-第2章 信息技术发展-2.1信息技术及其发展-2.1.1计算机软硬件与2.1.2计算机网络
前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...
针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...
echarts使用graphic强行给图增加一个边框(边框根据自己的图形大小设置)- 适用于无法使用dom的样式
pdf-lib https://blog.csdn.net/Shi_haoliu/article/details/148157624?spm1001.2014.3001.5501 为了完成在pdf中导出echarts图,如果边框加在dom上面,pdf-lib导出svg的时候并不会导出边框,所以只能在echarts图上面加边框 grid的边框是在图里…...
