cloud 问题

eureka 自我保护机制

eureka 是定时去拿

统计最近15分钟的eureka实例正常的心跳占比,如果低于85%,那么就会触发自我保护机制。
触发了自我保护机制,eureka 暂时会把失效的服务保护起来,不让其过期,但是这些服务也不是永远不过期。
eureka 在启动后定时任务,每 60s,检查一次服务健康状态,如果这些被保护起来的失效服务90s内还是没有恢复,·就会把这些服务剔除。,如果在此期间服务恢复了并且实例心跳数占比高于85%,就会关闭自我保护机制。

2

注册中⼼ eureka

1、⼼跳机制/服务剔除
⽣产者向eureka 进⾏注册之后,⽣产者会向eureka 进⾏30s⼼跳续约,如果说,在90s时间之内,都没有接受到⼼跳,于是eureka就判断⾃⼰是否有⾃我保护机制,如果有⾃我保护机制,这个服务他也不会删,如果没有⾃我保护机制,剔除⾃我保护机制:其实是为了防⽌⽹络抖动⽽产⽣的误删

2、详细介绍他的原理
eureka 底层有⼀个readOnly和readWrite缓存,⽣产者向eureka 进⾏服务的注册,⼀旦注册完,eureka 就⽴刻将数据同步给readWrite缓存,该缓存绑定了定时器,会定期将数据同步给readOnly缓存,消费者 会定期去拉取 readOnly中的数据,完成消费者对⽣产者的调⽤

nacos eureka

nacos :
临时实例: 默认,如果宕机,就剔除。 需要主动采用向nacos 心跳监测
非临时:宕机不会剔除,nacos 主动询问 是否 活着

spring:cloud:nacos:discovery:ephemeral: fale # 设置为非临时

服务注册,服务拉取,心跳等待,
3
消费者 默认 定时拉取,一旦nacos 监测到服务变更,会主动推送变更的消息。

nacos eureka 相同点:

  1. 都支持服务的注册 和服务的拉取
  2. 都支持 服务提供者 心跳方式做监测。
    不同点
  3. nacos 支持 服务端 主动监测 提供者的状态 ,临时实例采用心跳,永久实例 采用nacos 主动监测的方式。
  4. nacos 临时 会被剔除,永久不会
  5. nacos 监测到服务列表变更时,采用消息推送的模式。

nacos 学习

Nacos详细教程

Nacos Namespace、Group和DataID三者关系

1. nacos 分级存储模型

3

服务->集群(杭州集群、上海集群)-> 实例

配置了 sh 集群、hz集群 userservice
接着 修改 orderService 配置 hz集群

spring:cloud:nacos:disvocery:cluster-name: hz

期望: orderservice(hz集群) 调用 uservice(集群) 期望调用 本地集群也就是 hz 集群
修改 默认负载均衡策略
ribbon:
NacosRule

1.1 修改权重

编辑 集群 权重

权重设置为0 一次都不访问。
根据这一特性,先将8081 服务器权重改为0,进行停机版本升级。升级完后,进行灰度发布,平滑升级

1.2 环境隔离 namespace

创建namespace,
在代码配置文件,添加 namespace 的id,
总结:
环境隔离是使用 namespace 来实现的,2. 每个namespace 都有唯一id,3 不同namespace 下 服务是不可见的。

2. nacos eureka 对比

3

总结:
共同点:
都支持服务的注册和拉取。
都支持心跳监测机制

不同点:

  1. nacos 支持服务端 主动 检测提供者 状态,临时实例用心跳模式非临时实例采用 主动监测模式。
  2. 临时实例 不正常 会被剔除, 非临时实例 不回被剔除。
  3. nacos 支持 服务列表变更的消息推送模式, 服务列表更新更及时。 eureka 只支持定时拉取模式。
  4. Nacos 集群采用 默认 AP 模式 ,当集群有非临时 实例时,切换为cp 模式。
    eureka 采用 ap 模式。

3 配置管理

DataId :服务名称-开发环境.yaml

项目启动,bootstrap.yaml 读取(nacos 地址),读取nacos、application.yaml读取本地配置文件, 创建spring 容器。

  1. 新建 bootstrap.yaml
    1 配置服务名称, 2 dev
    3 nacos 地址 4 文件后缀名称 yaml

服务名称-dev.后缀名 dataid

3.1 配置热更新

@RefreshScope
针对@Value 注解

@ConfigurationProperties

4 微服务 配置共享

服务在启动的时候 会读取一下配置

服务名称-环境.yaml
服务名称.yaml 不根据环境改变, 来保证环境共享。

4.1 配置文件优先级问题

本地 配置文件 name =1, 优先级 3
nacos uservice name=共享1 优先级 2
uservice-dev.yaml name= dev 优先级 1

优先级 记忆:
线上配置 服务名-dev.yaml > 服务名称.yaml > 本地配置

5 面试 nacos

5.1 注册表结构

namespace-> group -> 服务-> 集群-> 实例
分级模型
3

服务分级存储模型
serviceMap 服务注册表
Map< String,Map < String ,Service > > serviceMap

注册表结构 话术:

  1. 讲 nacos 分级存储模型。
  2. 在源码中 分级存储模型的对应关系。

Nacos采用了数据的分级存储模型,最外层是Namespace,用来隔离环境。然后是Group,用来对服务分组。接下来就是服务(Service)了,一个服务包含多个实例,但是可能处于不同机房,因此Service下有多个集群(Cluster),Cluster下是不同的实例(Instance)。

对应到Java代码中,Nacos采用了一个多层的Map来表示。
结构为Map<String, Map<String, Service>>,其中最外层Map的key就namespaceId,值是一个Map。
内层Map的key是group拼接serviceName,值是Service对象。
Service对象内部又是一个Map,key是集群名称,值是Cluster对象。
而Cluster对象内部维护了Instance的 set 集合。 分为 临时实例set ,永久实例set。
3

5.2 如何支撑十万压力

  1. nacos 集群模式。
  2. 针对于 临时实例。 nacos 内部接收到服务注册请求时,不会立即更新注册表,而是将服务注册的任务放入阻塞队列中 takes.offer(),,然后立即响应给客户端。接着 利用线程池读取阻塞队列中的任务 死循环 tasks.take() 获取任务,异步来完成实例的更新,从而提高并发能力。

5.3 如何避免并发读写冲突

并发写冲突问题
加synchronized 对Service 加锁,并且线程池使用单线程的方式。解决写冲突,

针对读写冲突。
Nacos 在更新实例列表时,会采用CopyonWrite 技术,首先将旧的数据拷贝一份,然后更新拷贝的实例列表,再用更新后的实例列表覆盖旧的实例列表。
这样在更新过程中,就不对 读实例列表的请求产生影响,也不会出现脏数据问题。

5.4 nacos eureka 区别

接口方式: 通过restful 方式,用来实现服务注册、发现等功能。
实例类型:nacos 实例分为永久实例 临时实例,eureka 只有临时实例。
健康监测:nacos 对临时实例采取心跳方式,对永久实例采用主动请求的方式。eureka 只支持心跳监测。
服务发现: Nacos 支持定时 拉取 和主动推送的 两种模式,eureka 只支持定时拉模式。

5.5 sentinel hystrix

线程隔离: hystrix 默认线程池,(也有信号量)。弊端 创建线程池过多。
sentinel 信号量默认 计数器。
线程池隔离优点: ·控制能力强。异步调用
缺点 : 线程额外开销大。

信号量隔离: 优点:轻量级,无额外开销。
缺点:不支持主动超时,不支持异步调用。

话术: hystrix 默认是基于线程池隔离的,每一个隔离的线程池都要创建一个独立的线程池。线程池过多会带来额外的cpu 开销。性能一般,但是隔离性强。

sentinel 是基于信号量(计数器) 实现的线程隔离。

sentinelhystrix
1. 隔离策略信号量隔离线程池隔离(默认).信号量
2.熔断降级策略基于慢调用比例(响应时间)、或者异常比例基于失败比例
3. 限流基于qps, 调用关系、热点参数 param key基于线程池 大小
4. 流量整形 突发流量 变为稳定的流量,慢启动 warm up ,匀速排队 排队等待不支持
5. 授权规则黑白名单
信号量线程池隔离
优点轻量级,不需要开启独立线程支持主动超时,独立的线程 进行 异步调用
缺点不支持异步调用1. 线程开销大
场景高扇出 网关()低扇出 ,扇出越多,需要的线程越多

hystrix 采用命令模式,将调用和调用结果封装到 HystrixCommand的命令类中,底层执行是基于rxjava,
sentinel

5.6 sentinel 限流和gateway 限流区别

gateway 采用基于redis 实现的令牌桶算法,sentinel 内部比较复杂:

  1. 默认限流模式是基于 滑动窗口算法
  2. 排队等待 (流控效果 )的限流模式是 基于漏桶算法
  3. 热点参数 基于令牌桶算法。

限流常见算法:
4. 计数算法。 窗口计数法,滑动窗口计数法( 窗口跨度 interval 为1s,划分 n个区间)。
5. 令牌桶算法。
固定速度生成令牌 放入桶中,桶满了,丢弃多余令牌。
请求来了,先获取令牌。 请求qps 6> 生成速度 5,多余的请求会被丢弃。
建议 设置服务器并发上限的 一半左右
6. 漏桶算法。
桶里存请求,以固定速度放出请求
漏桶满了,多余的请求就会被丢弃。
优势: 应对突发请求,

sentinel 实现漏桶,采用排队等待模式。

6 雪崩问题

微服务 调用链路的某个服务发生故障,引起整个链路的所有服务都不可用,这就是雪崩问题。

6.1.1 超时处理

调用业务时,设置超时时间。

6.1.2 舱壁模式

限定每个业务使用的线程数,避免耗尽整个tomcat资源耗尽,因此也叫线程池隔离。

6.1.3 熔断降级模式

断路器统计业务异常比例。如果超出阈值会熔断业务。

6.1.4 流量控制模式

限制业务qps, 预防雪崩。

6.2 流控规则 限流

3

6.2.1 高级模式

3

6.2.2 流控模式

  • 直接:统计当前资源的请求,触发阈值时对当前资源直接限流,也是默认的模式
  • 关联:统计与当前资源相关的另一个资源,触发阈值时,对当前资源限流
    A b 两个资源,a触发阈值,对b 进行限流。
  • 链路:统计从指定链路访问到本资源的请求,触发阈值时,对指定链路限流
    a b 都访问c,统计时,只统计从a 过来的,b 不管。
关联模式 资源

3

在OrderController新建两个端点:/order/query和/order/update,无需实现业务

配置流控规则,当/order/ update资源被访问的QPS超过5时,对/order/query请求限流

对query 进行添加流控规则

链路模式

a b 都有c 的依赖,
3

控制 query , goods
3

6.2.3 流控效果

3

  • 快速失败:达到阈值后,新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。
    - warm up:预热模式,对超出阈值的请求同样是拒绝并抛出异常。但这种模式阈值会动态变化,从一个较小值逐渐增加到最大阈值。
  • 排队等待:让所有的请求按照先后次序排队执行,两个请求的间隔不能小于指定时长
warm up

冷启动模式,初始阈值为 threshold /coldFactor ,持续增长后,逐渐提高到thrshold值, coldFactor 默认为3.
需求:给/order/{orderId}这个资源设置限流,最大QPS为10,利用warm up效果,预热时长为5秒
3

排队等待

排队等待是让所有请求 进入到一个队列中,按照阈值允许 的时间间隔依次执行。
3

6.3 热点参数限流

注意事项:热点参数限流对默认的SpringMVC资源无效,需要利用@SentinelResource注解标记资源
根据参数值限流
3

案例
案例需求:给/order/{orderId}这个资源添加热点参数限流,规则如下:

•默认的热点参数规则是每1秒请求量不超过2
•给102这个参数设置例外:每1秒请求量不超过4
•给103这个参数设置例外:每1秒请求量不超过10
3

6.4 线程隔离和降级熔断

sentinel 支持雪崩的解决方案

  • 线程隔离(舱壁模式)
  • 降级熔断

线程隔离

方式1 线程池隔离
方式2 信号量隔离

信号量线程池隔离
优点轻量级,不需要开启独立线程支持主动超时,独立的线程 进行 异步调用
缺点不支持异步调用1. 线程开销大
场景高扇出 网关()低扇出 ,扇出越多,需要的线程越多

:给 order-service服务中的UserClient的查询用户接口设置流控规则,线程数不能超过 2。然后利用jemeter测试。
3

熔断降级

状态机

策略 慢调用、异常比例、异常数
慢调用 rt :
3

解读:·RT超过500ms的调用是慢调用统计最近10000ms内的请求如果请求量超过10次,并且慢调用比例不低于0.5,则触发熔断,熔断时长为5秒。然后进入half-open状态,放行一次请求做测试。

异常比例 或者 异常数

6.5 授权规则

授权规则对调用者做控制,有白名单、黑名单两种。
sentinel 通过RequestOriginParser 这个接口的parseOrigin来获取请求来源。

3

自定义异常

flowexception 限流异常
paramFlowException 热点参数异常
degradeException 降级异常
AuthorityException 授权异常

RequestOriginParser接口 判断请求来源名称,也就是黑白名单。
BlockExceptionHandler 自定义异常,不同类型异常。

6.6 规则持久话

默认模式 内存
pull 保存本地文件或者数据库,定时去读取。
push 把规则保存到 配置中心,微服务监听 变更,进行更新。

7. 分布式事务

cap 定理

一致性:操作成功,所有节点在同一时间的 数据必须完全一致
强一致性:多个副本之间的数据必须保证一致性。时时刻刻都一致。
弱一致性:允许存在部分数据不一致,称为弱一致性。
最终一致性: 允许存在中间状态,经过一段时间后,数据保证最终一致性。

可用性:用户在访问集群中的任意节点, 总能在有限的时间返回正常结果
有限时间: 对于操作请求,能在指定的时间内返回处理结果。

返回正常结果 : 正常结果 能够反应请求的处理结果,即成功或者失败。而不是返回会一个oom error

分区: 因为网络故障等原因,导致与分布式系统其他节点失去连接,形成独立分区。
容错: 在集群出现分区时,整个系统也要持续对外提供服务。

es 集群是cp 还是ap
cp。
故障节点从集群中剔除。数据分散到正常节点上。

base 理论

BASE理论的核⼼思想是即使⽆法做到强⼀致性,但每个应⽤都可以根据⾃身业务
特点,采⽤适当的⽅式来使系统达到最终⼀致性。

基本可用 :在分布式系统出现故障时允许损失部分服务的可用性,保证核心服务的可用性。
软状态 : 在一段时间内,允许出现中间状态,比如临时的不一致性,不会影响系统的可用性。
最终一致性 : 强调 系统中所有的数据副本,在经过一段时间同步后,达到最终一致性的一个状态。

seata xa 模式

优点:

  1. 事务强一致性。
  2. 常用数据库都支持,实现简单。

缺点:

  1. 因为i一阶段需要锁定 数据库资源,等待二阶段结束才释放,性能较差。
  2. 依赖关系型数据库事务

seata at 模式

at 模式
一阶段:业务数据和回滚日志记录在同一个本地事务中 提交, 释放本地锁和资源

二阶段

  • 提交异步化,非常快速的完成。
  • 回滚,通过一阶段的回滚日志进行反向补偿。

优点:
在一阶段就提交了事务,释放锁,性能好。
利用全局锁实现业务的隔离性。
代码倾入低。
缺点:
两阶段属于软状态,属于最终一致性。
框架的快照功能会影响性能,。

xa 模式 和at 模式区别

at 模式第一阶段的流程来看,分支的 本地事务在第一阶段提交完成 之后,就会释放掉 本地事务 锁定的本地记录。这是at 和xa 最大的不同点, 在xa 模式中,被锁定的记录知道第二阶段结束才会 别释放。 因此 at 模式减少了锁记录的时间,提高了分布式事务的处理效率。

at 模式之所以能第一阶段 完成 就释放被锁定的记录,是因为seata 在每个服务 的 数据库中都维护了 一张undolog 表,记录了对 操作了 的逆向操作。 当第二阶段发生异常时,只需要通过undolog 表进行全局回滚即可

at 模式 脏写问题

3
tc 事务协调者 在一阶段 和二阶段 加入 全局锁, 解决隔离性的问题。获取全局锁 重试 30次,模式10ms

seata tcc 模式

  • try 资源的监测 和预留
  • confirm 完成资源操作任务。 要求 try 成功,confirm一定成功。
  • cancel 预留资源的释放,可以理解为 try 的反向操作。
  1. tm 开启并注册全局事务 到tc 上。
  2. 通知每一个分支事务去执行
  3. 分支事务被rm 进行拦截,rm 注册分支事务到tc 上,再进行执行
  4. 执行 try 预留资源,报告状态 到tc。

二阶段:
tc 监测各个分支事务的状态。判断各个分支资源是否够。
进行 confirm 或者 cancel

优点:

  1. 一阶段完成 直接提交事务,是否数据库资源,性能好。
  2. 相比at 模式,无需生成数据库快照 记录到undolog 日志中,无需使用全局锁
  3. 不依赖于 数据库的事务。
    缺点:
  4. try confirm cancel 都需要人工编写。麻烦
  5. 软状态,最终一致。
  6. 需要考虑confirm cancel 失败重试情况,保证幂等性

空回滚:rm 1 可以回滚,rm2 没有try 卡住了,回滚不了。 所以需要rm2 进行空回滚。
try 还没执行,cancel 已经执行。需要判断。
因此在回滚前 判断 是否已经有try 了,try 没执行, 设置 记录状态 为 cancel 状态。
幂等控制: 判断是否已经是cancel 。 已经cancel 直接返回。

业务悬挂: 已经回滚了,但是之前阻塞的 rm2 try 不阻塞了。 需要再try 之前判断 是否已经回滚了。

已经空回滚了,才执行 try,那不行。 判断冻结表 是否有冻结 记录 。有数据 那么直接return。

3

seata saga 模式

saga 是长事务解决方案。
一阶段: 直接提交本地事务。
二阶段:成功什么都不做,失败通过补偿逻辑业务来回滚。

没有保证隔离性

状态机的方式进行数据的补偿操作。 用于第三方服务调用。

支付宝支付接口–>出库失败—>调用支付宝退款接口。

四种对比

3

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用讯飞星火认知大模型构建一个带界面的聊天机器人

在本篇博客中&#xff0c;我们将使用 最新的星火认知大模型和 Tkinter 构建一个简单的聊天机器人界面。通过这个界面&#xff0c;用户可以与聊天机器人进行交互&#xff0c;并查看机器人的回答。 C:\pythoncode\blog\static_16919367030710594_SparkApi_Python\testui.py 准备…

Flutter:简单搞一个内容高亮

内容高亮并不陌生&#xff0c;特别是在搜索内容页面&#xff0c;可以说四处可见&#xff0c;就拿掘金这个应用而言&#xff0c;针对某一个关键字&#xff0c;我们搜索之后&#xff0c;与关键字相同的内容&#xff0c;则会高亮展示&#xff0c;如下图所示&#xff1a; 如上的效果…

安装Vue_dev_tools

Vue控制台出现Download the Vue Devtools extension for a better development experience: 下载Vue_dev_tools,这里给出网盘链接&#xff0c;有Vue2和Vue3的&#xff0c;dev_tools 以Google浏览器为例 点击设置&#xff08;就是那三个点&#xff09;->扩展程序->管理扩…

pycharm上传项目到github,版本管理

前提&#xff1a;下载git 设置Git路径 登录Github 此时自动打开浏览器&#xff0c;并打开连接页面&#xff0c;点击 Authorize GitHub。登录&#xff1a; 创建本地仓库 提交到Github 填写初始提交相关信息 origin&#xff0c;它们只是远程服务器的一个别名&#xff0c;否则你就…

ATTCK覆盖度97.1%!360终端安全管理系统获赛可达认证

近日&#xff0c;国际知名第三方网络安全检测服务机构——赛可达实验室&#xff08;SKD Labs&#xff09;发布最新测试报告&#xff0c;360终端安全管理系统以ATT&CK V12框架攻击技术覆盖面377个、覆盖度97.1%&#xff0c;勒索病毒、挖矿病毒检出率100%&#xff0c;误报率0…

MFC140.dll缺失的修复方法,安装MFC140.dll文件

大家好&#xff0c;今天我要和大家分享的是如何正确安装和使用MFC140.dll。MFC140.dll是一种常见的动态链接库文件&#xff0c;它是Microsoft Foundation Classes(MFC)的一部分&#xff0c;被广泛应用于Windows操作系统中的各种应用程序中。在本文中&#xff0c;我们将详细介绍…

【C++入门到精通】C++入门 —— 容器适配器、stack和queue(STL)

阅读导航 前言stack1. stack概念2. stack特点3. stack使用 queue1. queue概念2. queue特点3. queue使用 容器适配器1. 什么是适配器2. STL标准库中stack和queue的底层结构3. STL标准库中对于stack和queue的模拟实现⭕stack的模拟实现⭕stack的模拟实现 总结温馨提示 前言 文章…

微信小程序:模板使用

目录 模板的优点&#xff1a; 一、静态模板创建 二、静态模板使用 1.*.wxml引入模板 2.模板使用 3.*.wxss引入模板的样式 三、动态模板创建 四、动态模板使用 1.*.wxml引入模板 2.模板使用 3.*.js定义动态数据 五、结果展示 总结 模板的优点&#xff1a; 有利于保持网…

记录--webpack和vite原理

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 每次用vite创建项目秒建好&#xff0c;前几天用vue-cli创建了一个项目&#xff0c;足足等了我一分钟&#xff0c;那为什么用 vite 比 webpack 要快呢&#xff0c;这篇文章带你梳理清楚它们的原理…

【算法——双指针】LeetCode 11 盛最多水的容器

题目描述&#xff1a; 解题思路&#xff1a; 如图所示&#xff1a; 1、我们考虑相距最远的两个柱子所能容纳水的面积。宽度是两根柱子之间的距离8&#xff1b;高度取决于两根柱子之间较短的那个&#xff0c;即左边柱子的高度3。水的面积就是3824。 2、如果选择固定一根柱子&…

在线HmacMd5加密工具--在线获取哈希值又称摘要

具体请前往&#xff1a;在线计算HMacMd5工具

Flink-----Yarn应用模式作业提交流程

Yarn应用模式作业提交流程 在Yarn当中又分为Session&#xff0c;PerJob&#xff0c;Application&#xff0c;建议和推荐使用独立集群的&#xff0c;其中就包含PerJob 和Application&#xff0c;但是1.17版本的Flink已将PerJob标记为过时&#xff0c;并且Application可以解决Pe…

地球IT

地球是我们生活的家园&#xff0c;也是人类发展的基地。地球不仅仅是一个行星&#xff0c;更是一个复杂而有机的生态系统。 地球直径约为12,742公里&#xff0c;被称为“蓝色星球”&#xff0c;因为它的表面约70%被水覆盖。海洋是地球上最大的生态系统之一&#xff0c;它们扮演…

Hi-TRS:骨架点视频序列的层级式建模及层级式自监督学习

论文题目&#xff1a;Hierarchically Self-Supervised Transformer for Human Skeleton Representation Learning 论文下载地址&#xff1a;https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136860181.pdf 代码地址&#xff1a;https://github.com/yuxiaochen1103…

Dodaf架构的学习分享

一.Dodaf的内容 Dodaf的背景 DODAF&#xff08;Department of Defense Architecture Framework&#xff09;起源于美国国防部&#xff0c;是一个用于支持复杂系统设计、规划和实施的架构框架。以下是DODAF的背景和起源&#xff1a; 复杂系统需求&#xff1a;在军事和国防领域&…

0102垂直分片-jdbc-shardingsphere

1 前言 垂直分片分为垂直分库于垂直分表&#xff0c;但是实际应用中数据库表会根据业务需要提前做好规划&#xff0c;垂直分表的情况很少使用。但是随着业务增长&#xff0c;某些重点业务数据库压力增大&#xff0c;可能考虑需要考虑垂直分库的情况。 垂直分库&#xff0c;简…

阿里云故障洞察提效 50%,全栈可观测建设有哪些技术要点?

本文根据作者在「TakinTalks 稳定性社区 」公开分享整理而成 #一分钟精华速览# 全栈可观测是一种更全面、更综合和更深入的观测能力&#xff0c;能协助全面了解和监测系统的各个层面和组件&#xff0c;它不仅仅是一个技术上的概念&#xff0c;更多地是技术与业务的结合。在“…

Dockerfile创建 LNMP 服务+Wordpress 网站平台

文章目录 一.环境及准备工作1.项目环境2.服务器环境3.任务需求 二.Linux 系统基础镜像三.docker构建Nginx1.建立工作目录上传安装包2.编写 Dockerfile 脚本3.准备 nginx.conf 配置文件4.生成镜像5.创建自定义网络6.启动镜像容器7.验证 nginx 四.docker构建Mysql1. 建立工作目录…

【C++奇遇记】构造函数 | 初始化列表

&#x1f3ac; 博客主页&#xff1a;博主链接 &#x1f3a5; 本文由 M malloc 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;LeetCode刷题集 数据库专栏 初阶数据结构 &#x1f3c5; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如…

Yellowbrick新手入门简介:用于Python机器学习模型可视化的工具库

Yellowbrick 是一个新的 Python 库&#xff0c;它扩展了 Scikit-Learn API&#xff0c;将可视化合并到机器学习工作流程中。 Yellowbrick需要依赖诸多第三方库&#xff0c;包括Scikit-Learn&#xff0c;Matplotlib&#xff0c;Numpy等等。 Yellowbrick 是一个开源的纯 Python…