培训第三十二天(学习playbook-roles,脚本创建数据库和表,mycat读写分离)

news2024/11/26 10:37:40

上午

1、roles(角色)介绍

roles(⻆⾊): 就是通过分别将variables, tasks及handlers等放置于单独 的⽬录中,并可以便捷地调⽤它们的⼀种机制。

假设我们要写⼀个playbook来安装管理lamp环境,那么这个 playbook就会写很⻓。所以我们希望把这个很⼤的⽂件分成多个功能 拆分, 分成apache管理,php管理,mysql管理,然后在需要使⽤的时候 直接调⽤就可以了,以免重复写。就类似编程⾥的模块化的概念,以 达到代码复⽤的效果。

2、roles目录介绍

 files:⽤来存放由copy模块或script模块调⽤的⽂件。
 tasks:⾄少有⼀个main.yml⽂件,定义各tasks。
 handlers:有⼀个main.yml⽂件,定义各handlers。
 templates:⽤来存放jinjia2模板。
 vars:有⼀个main.yml⽂件,定义变量。
 meta:有⼀个main.yml⽂件,定义此⻆⾊的特殊设定及其依赖关系。

注意: 在每个⻆⾊的⽬录中分别创建files, tasks,handlers,templates,vars和meta⽬录,⽤不到的⽬录可以创建为空⽬录。

3、使用roles安装httpd和mysql

1)创建roles角色基础目录与文件
 [root@1 ~]# cd /etc/ansible/roles/
 [root@1 roles]# mkdir {httpd,mysql}
 [root@1 roles]# mkdir {httpd,mysql}/{tasks,handlers,vars,meta}
 [root@1 roles]# touch {httpd,mysql}/{tasks,handlers,vars,meta}/main.yml
 [root@1 roles]# tree 
 .
 ├── httpd
 │   ├── files
 │   ├── handlers
 │   │   └── main.yml
 │   ├── meta
 │   │   └── main.yml
 │   ├── tasks
 │   │   └── main.yml
 │   ├── templates
 │   └── vars
 │       └── main.yml
 ├── mysql
    ├── files
    ├── handlers
    │   └── main.yml
    ├── meta
    │   └── main.yml
    ├── tasks
    │   └── main.yml
    ├── templates
    └── vars
        └── main.yml
2)创建playbook调用角色
 [root@1 roles]# vim /etc/ansible/playbook/test002.yml
 ---
 - hosts: s
   remote_user: root
   roles:
   - httpd
   - mysql 
 [root@1 roles]# cd
 [root@1 ~]# vim /etc/ansible/roles/mysql/tasks/main.yml 
 ---
 - name: 卸载mysql
   yum: name=mysql state=absent
 - name: 安装mysql
   yum: name=mysql state=present
 [root@1 ~]# vim /etc/ansible/roles/httpd/tasks/main.yml
 ---
 - name: 卸载httpd
   yum: name=httpd state=absent
 - name: 安装httpd
   yum: name=httpd state=present
 - name: 启动httpd
   service: name=httpd state=started enabled=yes
 [root@1 ~]# ansible-playbook /etc/ansible/playbook/test002.yml 

4、练习:使用role来实现lnmp

1、nginx改配置8080

2、mariadb中创建eleme数据库

3、创建表 t_user

idint主键约束,自增编号
usernamevarchar非空约束账号
passwordvarchar非空约束密码
remarkvarchar没有约束账号权限说明
1)使用剧本修改nginx的端口号为80
 [root@m0 ~]# vim /etc/ansible/playbook/nginx.yml
 ---
 - hosts: s
   remote_user: root
   tasks:
   - name: 卸载httpd
     yum: name=httpd   state=absent
   - name: 安装nginx
     yum: name=nginx   state=present
   - name: 修改资源文件
     shell: echo 'i am nginx,port is 80' > /usr/share/nginx/html/index.html
   - name: 修改端口
     command: sed -i '/listen/ s/80/8080/g' /etc/nginx/nginx.conf
     notify:
   - restart nginx
   - name: 启动服务
     service: name=nginx   state=started  enabled=yes
   handlers:
   - name: restart nginx
     service: name=nginx   state=restarted
  ...
 [root@m0 ~]# ansible-playbook /etc/ansible/playbook/nginx.yml
2)安装mariadb,命令行形式创建数据库和表
 [root@1 ~]# yum -y remove *mariadb*
 [root@1 ~]# yum -y install mariadb
 [root@1 ~]# yum -y install mariadb-server.x86_64 
 [root@1 ~]# yum -y install mariadb-devel.x86_64 
 [root@1 ~]# systemctl start mariadb
 [root@1 ~]# mysql
 MariaDB [(none)]> quit
 Bye
 [root@1 ~]# mysql << EOF
 > create database if not exists eleme charset utf8mb4;
 > use eleme;
 > create table user(id int primary key auto_increment,username varchar(45) not null,password varchar(45) not null,remark varchar(45));
 > quit
 > EOF
 [root@1 ~]# mysql
 MariaDB [(none)]> show databases;
 +--------------------+
 | Database           |
 +--------------------+
 | information_schema |
 | eleme              |
 | mysql              |
 | performance_schema |
 | test               |
 +--------------------+
 5 rows in set (0.00 sec)
 MariaDB [test]> use eleme;
 Database changed
 MariaDB [eleme]> show tables;
 +-----------------+
 | Tables_in_eleme |
 +-----------------+
 | user            |
 +-----------------+
 1 row in set (0.00 sec)
3)使用roles安装mariadb并执行脚本创建数据库和表
 [root@1 ~]# cd /etc/ansible/roles/
 [root@1 roles]# cp -r httpd mariadb
 [root@1 roles]# cd mariadb/
 [root@1 mariadb]# ls
 files  handlers  meta  tasks  templates  vars
 [root@1 mariadb]# vim tasks/main.yml 
 ---
 - name: 卸载mariadb
   yum: name=mariadb,mariadb-server,mariadb-devel state=absent
 - name: 安装mariadb
   yum: name=mariadb,mariadb-server,mariadb-devel state=present
 - name: 启动mariadb
   service: name=mariadb state=started enabled=yes
 - name: 执行脚本,创建数据库和数据表
   script: /etc/ansible/script/dbtable.sh
 [root@1 mariadb]# cd /etc/ansible/
 [root@1 ansible]# mkdir script
 [root@1 ansible]# cd script/
 [root@1 script]# vim dbtable.sh
 #!/bin/bash
 mysql << EOF
 create database if not exists eleme charset utf8mb4;
 use eleme;
 create table t_user(
 id int primary key auto_increment,
 username varchar(45) not null,
 password varchar(45) not null,
 remark varchar(45) 
 );
 quit
 EOF
 [root@1 script]# vim /etc/ansible/playbook/test003.yml
 ---
 - hosts: s
   remote_user: root
   roles:
   - mariadb
 [root@1 script]# cd /etc/ansible/playbook/
 [root@1 playbook]# ansible-playbook test003.yml 

下午

配置⼀主⼆从的mysql服务器 mysql57

1)mysql服务器端⼝3306,不要关闭防⽕墙
 # 主从配置
 [root@mysql57 ~]# firewall-cmd --permanent --add-port=3306/tcp 
 success
 [root@mysql57 ~]# firewall-cmd --reload 
 success
 [root@mysql57 ~]# firewall-cmd --list-ports 
 3306/tcp
 96  yum -y install lrzsz
 66  tar -zxf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz 
 67  cp -r mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql
 68  mkdir /usr/local/mysql/mysql-files
 69  useradd -r -s /sbin/nologin mysql
 70  chown mysql:mysql /usr/local/mysql/mysql-files/
 71  chmod 750 /usr/local/mysql/mysql-files/
 72  rm -rf /etc/my.cnf
 # 主配置
 73  /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql
 74  /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
 76  cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql57
 77  service mysql57 start
 79  sed -i '$aexport PATH=/usr/local/mysql/bin:$PATH' /etc/profile
 80  source /etc/profile
 vim /usr/local/mysql/my.cnf
 [mysqld]
 basedir=/usr/local/mysql
 datadir=/usr/local/mysql/data
 socket=/tmp/mysql.sock
 activate_all_roles_on_login=on
 port=3306
 log-error=/usr/local/mysql/data/db01-master.err
 log-bin=/usr/local/mysql/data/binlog
 server-id=10
 character_set_server=utf8mb4
 service mysql57 restart
 81  mysql -p'zc0fLfoM%SDP'
  mysql> alter user 'root'@'localhost' identified by '123';
  Query OK, 0 rows affected (0.15 sec)     //修改root密码
  mysql> create user 'slave0'@'%' identified by '123';
  Query OK, 0 rows affected (0.03 sec)      //创建slave用户
  mysql> grant replication slave on *.* to 'slave0'@'%';
  Query OK, 0 rows affected (0.02 sec)      //授予replication slave权限
  mysql> flush privileges;                  //重新加载权限表
  Query OK, 0 rows affected (0.00 sec)
  mysql> flush tables with read lock;       //刷新所有表并施加一个全局读锁
  Query OK, 0 rows affected (0.01 sec)
  mysql> show master status;                //查看主服务器当前二进制日志的状态信息
  +---------------+----------+--------------+------------------+-------------------+
  | File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  +---------------+----------+--------------+------------------+-------------------+
  | binlog.000003 |     1178 |              |                  |                   |
  +---------------+----------+--------------+------------------+-------------------+
  1 row in set (0.00 sec)
  rm -rf /usr/local/mysql/data/auto.cnf
  rsync -av /usr/local/mysql/data root@10.0.0.58:/usr/local/mysql/
  rsync -av /usr/local/mysql/data root@10.0.0.59:/usr/local/mysql/
 # 从配置
 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql57
 service mysql57 start
 sed -i '$aexport PATH=/usr/local/mysql/bin:$PATH' /etc/profile
 source /etc/profile
 vim /usr/local/mysql/my.cnf
 [mysqld]
 basedir=/usr/local/mysql
 datadir=/usr/local/mysql/data
 socket=/tmp/mysql.sock
 activate_all_roles_on_login=on
 port=3310
 log-error=/usr/local/mysql/data/db01-slave.err
 relay-log=/usr/local/mysql/data/relaylog
 server-id=11
 character_set_server=utf8mb4
 service mysql57 restart
 mysql -p'123'
 mysql> change master to
      -> master_host='10.0.0.57',
      -> master_user='slave0',
      -> master_password='123',
      -> master_port=3306,
      -> master_log_file='binlog.000003',
      -> master_log_pos=1178;
  Query OK, 0 rows affected, 9 warnings (0.02 sec)
  mysql> start slave;
  Query OK, 0 rows affected, 1 warning (0.03 sec)
  mysql> show slave status\G
  *************************** 1. row ***************************
                 Slave_IO_State: Waiting for source to send event
                    Master_Host: 10.0.0.57
                    Master_User: slave
                    Master_Port: 3306
                  Connect_Retry: 60
                Master_Log_File: binlog.000003
            Read_Master_Log_Pos: 1178
                 Relay_Log_File: relaylog.000002
                  Relay_Log_Pos: 323
          Relay_Master_Log_File: binlog.000003
               Slave_IO_Running: Yes
              Slave_SQL_Running: Yes
2)在mysql中添加eleme数据库设置为utf8mb4
 [root@mysql57 ~]# mysql -p'123'
 mysql> create database if not exists eleme charset utf8mb4;
 Query OK, 1 row affected (0.00 sec)
 mysql> show databases;
 +--------------------+
 | Database           |
 +--------------------+
 | information_schema |
 | eleme              |
 | mysql              |
 | performance_schema |
 | sys                |
 +--------------------+
 6 rows in set (0.00 sec)
3)添加表t_user
 mysql> create table eleme.t_user(
     -> id int not null primary key,
     -> name varchar(32) not null,
     -> username varchar(32) not null,
     -> password varchar(32) not null,
     -> remark varchar(32) not null
     -> );
 Query OK, 0 rows affected (0.01 sec)
 mysql> desc eleme.t_user;
 +----------+--------------+------+-----+---------+-------+
 | Field    | Type         | Null | Key | Default | Extra |
 +----------+--------------+------+-----+---------+-------+
 | id       | int(11)      | NO   | PRI | NULL    |       |
 | name     | varchar(32) | NO   |     | NULL    |       |
 | username | varchar(32) | NO   |     | NULL    |       |
 | password | varchar(32) | NO   |     | NULL    |       |
 | remark   | varchar(32) | NO   |     | NULL    |       |
 +----------+--------------+------+-----+---------+-------+
 5 rows in set (0.02 sec)
4)添加2⾏记录
 mysql> insert into eleme.t_user values(1,'超级管理员','admin','admin','超级管理员'),(2,'普通用户','guest','guest','普通用户');
 Query OK, 2 rows affected (0.00 sec)
 Records: 2  Duplicates: 0  Warnings: 0
 mysql> select * from eleme.t_user;
 +----+-----------------+----------+----------+-----------------+
 | id | name            | username | password | remark          |
 +----+-----------------+----------+----------+-----------------+
 |  1 | 超级管理员      | admin    | admin    | 超级管理员      |
 |  2 | 普通用户        | guest    | guest    | 普通用户        |
 +----+-----------------+----------+----------+-----------------+
 2 rows in set (0.00 sec)
5)使⽤mycat为3台数据库设置负载均衡(读写分离)
 [root@mycat ~]# systemctl stop firewalld
 [root@mycat ~]# systemctl disable firewalld
 [root@mycat ~]# ls
 anaconda-ks.cfg             Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
 jdk-8u192-linux-x64.tar.gz  v
 [root@mycat ~]# tar -xf jdk-8u192-linux-x64.tar.gz 
 [root@mycat ~]# tar -xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz 
 [root@mycat ~]# cp -r jdk1.8.0_192/ /usr/local/jdk
 [root@mycat ~]# cp -r mycat/ /usr/local/
 [root@mycat ~]# ls /usr/local/jdk/
 bin             lib          src.zip
 COPYRIGHT       LICENSE      THIRDPARTYLICENSEREADME-JAVAFX.txt
 include         man          THIRDPARTYLICENSEREADME.txt
 javafx-src.zip  README.html
 jre             release
 [root@mycat ~]# sed -i '$aexport JAVA_HOME=/usr/local/jdk' /etc/profile
 [root@mycat ~]# source /etc/profile
 [root@mycat ~]# $JAVA_HOME
 -bash: /usr/local/jdk: 是一个目录
 [root@mycat ~]# sed -i '$aexport PATH=$PATH:$JAVA_HOME/bin' /etc/profile
 [root@mycat ~]# source /etc/profile
 [root@mycat ~]# $PATH
 -bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/jdk/bin: 没有那个文件或目录
 [root@mycat ~]# javac -version 
 javac 1.8.0_192
 [root@mycat ~]# ls /usr/local/mycat/
 bin  catlet  conf  lib  logs  version.txt
 [root@mycat ~]# ll /usr/local/mycat/
 总用量 12
 drwxr-xr-x. 2 root root  190 8月  15 15:19 bin
 drwxr-xr-x. 2 root root    6 8月  15 15:19 catlet
 drwxr-xr-x. 4 root root 4096 8月  15 15:19 conf
 drwxr-xr-x. 2 root root 4096 8月  15 15:19 lib
 drwxr-xr-x. 2 root root    6 8月  15 15:19 logs
 -rwxr-xr-x. 1 root root  219 8月  15 15:19 version.txt
 [root@mycat ~]# ls /usr/local/mycat/bin/mycat      
 [root@mycat ~]# vim /usr/local/mycat/conf/server.xml
         <user name="li" defaultAccount="true">
                 <property name="password">li</property>
                 <property name="schemas">eleme</property>
                 <!-- 表级 DML 权限设置 -->
                 <!--            
                 <privileges check="false">
                         <schema name="TESTDB" dml="0110" >
                                 <table name="tb01" dml="0000"></table>
                                 <table name="tb02" dml="1111"></table>
                         </schema>
                 </privileges>           
                  -->
         </user>
 <!--
         <user name="user">
                 <property name="password">user</property>
                 <property name="schemas">TESTDB</property>
                 <property name="readOnly">true</property>
         </user>
 -->
 [root@mycat ~]# vim /usr/local/mycat/conf/schema.xml

 [root@mycat ~]# /usr/local/mycat/bin/mycat start
 Starting Mycat-server...
 [root@mycat ~]# netstat -lnput | grep 8066
 tcp6       0      0 :::8066                 :::*                    LISTEN      1336/java         

6、配置静态资源服务器,为前段提供图⽚和视频

7、部署2台有java17.0.3环境的后端服务器,端⼝8080,不关防⽕墙

8、部署nginx代理java服务器,负载均衡策略为轮询问,端⼝为80

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

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

相关文章

入门STM32—外部中断

外部中断的存在使得微控制器能够及时响应外部事件&#xff0c;避免频繁的轮询操作&#xff0c;从而提高系统的实时性、效率和低功耗性能。 1.什么是外部中断&#xff1f; 外部中断是指微控制器接收到外部引脚的信号变化时触发的中断。STM32F103系列微控制器支持多个外部中断线…

破烂行情空仓,换两融深圳融资融券利率最低是多少?4-5%?

最近行情稀烂&#xff0c;持续缩量&#xff0c;已经空仓很久了&#xff0c;刚好趁这个机会换个融资融券账户&#xff01;现在深圳融资融券利率最低能做到什么水平&#xff1f; 融资融券是什么&#xff1f; 融资融券是股票交易市场上的一种投资方式&#xff0c;也被称为证券信…

python中len是什么

Python len() 方法返回字符串长度。 len()方法语法&#xff1a; len( str ) 返回值&#xff1a; 返回字符串长度。 以下实例展示了len()的使用方法&#xff1a; #!/usr/bin/python str "this is string example....wow!!!"; print "字符串长度: ", len…

Leetcode JAVA刷刷站(69)x的平方根

一、题目概述 二、思路方向 在Java中&#xff0c;计算一个非负整数x的算术平方根&#xff0c;并返回其整数部分&#xff0c;你可以使用二分查找法。这是因为平方根函数是单调递增的&#xff0c;所以我们可以利用二分查找在合理的时间复杂度内找到结果。 三、代码实现 public…

html+css+js网页设计 天猫首页

htmlcssjs网页设计 天猫首页 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#xff0c;访问…

实现el-table 两列多选框且不可同时勾选,可单选,可多选

1.页面实现效果&#xff1a; 审核通过可批量处理&#xff0c;可单选&#xff1b;审核不通过&#xff0c;单选&#xff0c;但两者不可同时勾选☑️ 2.代码如下 <template lang"pug"> .financing-order-tab.table-container.btns(style"margin-bottom: 15p…

Tomcat使用及负载均衡(最全源码安装及配置使用教程)

目录 一 Tomcat概述 1.1 Tomcat 简介 1.2 Tomcat 下载 二 Tomcat 单主机配置 2.1 Tomcat 环境配置 2.2 Tomcat 安装与添加系统启动 2.3 Tomcat 启动与停止 三 Tomcat 配置文件及反向代理 3.1 配置文件详解 3.2 反向代理实现Tomcat部署 四 Memcached安装 4.1 简介 …

Ollama 企业私有化部署大模型最佳解决方案

为什么要私有化部署大模型&#xff1f; 很多企业为了控制成本和减少核心数据外泄的风险&#xff0c;会通过私有化部署大模型&#xff0c;来控制成本和保障企业的数据安全。 说到本地化部署&#xff0c;这时就需要说到Ollama框架了。 Ollama 是什么&#xff1f; Ollama 是一个开…

霸王茶姬小程序任务脚本

霸王茶姬小程序任务脚本 小白操作----仅供学习研究参考 功能&#xff1a; 积分签到 解析 该脚本用于“霸王茶姬小程序”的签到和积分查询操作。通过模拟网络请求登录账号&#xff0c;获取个人信息&#xff0c;执行每日签到&#xff0c;并查询积分情况。支持多账号操作&#…

3.js - 使用着色器实现各种图形

有更多案例&#xff0c;私我 main.js import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls import * as dat from dat.gui import { GUI } from three/examples/jsm/libs/lil-gui.module.min.js// ts-ignore import basi…

一篇初学者入门Python匿名函数与Lambda表达式详细教程

首先要了解了如何定义和使用函数的参数,以及如何从一个函数返回值.这篇文章将深入介绍Python中的“匿名函数”和“Lambda表达式”,这两个概念在实际编程中非常有用 如果你对Python感兴趣的话&#xff0c;可以试试我整理的这一份全套的Python学习资料&#xff0c;【点击这里】免…

数据库表转为库表设计文档

开发完之后&#xff0c;就一大堆文档需要写的&#xff0c;其中就有库表设计文档&#xff0c;所以直接写个接口&#xff0c;直接把库表转为库表设计文档就行&#xff0c;省一大堆时间摸鱼了。直接贴代码。 pom文件引入依赖 <!--引入数据库表结构文档生成器Screw依赖--> &…

《驾驭未来:大型语言模型的理论与实践》—— 探索大模型的奥秘

在这个信息爆炸的时代&#xff0c;人工智能尤其是大型语言模型&#xff08;LLM&#xff09;已经成为推动科技进步的关键力量。无论是科学研究、商业应用还是日常生活&#xff0c;大型语言模型都在不断地改变着我们的世界。对于那些渴望深入了解这一前沿技术的人来说&#xff0c…

JAVA实现单词词频统计-辅助英文考试学习

一、基于GUI的可以自行输入的英文单词词频统计软件

SpingBoot集成kafka发送读取消息

SpingBoot集成kafka开发 kafka的几个常见概念 1、springboot和kafka对应版本&#xff08;重要&#xff09;2、创建springboot项目&#xff0c;引入kafka依赖2.1、生产者EventProducer2.2、消费者EventConsumer2.3、启动生产者的方法SpringBoot01KafkaBaseApplication2.4、appli…

小程序学习day10-自定义组件的data数据、方法、属性,data与properties的关系、自定子组件之数据监听器

39、WXS脚本&#xff08;小程序独有的一套脚本语言&#xff09;&#xff08;续&#xff09; &#xff08;6&#xff09;自定义组件的data数据、方法、属性 1&#xff09;自定义组件的data数据&#xff08;在小程序组件中&#xff0c;用于组件模版渲染的私有数据&#xff09; …

定格精彩瞬间!详解六自由度技术原理及应用

在体育赛事中&#xff0c;观赏各项目的精彩瞬间&#xff0c;欣赏运动员的卓越表现是观众们最为关注的焦点。以体操跳马为例&#xff0c;运动员们全力助跑&#xff0c;然后奋力起跳、腾空&#xff0c;接着精准的推手和转体动作&#xff0c;最后稳稳落地&#xff0c;整个动作行云…

【JAVA CORE_API】Day19 多线程API(2)、多线程并发安全问题、同步

多线程API 进程和线程 进程&#xff1a;进程就像是一个程序在电脑里运行时的一个实例。你可以把它想象成一个独立的小工人&#xff0c;专门负责完成某项任务&#xff08;比如打开浏览器、播放音乐&#xff09;。每个进程都有自己独立的资源&#xff08;比如内存&#xff09;和…

python 可迭代,迭代器,生成器,装饰器

1. 可迭代&#xff08;Iterable&#xff09; 可迭代 是指一个对象可以返回一个迭代器的对象。也就是说&#xff0c;它实现了 __iter__() 方法或 __getitem__() 方法。常见的可迭代对象有列表、元组、字符串、字典和集合。 from collections.abc import Iterablei 100 s &qu…

墙裂推荐!云上机密计算,阿里云上体验了一下海光内存加密和远程认证

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 机密计算目录 前言1、构…