基于Nginx深入浅出亿级流量架构设计(持续更新2023.7.18)

news2024/11/24 10:51:45

基于Nginx深入浅出亿级流量架构设计

  • 环境准备/安装部署
    • Nginx四个发行版本简单介绍
    • Nginx的安装
  • Nginx的目录结构与基本运行原理及其最小配置解析
  • Nginx虚拟主机与域名配置
  • ServerName匹配规则
  • 反向代理在系统结构中的应用场景
    • Nginx的反向代理配置

在这里插入图片描述

环境准备/安装部署

虚拟机使用VMware Workstation Pro 16版本
省略安装系统过程,可参考VMware 安装 Centos7(超详细教程)
本次实验学习基于源码编译安装 nginx 1.21.6
在这里插入图片描述

# 系统环境
3.10.0-862.el7.x86_64
CentOS Linux release 7.5.1804 (Core)

# 设置Yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
yum makecache fast

# 必备工具安装
yum install wget vim net-tools telnet yum-utils -y

# 关闭firewalld selinux
systemctl disable --now firewalld
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
reboot

# 如未关闭防火墙也可放行端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重启防火墙
firewall-cmd --reload

学习时的电脑配置
内存:建议8G以上
磁盘:建议使用SSD
CPU:4核以上主流即可

主机IP地址主机配置安装的软件
lr-nginx-01192.168.100.1112核4GNginx
lr-nginx-02192.168.100.1122核4GNginx
lr-nginx-02192.168.100.1132核4GNginx

Nginx四个发行版本简单介绍

常用版本分为四大阵营

  1. Nginx开源版 http://nginx.org/
  2. Nginx plus 商业版 https://www.nginx.com
  3. Openresty http://openresty.org
  4. Tengine http://tengine.taobao.org

Nginx的安装

基于rpm包进行离线安装

http://nginx.org/packages/centos/7/x86_64/RPMS/

wget -P /opt/ http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.20.0-1.el7.ngx.x86_64.rpm
rpm -ivh /opt/nginx-1.20.0-1.el7.ngx.x86_64.rpm

基于源码编译安装

# 安装相关依赖
yum install gcc pcre pcre-devel zlib zlib-devel -y

# 编译安装
wget -P /opt/ http://nginx.org/download/nginx-1.21.6.tar.gz
tar xf nginx-1.21.6.tar.gz
cd nginx-1.21.6
./configure --prefix=/opt/nginx && make && make install

# 启动Nginx
cd /opt/nginx/sbin/

./nginx           # 启动
./nginx -s stop   # 快速停止
./nginx -s quit   # 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload #重新加载配置

在这里插入图片描述

安装成系统服务并创建服务脚本

vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/opt/nginx/logs/nginx.pid
ExecStartPre=/opt/nginx/sbin/nginx -t -c /opt/nginx/conf/nginx.conf
ExecStart=/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
ExecReload=/opt/nginx/sbin/nginx -s reload
ExecStop=/opt/nginx/sbin/nginx -s stop
ExecQuit=/opt/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target

# 加载系统服务
systemctl daemon-reload
# 启动nginx并设置开机启动
systemctl enable nginx.service --now

Nginx的目录结构与基本运行原理及其最小配置解析

Nginx的目录结构

在这里插入图片描述

基本请求流程

在这里插入图片描述
启动nginx后,/sbin/nginx可执行文件运行,①master开启主进程读取nginx.conf文件并校验配置文件②开启多个子进程响应请求,运行时会有两种进程,主进程master不处理业务协调子进程,子进程worker
等待用户请求接入,读取nginx.conf站点目录,由worker响应并解析,再加载index.html
nginx启动后是多进程的,由主进程fork出的子进程响应请求,master协调子进程

Nginx最小配置解析


worker_processes  1;            # 工作的子进程个数默认为1,对应物理服务器内核CPU数,一个内核对应一个worker_processes

events {                                     # 事件驱动模块
    worker_connections  1024;                # 每一个worker创建多少连接(单个业务进程可接受连接数),默认1024
}

http {
    include       mime.types;                # mime.types(请求头),对应文件后缀名,引入http mime类型
    default_type  application/octet-stream;  # 如果mime类型没有匹配上,默认使用二进制流的的方式传输

    sendfile        on;                      # 数据0拷贝,使用Linux的sendfile(socket,file,len)高效网络传输

    keepalive_timeout  65;                   # 保持连接,超时断开时间

    server {                                 # 虚拟主机(vhost),一个nginx可以运行多个主机,一个主机有自己独立的站点
        listen       80;                     # 当前主机监听端口号,不能重复
        server_name  localhost;              # 主机名(配置域名)或IP地址
        
        charset utf-8;
                                             # location匹配路径, uri(资源)+server_name=url
        location / {                         # http://atguigu.com/xxoo/index.html
            root   html;                     # 文件根目录(相对路径),相对于nginx主目录/opt/nginx
            index  index.html index.htm;     # 默认页名称
        }
                                                 # 服务器端内部错误报错,资源无法访问
        error_page   500 502 503 504  /50x.html; # 报错编码对应页面
        location = /50x.html {
            root   html;
        }
    }
}

Nginx虚拟主机与域名配置

域名、DNS和IP之间的关系

  1. 因为在网络上机器彼此连接只能互相识别IP,而数字标识较难记忆,所以才演化出域名来代替IP地址,当我们将在地址栏输入域名欲跳转到某个页面时,点击提交后会由专门的域名解析服务器(DNS服务器)对我们的域名进行解析,得出域名对应的IP地址再进行连接。所以如果我们直接在地址栏输入与域名对应的IP也可以跳转到同一个页面。
  2. 虽然同一个域名只能绑定一个IP地址,但是因为一个域名可以设定多个DNS服务或者服务器进行解析,同一个域名的每个解析就可以指向不同的IP地址,这样应答快的DNS优先进行解析,能保证最快定向到指定的网站空间去,这是用户所不知道的。

总结

  1. 地址栏输入域名后,会由专门的域名解析服务器
  2. 同一个域名只能绑定一个IP地址
  3. 一个域名可以设定多个DNS服务或者服务器进行解析,同一个域名的每个解析就可以指向不同的IP地址
  4. 应答快的DNS优先进行解析

http协议

HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。
注意:客户端与服务器的角色不是固定的,一端充当客户端,也可能在某次请求中充当服务器。这取决与请求的发起端。HTTP协议属于应用层,建立在传输层协议TCP之上。客户端通过与服务器建立TCP连接,之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现。
HTTP是一种无状态 (stateless) 协议, HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理。这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量的事务, 提高效率。
然而,在许多应用场景中,我们需要保持用户登录的状态或记录用户购物车中的商品。由于HTTP是无状态协议,所以必须引入一些技术来记录管理状态,例如Cookie。

虚拟主机原理

Nginx虚拟主机:Nginx部署在一个物理服务器上,却通过ip、端口、域名对外实现多个访问入口,让客户端以为是多个服务器,这就是虚拟主机
参考文章: Nginx从基本原理到开发实践
原本一台服务器只能对应一个站点,通过虚拟主机技术可以虚拟化成多个站点同时对外提供服务
Notepad++可以更改hosts文件,Nodepad++ 下载:https://notepad-plus.en.softonic.com/download

# 本机hosts文件路径
C:\Windows\System32\drivers\etc
...
192.168.100.111     nginx-devops.com

本机hosts文件设置解析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

# 虚拟主机环境准备

# 准备站点
mkdir /www && cd /www  && mkdir web video
[root@lr-nginx-01 www]# ls
video  web
echo "this is video web site." > video/index.html
echo "this is master web site." > web/index.html

# 基于端口的虚拟主机vhost
...
    server {
        listen       80;
        server_name  localhost;

        charset utf-8;

        location / {
            root   /www/web/;
            index  index.html index.htm;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }       
    server {
        listen       88;
        server_name  localhost;
        
        charset utf-8;
            
        location / {
            root   /www/video;
            index  index.html index.htm;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
...

在这里插入图片描述
在这里插入图片描述

...
# 基于域名的虚拟主机vhost
    server {
        listen       80;
        server_name  www.cloud611.fun;

        charset utf-8;

        location / {
            root   /www/web/;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen       80;
        server_name  video.cloud611.fun;

        charset utf-8;

        location / {
            root   /www/video;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
...

在这里插入图片描述
在这里插入图片描述

公网域名解析与泛域名解析实战

在这里插入图片描述
在这里插入图片描述
DNS解析记录类型及分别代表什么含义?

  1. A记录:所对应的域名匹配一个独立的IP地址,把域名转向到IP地址记录在DNS服务器上
  2. CNAME记录:将域名指向另外一个域名地址上,好处:有可能IP地址主机地址不是固定的,故直接解析到域名
  3. AAAA记录:暂未普及
  4. NS记录:DNS服务器
  5. MX记录:邮件服务器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关于阿里云直接解析内网IP并且可以访问的问题

  1. DNS只是记录了你要解析的IP,无论是内网还是外网,你在当前环境下用域名访问你的内网IP,跟直接访问内网IP一样的道理
  2. 又或者说这种配置是本地hosts作用域提升到了局域网,简单来说是在公网DNS注册了一条记录,这条记录最后会返回给你,本机拿到记录会去找对应的IP

在这里插入图片描述

ServerName匹配规则

可以在同一个servername中配置多个域名
需要注意的是servername匹配分先后顺序,写在前面的匹配上就不会继续往下匹配了

# 完整匹配,我们可以在同一servername中匹配多个域名
server_name www.cloud611.fun video.cloud611.com;

# 通配符匹配
server_name *.cloud611.fun

# 通配符结束匹配
server_name cloud611.*;

# 正则匹配
server_name ~^[0-9]+\.cloud611\.fun$;

server_name的配置格式之正则匹配

server {
    listen       80;
    server_name  ~^(?<user>.+)\.example\.net$;
    ...
}

正则匹配格式,必须以~开头,比如:server_name ~^www\d+\.example\.net$;如果开头没有~,则nginx认为是精确匹配,或者如果匹配字符中含有*号,则会被认为是通配符匹配,不过非法的通配符格式。在逻辑上,需要添加^$锚定符号。注意,正则匹配格式中.为正则元字符,如果需要匹配.,则需要反斜线转义。如果正则匹配中含有{}则需要双引号引用起来,避免nginx报错,如果未加双引号,则nginx会报如下错误:directive "server_name" is not terminated by ";" in ...
特殊匹配格式

server_name "";   匹配Host请求头不存在的情况。
server_name "-";  无任何意义。
server_name "*";  它被错误地解释为万能的名称,它从不用作通用或通配符服务器名称.
                  相反,它提供了server_name_in_redirect指令现在提供的功能.
                  现在不建议使用特殊名称"*",而应使用server_name_in_redirect指令. 

匹配顺序

  1. 精确的名字
  2. 以*号开头的最长通配符名称,例如 *.example.org
  3. 以*号结尾的最长通配符名称,例如 mail.*
  4. 第一个匹配的正则表达式(在配置文件中出现的顺序)

优化

  1. 尽量使用精确匹配;
  2. 当定义大量server_name时或特别长的server_name时,需要在http级别调整server_names_hash_max_sizeserver_names_hash_bucket_size,否则nginx将无法启动。

参考文章:Nginx系列之server_name定义与匹配规则

反向代理在系统结构中的应用场景

在这里插入图片描述

何为反向代理?

  1. 在介绍反向代理之前,先来了解一下正向代理。
  2. 正向代理: 如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。下面是正向代理的原理图。
  3. 由于工作环境原因,日常工作只能局限于单位的局域网,如果想要访问互联网,怎么办呢?这就需要用到正向代理。本人经常用正向代理来进行上网。

在这里插入图片描述

  1. 反向代理:看下面原理图,就一目了然。其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。

在这里插入图片描述

  1. 正向代理和反向代理的区别,一句话就是:如果我们客户端自己用,就是正向代理。如果实在服务器用,我们用户无感知,就是反向代理。
  2. 这里有个问题:反向代理服务器,怎么选择挂在它后面的哪一台具体服务器呢?答案在后文揭晓,这就是负载均衡

参考文章:https://zhuanlan.zhihu.com/p/451825018

Nginx的反向代理配置

# nginx01主机nginx.conf配置
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    server_tokens   off;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  www.cloud611.fun;

        charset utf-8;

        location / {
             proxy_pass http://www.atguigu.com;# 如果不添加www,地址会自动跳转www.atguigu.com而不是阿里云DNS解析
#            root   /www/web/;
#            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

在这里插入图片描述

基于反向代理的负载均衡配置

<!-- 修改192.168.100.112&192.168.100.113 index.html文件 112&113 -->
<!DOCTYPE html>
<html>
 <head>
 <meta charset='utf-8'>
 <title>开始HTML</title>
 </head>
 <body>
 <h1>我是192.168.100.112!!!</h1>
 </body>
</html>

将后端代理服务器转到192.168.100.111上

...
location / {
     proxy_pass http://192.168.100.112;
}
...

在这里插入图片描述

——————————————————————————————————————————

# 和server同一级 http模块下
    upstream upup {
        server 192.168.100.112:80;
        server 192.168.100.113:80;
    }

负载均衡策略

  • 轮询:默认情况下使用轮询方式,逐一转发,这种方式适用于无状态请求。无法保持会话
  • weight(权重):指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream upup {
server 127.0.0.1:8050 weight=10 down;  # down:表示当前的server暂时不参与负载
server 127.0.0.1:8060 weight=1;        # weight:默认为1 weight越大,负载的权重就越大
server 127.0.0.1:8060 weight=1 backup; # backup:其它所有的非backup机器down或者忙的时候,请求backup机器.
}
  • ip_hash:根据客户端的ip地址转发同一台服务器可以保持回话
  • least_conn:最少连接访问
  • url_hash:根据用户访问的url定向转发请求定向流量转发
  • fair:根据后端服务器响应时间转发请求

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

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

相关文章

STM32F4_FLASH模拟EEPROM

目录 前言 1. 内部FLASH简介 2. 内部FLASH写入过程 3. 内部FLASH库函数 4. FLASH的读写保护及解除 5. FLASH相关寄存器 6. 实验程序 6.1 main.c 6.2 STMFlash.c 6.3 STMFlash.h 前言 STM32F4本身并没有自带EEPROM&#xff0c;但是STM32F4具有IAP功能&#xff0c;也就…

初阶数据结构——排序

目录 排序的概念常见排序算法插入排序希尔排序选择排序堆排序冒泡排序快速排序hoare挖坑法前后指针法快排的时间复杂度三路划分三数取中和随机数选中快排的非递归版本快速排序的总结 归并排序归并的递归版本归并的非递归版本 内排序和外排序非比较排序稳定性排序算法复杂度和稳…

测试基础 Android 应用测试总结

目录 启动&#xff1a; 功能介绍&#xff0c;引导图&#xff0c;流量提示等&#xff1a; 权限&#xff1a; 文件错误 屏幕旋转&#xff1a; 流量&#xff1a; 缓存&#xff08;/sdcard/data/com.your.package/cache/&#xff09;&#xff1a; 正常中断&#xff1a; 异…

Android 自定义CheckBox样式,设置切换背景图,类似于RadioButton

文章目录 概要自定义CheckBok资源文件如下使用方法实现效果 概要 目前要实现类似于Radiobutton选择按钮&#xff0c;如果只有一个RadioButton&#xff0c;就不能和radio Group连用&#xff0c;导致选择没办法取消&#xff0c;如果要实现只能代码中进行操作&#xff0c;过于繁琐…

项目管理软件选择指南:最佳实践与避坑指南

当今企业中&#xff0c;协作工具是必不可少的&#xff0c;每个企业都会寻找最适合自己的协作工具来提高工作效率。在这些协作工具中&#xff0c;Zoho Projects项目协作工具是最常用的一种&#xff0c;因为它能够为团队提供一个集任务、项目、文档、IM、目标、日历、甘特图、工时…

MIT 6.829 -- L2 The Internetworking Problem

MIT 6.829 -- L2 The Internetworking Problem 前言The Internetworking Problem: Many Different NetworksGateWays互联网设计原则通用性原则健壮性原则互联网缺点互联网协议标准流程 最早的TCP/IP今天的TCP/IP: IPv4地址分片和重组Time-to-live&#xff08;TTL&#xff09;Ty…

2023 7.17~7.23 周报 (最近读的论文方法论分析)

0 上周回顾 上周完成了RTM的研究学习, 完成了进一步阅读论文所需的知识储备. 同时从代码层面深度解析了正演和RTM存在的关系, 发掘了很多富有参考意义的信息. 1 本周计划 深度剖析论文《Deep-Learning Full-Waveform Inversion Using Seismic Migration Images》的方法体系,…

计算机网络——VLan介绍

学习视频&#xff1a; 网工必会&#xff0c;十分钟搞明白&#xff0c;最常用的VLAN技术_哔哩哔哩_bilibili 技术总结&#xff1a;VLAN&#xff0c;网络中最常用的技术&#xff0c;没有之一_哔哩哔哩_bilibili 全国也没几个比我讲得好的&#xff1a;VLAN虚拟局域网 本来补充了…

微服务day1——微服务入门

一、认识微服务 1、单体架构 将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署。 优点 架构简单部署成本低 缺点 耦合度高 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fPfsQXAn-1689593800699)(https://picture.wangkay.tec…

探索OLED拼接屏的特点及在莱山的场景化应用

涞山oled拼接屏是一种高清晰度的显示屏&#xff0c;由多个oled屏幕拼接而成。它可以用于各种场合&#xff0c;如商业展示、广告宣传、会议演示等。涞山oled拼接屏具有以下特点&#xff1a; 1. 高清晰度&#xff1a;oled屏幕具有高对比度、高亮度、高色彩饱和度等特点&#xff0…

jeecg-boot sql注入漏洞解决

输入下面的链接地址&#xff0c;就会出现下面的获取数据&#xff0c;这个漏洞还是比较严重的啊 http://localhost:8080/nbcio-boot/sys/ng-alain/getDictItemsByTable/%20from%20sys_user/*,%20/x.js 通过上面方式可以获取用户信息了 如下&#xff1a; RequestMapping(valu…

层次分析模型

层次分析法是对一些较为复杂、模糊的问题做出决策的简易方法 这里涉及一个决策概念的理解 初步理解应该是一种评价类的模型 层次分析法的典型应用&#xff1a; 1、用于最佳方案的选取 2、用于评价类分析 3、用于指标体系的优选 层次分析法的名字中层次的原因 层次分析法的步骤…

Skywalking使用说明

需求背景 随着分布式的盛行&#xff0c;系统的复杂度也逐步增加&#xff0c;不同服务间的交互对性能的定位提出了更高的要求。任意一个节点的异常&#xff0c;都可能对业务系统造成损失。对于链路追踪&#xff0c;迫切需要一个优秀的监测工具。 需求如下 功能性需求 请求链…

怎么把word文档转换成pdf文件?这三个方法超级实用!

word文档编辑完成后&#xff0c;通常会将其转换为PDF格式&#xff0c;以使文档内容更加简洁。那么&#xff0c;如何将Word文档转换为PDF呢&#xff1f;下面将介绍三种方法&#xff0c;相信对你会有所帮助。 一、记灵在线工具 首先&#xff0c;在浏览器中打开记灵在线工具的网…

Spring+SpringMVC+JdbcTemplate小Demo

项目目录结构 创建mavenWeb项目 pom文件 spring依赖、spring-web依赖、spring-webmvc依赖、spring-test、junit依赖 servlet依赖、jsp依赖、jstl、standard依赖 jackson的core和databind和annotations依赖、fastjson依赖、 文件上传的commons-fileupload和commons-io依赖 日志c…

图片修补 EdgeConnect 论文的阅读与翻译:生成边缘轮廓先验,再填补缺失内容

本文将要介绍的论文就是&#xff1a;EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning&#xff0c;因为知乎在&#xff08;2019-02-02&#xff09;前&#xff0c;缺少详细介绍这篇论文的文章&#xff0c;而我最近需要复现它&#xff0c;所以顺便在这里…

消息重试框架 Spring-Retry 和 Guava-Retry

一 重试框架之Spring-Retry 1.Spring-Retry的普通使用方式 2.Spring-Retry的注解使用方式 二 重试框架之Guava-Retry 总结 图片 一 重试框架之Spring-Retry Spring Retry 为 Spring 应用程序提供了声明性重试支持。它用于Spring批处理、Spring集成、Apache Hadoop(等等)。…

智能应急疏散系统在公共建筑中的的应用

安科瑞 华楠 摘 要&#xff1a;随着大型公共建筑物的不断增多&#xff0c;其所产生的各种建筑安全隐患问题也在逐渐加剧&#xff0c;一旦出现火灾险情&#xff0c;要想从公共建筑中安全的脱离出来&#xff0c;其难度也是可想而知。因此&#xff0c;这就需要在进行公共建筑设计时…

Java打怪升级路线的相关知识

第一关:JavaSE阶段 1、计算机基础 2、java入门学习 3、java基础语法 4、流程控制和方法 5、数组 6、面向对象编程 7、异常 8、常用类 9、集合框架 10、IO 11、多线程 12、GUI编程 13、网络编程 14、注解与反射 15、JUC编程 16、JVM探究 17、23种设计模式 18、数据结构与算法 1…

mysql数字开头字符串排序

表结构 CREATE TABLE building (id bigint NOT NULL,name varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT 名称,full_name varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT 全称,PRIMARY KEY (id) USIN…