云原生全栈体系(一)
云平台核心
第一章 为什么用云平台
- 环境统一
- 按需付费
- 即开即用
- 稳定性强
一、国内常见云平台
- 阿里云、百度云、腾讯云、华为云、青云…
二、国外常见云平台
- 亚马逊 AWS、微软 Azure …
三、公有云
-
购买云服务商提供的公共服务器
-
公有云是最常见的云计算部署类型。公有云资源(例如服务器和存储空间)由第三方云服务提供商拥有和运营,这些资源通过 Internet 提供。在公有云中,所有硬件、软件和其他支持性基础结构均为云提供商所拥有和管理。Microsoft Azure 是公有云的一个示例。
-
在公有云中,你与其他组织或云“租户”共享相同的硬件、存储和网络设备,并且你可以使用 Web 浏览器访问服务和管理帐户。公有云部署通常用于提供基于 Web 的电子邮件、网上办公应用、存储以及测试和开发环境。
-
公有云优势:
- 成本更低:无需购买硬件或软件,仅对使用的服务付费。
- 无需维护:维护由服务提供商提供。
- 近乎无限制的缩放性:提供按需资源,可满足业务需求。
- 高可靠性:具备众多服务器,确保免受故障影响。
- 可用性: N个9 9 全年的故障时间: 365243600*(1-99.9999%)
四、私有云
-
自己搭建云平台,或者购买
-
私有云由专供一个企业或组织使用的云计算资源构成。私有云可在物理上位于组织的现场数据中心,也可由第三方服务提供商托管。但是,在私有云中,服务和基础结构始终在私有网络上进行维护,硬件和软件专供组织使用。
-
这样,私有云可使组织更加方便地自定义资源,从而满足特定的 IT 需求。私有云的使用对象通常为政府机构、金融机构以及其他具备业务关键性运营且希望对环境拥有更大控制权的中型到大型组织。
-
私有云优势:
- 灵活性更强:组织可自定义云环境以满足特定业务需求。
- 控制力更强:资源不与其他组织共享,因此能获得更高的控制力以及更高的隐私级别。
- 可伸缩性更强:与本地基础结构相比,私有云通常具有更强的可伸缩性。
五、总结
-
没有一种云计算类型适用于所有人。多种不同的云计算模型、类型和服务已得到发展,可以满足组织快速变化的技术需求。
-
部署云计算资源有三种不同的方法:公共云、私有云和混合云。采用的部署方法取决于业务需求。
第二章 核心构架
一、所需软件
- electerm: https://electerm.github.io/electerm/
- xshell
二、注册云平台
- 阿里云 aliyun.com
- 腾讯云 cloud.tencent.com
- 华为云 huaweicloud.com
- 青云 qingcloud.com
- 百度云 cloud.baidu.com
三、基础概念
- 云服务器作为应用的最终载体
- VPC为所有云服务器提供网络隔离
- 所有云服务器都是绑定某个私有网络
- 安全组控制每个服务器的防火墙规则
- 公网IP使得资源可访问
- 端口转发的方式访问到具体服务器
四、实战
- 开通按量付费服务器
- 开通基于VPC的服务器集群
- 同一VPC下的服务器可互通,不同vpc下的服务器在物理层做了网络隔离,不可互通。
- 同一VPC下的服务器可互通,不同vpc下的服务器在物理层做了网络隔离,不可互通。
Docker 基础
第一章 Docker基本概念
一、解决的问题
1. 统一标准
1.1 应用构建
- Java、C++、JavaScript
- 打成软件包
- .exe
- docker build … 镜像
1.2 应用分享
- 所有软件的镜像放到一个指定地方 docker hub
- 安卓,应用市场
1.3 应用运行
- 统一标准的 镜像
- docker run
1.4 虚拟化技术
- 基础镜像GB级别
- 创建使用稍微复杂
- 隔离性强
- 启动速度慢
- 移植与分享不方便
1.5 容器化技术
- 基础镜像MB级别
- 创建简单
- 隔离性强
- 启动速度秒级
- 移植与分享方便
2. 资源隔离
- cpu、memory资源隔离与限制
- 访问设备隔离与限制
- 网络隔离与限制
- 用户、用户组隔离限制
二、架构
-
Docker_Host:
- 安装Docker的主机
-
Docker Daemon:
- 运行在Docker主机上的Docker后台进程
-
Client:
- 操作Docker主机的客户端(命令行、UI等)
-
Registry:
- 镜像仓库
- Docker Hub
-
Images:
- 镜像,带环境打包好的程序,可以直接启动运行
-
Containers:
- 容器,由镜像启动起来正在运行中的程序
-
交互逻辑
- 装好Docker,然后去 软件市场 寻找镜像,下载并运行,查看容器状态日志等排错
三、安装
1. centos下安装docker
1.1 移除以前docker相关包
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
1.2 配置yum源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.3 安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io#以下是在安装k8s的时候使用
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6
1.4 启动
systemctl enable docker --now
1.5 配置加速
- 这里额外添加了docker的生产环境核心配置cgroup
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
第二章 Docker命令实战
一、基础实战
1. 找镜像
- 去docker hub,找到nginx镜像
docker pull nginx #下载最新版镜像名:版本名(标签)docker pull nginx:1.20.1docker pull redis #下载最新
docker pull redis:6.2.4## 下载来的镜像都在本地
docker images #查看所有镜像redis = redis:latestdocker rmi 镜像名:版本号/镜像id
2. 启动容器
- 启动nginx应用容器,并映射88端口,测试的访问
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]【docker run 设置项 镜像名 】 镜像启动运行的命令(镜像里面默认有的,一般不会写)# -d:后台运行
# --restart=always: 开机自启
docker run --name=mynginx -d --restart=always -p 88:80 nginx# 查看正在运行的容器
docker ps
# 查看所有
docker ps -a
# 删除停止的容器
docker rm 容器id/名字
docker rm -f mynginx #强制删除正在运行中的#停止容器
docker stop 容器id/名字
#再次启动
docker start 容器id/名字#应用开机自启
docker update 容器id/名字 --restart=always
3. 修改容器内容
- 修改默认的index.html 页面
3.1 进容器内部修改
# 进入容器内部的系统,修改容器内容
docker exec -it 容器id /bin/bash
3.2 挂载数据到外部修改
docker run --name=mynginx \
-d --restart=always \
-p 88:80 -v /data/html:/usr/share/nginx/html:ro \
nginx# 修改页面只需要去 主机的 /data/html
4. 提交改变
- 将自己修改好的镜像提交
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]docker commit -a "alex" -m "首页变化" 341d81f7504f alexnginx:v1.0
镜像传输
# 将镜像保存成压缩包
docker save -o abc.tar alexnginx:v1.0# 别的机器加载这个镜像
docker load -i abc.tar# 离线安装
5. 推送远程仓库
- 推送镜像到docker hub;应用市场
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
# 把旧镜像的名字,改成仓库要求的新版名字
docker tag alexnginx:v1.0 alex/alexnginx:v1.0# 登录到docker hub
docker login docker logout(推送完成镜像后退出)# 推送
docker push alex/alexnginx:v1.0# 别的机器下载
docker pull alex/alexnginx:v1.0
6. 补充
docker logs 容器名/id 排错docker exec -it 容器id /bin/bash# docker 经常修改nginx配置文件
docker run -d -p 80:80 \
-v /data/html:/usr/share/nginx/html:ro \
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf \
--name mynginx-02 \
nginx#把容器指定位置的东西复制出来
docker cp 5eff66eec7e1:/etc/nginx/nginx.conf /data/conf/nginx.conf
#把外面的内容复制到容器里面
docker cp /data/conf/nginx.conf 5eff66eec7e1:/etc/nginx/nginx.conf
二、进阶实战
1. 编写自己的应用
- 编写一个HelloWorld应用
- https://start.spring.io/
2. 将应用打包成镜像
- 编写Dockerfile将自己的应用打包镜像
2.1 以前
- Java为例
- SpringBoot打包成可执行jar
- 把jar包上传给服务
- 服务器运行java -jar
2.2 现在
- 所有机器都安装Docker,任何应用都是镜像,所有机器都可以运行
2.3 怎么打包-Dockerfile
FROM openjdk:8-jdk-slim
LABEL maintainer=alexCOPY target/*.jar /app.jarENTRYPOINT ["java","-jar","/app.jar"]
docker build -t java-demo:v1.0 .
3. 启动容器
3.1 启动应用容器
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0
3.2 分享镜像
# 登录docker hub
docker login#给旧镜像起名
docker tag java-demo:v1.0 alex/java-demo:v1.0# 推送到docker hub
docker push alex/java-demo:v1.0# 别的机器
docker pull alex/java-demo:v1.0# 别的机器运行
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0
4. 部署中间件
- 部署一个Redis+应用,尝试应用操作Redis产生数据
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]#redis使用自定义配置文件启动docker run -v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d --name myredis \
-p 6379:6379 \
redis:latest redis-server /etc/redis/redis.conf
相关文章:

云原生全栈体系(一)
云平台核心 第一章 为什么用云平台 环境统一按需付费即开即用稳定性强 一、国内常见云平台 阿里云、百度云、腾讯云、华为云、青云… 二、国外常见云平台 亚马逊 AWS、微软 Azure … 三、公有云 购买云服务商提供的公共服务器 公有云是最常见的云计算部署类型。公有云资…...

【【51单片机直流电机调速】】
学会电机调速,掌握中国速度 PWM的生成方法 先用户设定一个比较值,然后计数器定时自增。 当计数器<比较值,输出0 当计数器>比较值,输出1 main.c #include <REGX52.H> #include"delay.h" #include"…...

【Spring Boot】
目录 🍪1 Spring Boot 的创建 🎂2 简单 Spring Boot 程序 🍰3 Spring Boot 配置文件 🍮3.1 properties 基本语法 🫖3.2 yml 配置文件说明 🍭3.2.1 yml 基本语法 🍩3.3 配置文件里的配置类…...

使用docker 部署自己的chatgpt
直接docker部署 docker run --name chatgpt-web -d -p 3002:3002 --env OPENAI_API_KEYyour_api_key chenzhaoyu94/chatgpt-web:latestDocker compose部署 version: 3services:app:image: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可ports…...
Python适配器模式介绍、使用方法
一、Python适配器模式介绍 适配器模式(Adapter Pattern) 是一种结构型设计模式,用于将不兼容的接口转换为另一种接口,以便系统间的协同工作。 功能: 适配器模式主要功能是将一个类的接口转换成客户端所期望的另一种接口,以满足…...

【数据结构】复杂度
🔥博客主页:小王又困了 📚系列专栏:数据结构 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、什么是数据结构 二、什么是算法 三、算法的效率 四、时间复杂度 4.…...

【读点论文】PP-YOLOE: An evolved version of YOLO,面向友好部署的模型设计,为项目后续产业落地提供了更加有效的参考
PP-YOLOE: An evolved version of YOLO Abstract 在本报告中,我们介绍了PP-YOLOE,一种具有高性能和友好部署的工业最先进的目标探测器。我们在之前的PP-YOLOv2的基础上进行优化,采用无锚模式,更强大的骨干和颈部配备CSPRepResSt…...

微服务入门---SpringCloud(二)
微服务入门---SpringCloud(二) 1.Nacos配置管理1.1.统一配置管理1.1.1.在nacos中添加配置文件1.1.2.从微服务拉取配置 1.2.配置热更新1.2.1.方式一1.2.2.方式二 1.3.配置共享1)添加一个环境共享配置2)在user-service中读取共享配置…...
51单片机IO口控制
51单片机IO口控制 1.点亮LED灯 原理:根据电路图,指向IO口的引脚;拉低电平,灯亮、 如图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zfco4IjK-1690308697530)(C:/Users/xie19/Pictur…...

ERROR 1064 - You have an error in your SQL syntax;
ERROR 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near (/, 少个逗号吧,以前开始写SQL,特别是修改SQL的时候容易出现这样错误。 而且自己也知道在附近…...
leetcode做题笔记46
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 思路一:回溯 void swap(int *nums,int index1,int index2) {int temp nums[index1];nums[index1] nums[index2];nums[index2] temp; }void prem(int* nu…...
快问快答JS面向对象面试题
1、说说你对闭包的理解 使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用…...
googlenet论文理解
参考文章:https://www.cnblogs.com/czy4869/p/8977788.html 以及下面这篇的前几行让我弄懂了论文里说的稀疏性和计算性能兼顾:参考文章:https://blog.csdn.net/weixin_52121118/article/details/119740279...

OnnxRuntime TensorRT OpenCV::DNN性能对比(YoloV8)实测
1. 前言 之前把ORT的一套推理环境框架搭好了,在项目中也运行得非常愉快,实现了cpu/gpu,fp32/fp16的推理运算,同onnx通用模型在不同推理框架下的性能差异对比贴一下,记录一下自己对各种推理框架的学习状况 YoloV8模型大小 模型名称参数量NANO3.2M...... 2. CPU篇 CPU推理框架性…...

【QT 网络云盘客户端】——获取用户文件列表信息
目录 1.获取用户文件列表信息分析 2.设置图标属性 3.向服务器获取文件的数量 4.向服务器获取文件信息列表 4.显示图标 1.获取用户文件列表信息分析 1.将QListWidget设置为图标模式 2. 当我们点击"按下载量升序","按下载量降序",“更新” 菜单选项 都会…...

从0到1,无代码开发如何简化产品创新流程
在当今竞争激烈的市场环境中,产品创新已经成为企业成功的关键因素之一。为了在市场上保持竞争力,企业需要不断地推出新产品或改进现有产品。然而,传统的开发流程往往耗时费力,且成本高昂。因此,简化产品创新流程成为了…...

select、epoll 的快速核心理解
一、 select 最low的就是在用户代码中自旋实现所有阻塞socket的监听。但是每次判断socket是否产生数据,都涉及到用户态到内核态的切换。 于是select改进:将fd_set传入内核态,由内核判断是否有数据返回; 然后最low的只能使用自旋…...
HTTP和HTTPS的区别
一、两者概念 1.1 HTTP概念 HTTP 的全称是超文本传输协议(HyperText Transfer Protocol) 是一种用于分布式、协作式和超媒体信息系统的应用协议,简单来说就是一种分布和接收HTML页面的方法,被用于在Web浏览器和网站服务器之间传递…...
分布式异步任务处理组件(二)
一些关键点的设计脑暴记录----very important!!! 首先,任务存储交给kafka,由节点负责写入kafka,acks1;失败重试;透传kafka的提交可靠性,保证任务提交成功;后…...

Jenkins 拉取 GitHub 私有仓库失败问题
添加仓库的时候提示 stderr: fatal: Cannot prompt because user interactivity has been disabled. 把在 GitHub账户设置中生成的个人访问令牌填到地址里...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...