首页 文章 精选 留言 我的

精选列表

搜索[AI现代化],共10000篇文章
优秀的个人博客,低调大师

应用现代化中的弹性伸缩

作者:马伟,青云科技容器顾问,云原生爱好者,目前专注于云原生技术,云原生领域技术栈涉及 Kubernetes、KubeSphere、KubeKey 等。 2019 年,我在给很多企业部署虚拟化,介绍虚拟网络和虚拟存储。 2023 年,这些企业都已经上了云原生了。对于高流量的 Web 应用程序,实时数据分析,大规模数据处理、移动应用程序等业务,容器比虚拟机更适合,因为它轻量级,快速响应,可轻松移植,并具有很强的弹性伸缩能力。 为什么需要弹性伸缩呢? 峰值负载应对:促销活动、节假日购物季或突发事件根据需求快速扩展资源,保证应用可用性和性能。 提高资源利用率:根据实际资源负载动态调整资源规模,避免基础设施资源浪费,降低 TCO。 应对故障和容错:多实例部署和快速替换,提高业务连续性和可用性。 跟随需求变化:匹配前端的业务需求及压力,快速调整规模,提高事件应对能力,满足需求和期望。 Horizontal Pod Autoscaling Kubernetes 自身提供一种弹性伸缩的机制,包括 Vertical Pod Autoscaler (VPA)和 Horizontal Pod Autoscaler (HPA)。HPA 根据 CPU 、内存利用率增加或减少副本控制器的 pod 数量,它是一个扩缩资源规模的功能特性。 HPA 依赖 Metrics-Server 捕获 CPU、内存数据来提供资源使用测量数据,也可以根据自定义指标(如 Prometheus)进行扩缩。 由上图看出,HPA 持续监控 Metrics-Server 的指标情况,然后计算所需的副本数动态调整资源副本,实现设置目标资源值的水平伸缩。 但也有一定局限性: 无外部指标支持。如不同的事件源,不同的中间件/应用程序等,业务端的应用程序变化及依赖是多样的,不只是基于 CPU 和内存扩展。 无法 1->0。应用程序总有 0 负载的时候,此时不能不运行工作负载吗? 所以就有了Kubernetes-based Event-Driven Autoscaling(KEDA)! KEDA KEDA 基于事件驱动进行自动伸缩。什么是事件驱动?我理解是对系统上的各种事件做出反应并采取相应行动(伸缩)。那么 KEDA 就是一个 HPA+多种触发器。只要触发器收到某个事件被触发,KEDA 就可以使用 HPA 进行自动伸缩了,并且,KEDA 可以 1-0,0-1! 架构 KEDA 自身有几个组件: Agent: KEDA 激活和停止 Kubernetes 工作负载(keda-operator 主要功能) Metrics: KEDA 作为一个 Kubernetes 指标服务器,向 Horizontal Pod Autoscaler 提供丰富的事件数据,从源头上消费事件。(keda-operator-metrics-apiserver 主要作用)。 Admission Webhooks: 自动验证资源变化,以防止错误配置。 Event sources: KEDA 更改 pod 数量的外部事件/触发源。如 Prometheus、Kafka。 Scalers: 监视事件源,获取指标并根据事件触发伸缩。 Metrics adapter:从 Scalers 获取指标并发送给 HPA。 Controller: 根据 Adapter 提供的指标进行操作,调谐到 ScaledObject 中指定的资源状态。Scaler 根据 ScaledObject 中设置的事件源持续监视事件,发生任何触发事件时将指标传递给 Metrics Adapter。Metrics Adapter 调整指标并提供给 Controller 组件,Controller 根据 ScaledObject 中设置的缩放规则扩大或缩小 Deployment。 总的来说,KEDA 设置一个 ScaledObject,定义一个事件触发器,可以是来自消息队列的消息、主题订阅的消息、存储队列的消息、事件网关的事件或自定义的触发器。基于这些事件来自动调整应用程序的副本数量或处理程序的资源配置,以根据实际负载情况实现弹性伸缩。 CRD ScaledObjects:代表事件源(如 Rabbit MQ)和 Kubernetes。 Deployment、StatefulSet 或任何定义 / 规模子资源的自定义资源之间的所需映射。 ScaledJobs:事件源和 Kubernetes Jobs 之间的映射。根据事件触发调整 Job 规模。 TriggerAuthentications:触发器的认证参数。 ClusterTriggerAuthentications:集群维度认证。 部署 KEDA helm repo add kedacore https://kedacore.github.io/charts helm repo update kubectl create namespace keda helm install keda kedacore/keda --namespace keda kubectl apply -f https://github.com/kedacore/keda/releases/download/v2.10.1/keda-2.10.1.yaml root@node-1:/# kubectl get all -n keda NAME READY STATUS RESTARTS AGE pod/keda-metrics-apiserver-7d89dbcb54-v22nl 1/1 Running 0 44s pod/keda-operator-5bb9b49d7c-kh6wt 0/1 Running 0 44s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/keda-metrics-apiserver ClusterIP 10.233.44.19 <none> 443/TCP,80/TCP 45s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/keda-metrics-apiserver 1/1 1 1 45s deployment.apps/keda-operator 0/1 1 0 45s NAME DESIRED CURRENT READY AGE replicaset.apps/keda-metrics-apiserver-7d89dbcb54 1 1 1 45s replicaset.apps/keda-operator-5bb9b49d7c 1 1 0 45s root@node-1:/# kubectl get all -n keda NAME READY STATUS RESTARTS AGE pod/keda-metrics-apiserver-7d89dbcb54-v22nl 1/1 Running 0 4m8s pod/keda-operator-5bb9b49d7c-kh6wt 1/1 Running 0 4m8s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/keda-metrics-apiserver ClusterIP 10.233.44.19 <none> 443/TCP,80/TCP 4m9s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/keda-metrics-apiserver 1/1 1 1 4m9s deployment.apps/keda-operator 1/1 1 1 4m9s NAME DESIRED CURRENT READY AGE replicaset.apps/keda-metrics-apiserver-7d89dbcb54 1 1 1 4m9s replicaset.apps/keda-operator-5bb9b49d7c # kubectl get crd | grep keda clustertriggerauthentications.keda.sh 2023-05-11T09:26:06Z scaledjobs.keda.sh 2023-05-11T09:26:07Z scaledobjects.keda.sh 2023-05-11T09:26:07Z triggerauthentications.keda.sh 2023-05-11T09:26:07Z KubeSphere 部署 KEDA kubectl edit cc -n kubesphere-system (kubesphere 3.4+) spec: ··· autoscaling: enabled: true ··· 扩展工作负载 CRD ScaledObject 资源定义,详情参数请看 :https://keda.sh/docs/2.10/concepts/scaling-deployments/。 apiVersion: keda.sh/v1alpha1 kind: ScaledObject metadata: name: {scaled-object-name} spec: scaleTargetRef: apiVersion: {api-version-of-target-resource} # Optional. Default: apps/v1 kind: {kind-of-target-resource} # Optional. Default: Deployment name: {name-of-target-resource} # Mandatory. Must be in the same namespace as the ScaledObject envSourceContainerName: {container-name} # Optional. Default: .spec.template.spec.containers[0] pollingInterval: 30 # Optional. Default: 30 seconds cooldownPeriod: 300 # Optional. Default: 300 seconds idleReplicaCount: 0 # Optional. Default: ignored, must be less than minReplicaCount minReplicaCount: 1 # Optional. Default: 0 maxReplicaCount: 100 # Optional. Default: 100 fallback: # Optional. Section to specify fallback options failureThreshold: 3 # Mandatory if fallback section is included replicas: 6 # Mandatory if fallback section is included advanced: # Optional. Section to specify advanced options restoreToOriginalReplicaCount: true/false # Optional. Default: false horizontalPodAutoscalerConfig: # Optional. Section to specify HPA related options name: {name-of-hpa-resource} # Optional. Default: keda-hpa-{scaled-object-name} behavior: # Optional. Use to modify HPA's scaling behavior scaleDown: stabilizationWindowSeconds: 300 policies: - type: Percent value: 100 periodSeconds: 15 triggers: # {list of triggers to activate scaling of the target resource} 查看 KEDA Mterics Server 暴露的指标 kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1" Demo KEDA 目前支持 53 种 Scalers,如 Kafka,Elasticsearch,MySQL,RabbitMQ,Prometheus 等等。 此处演示一个 Prometheus 和 Kafka 的例子。 Prometheus & KEDA 部署一个 Web 应用,使用 Prometheus 监控 Web 应用 http 请求指标。 为寻求演示效果,此处部署了一个有点击,互动的 Demo APP,地址如下:https://github.com/livewyer-ops/keda-demo/blob/v1.0.0/examples/keda/。 部署成功后通过 NodePort 访问: 进入 KubeSphere 项目,新建一个自定义伸缩: 设置最小副本数为 1,最大副本数为 10,轮询间隔 5 秒,等待时间为 1 分钟: KubeSphere 支持 Cron、Prometheus,和自定义触发器: 触发器设置 Prometheus,设置请求为 30s 内的增长率总和,当阈值大于 3 时事件驱动触发缩放: 设置一些其他设置,如资源删除后是否恢复指本来的副本数,以及扩缩策略设置: 现在并发访问 Web App: 可以在自定义监控看到监控指标的变化: Web App 的副本数开始横向扩展: 最终扩展到 ScaledObject 中定义的 10 个副本: 在访问停止后,可以看到监控指标的数值在慢慢变小: Deployment 开始缩容: Kafka & KEDA KEDA 使用 Kafka 事件源演示的整体拓扑如下: Kafka 使用 Demo 代码:https://github.com/ChamilaLiyanage/kafka-keda-example.git。 部署 Kafka 打开 KubeSphere 应用商店,查看 DMP 数据库中心: 选择 Kafka,进行安装: 安装好 Kafka 后,创建一个测试的 Kafka Topic,Topic 分区设置为 5,副本设置为 1: 创建 Kafka Producer 服务: 向主题发送订单: 创建 Consumer 服务: 发送新订单看 Consumer 服务是否消费: 现在可以来做自动伸缩了,创建一个 ScaledObject,设置最小副本数为 0,最大为 10,轮询间隔为 5s,Kafka LagThreshold 为 10: apiVersion: keda.k8s.io/v1alpha1 kind: ScaledObject metadata: name: kafka-scaledobject namespace: default labels: deploymentName: kafka-consumer-deployment # Required Name of the deployment we want to scale. spec: scaleTargetRef: deploymentName: kafka-consumer-deployment # Required Name of the deployment we want to scale. pollingInterval: 5 minReplicaCount: 0 #Optional Default 0 maxReplicaCount: 10 #Optional Default 100 triggers: - type: kafka metadata: # Required BootstrapeServers: radondb-kafka-kafka-external-bootstrap.demo:9092 # Kafka bootstrap server host and port consumerGroup: order-shipper # Make sure that this consumer group name is the same one as the one that is consuming topics topic: test lagThreshold: "10" # Optional. How much the stream is lagging on the current consumer group 创建自定义伸缩: 现在,让我们向队列提交大约 100,000 条订单消息,看看自动缩放的实际效果。你会看到随着队列中多余消息的增长,将会产生更多的 kafka-consumer pod。 NAMESPACE NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE demo keda-hpa-kafka-consumer Deployment/kafka-consumer 5/10 (avg) 1 10 1 2m35s 此处我们看到最大到 5 个副本,没有到 10 个副本,因为默认最大副本数不会超过 Kafka 主题分区数量,上面设置了分区为 5,可以激活 allowIdleConsumers: true 来禁用这个默认行为。 重新编辑自定义伸缩后,最大副本变化成 10: 在无消息消费时,副本变化为 0: 结尾 到这里本篇就结束了,对此有需求或感兴趣的小伙伴可以操练起来了。 本文由博客一文多发平台 OpenWrite 发布!

优秀的个人博客,低调大师

Tabby —— 基于 TypeScript 的现代化终端

Tabby(原名 Terminus)是一个高度可配置的终端模拟器、SSH 和串行客户端,适用于 Windows、macOS 和 Linux。 特性: 集成的 SSH 客户端和连接管理器 集成的串行终端 主题设计和色彩方案 完全可配置的快捷键 分割窗格 记忆你的标签 支持 PowerShell(和 PS Core)、WSL、Git-Bash、Cygwin、Cmder 和 CMD 通过 Zmodem 在 SSH 会话中直接传输文件 完全支持 Unicode,包括双角的字符 在 Windows 上有适当的 shell 体验,包括标签完成(通过 Clink)。 为 SSH secrets 和配置提供集成的加密容器 功能: 一个 V220 终端+各种扩展 多个嵌套分割窗格 在窗口的任何一侧都有标签 可选的可停靠窗口,有一个全局生成热键 进程检测 进程完成时的通知 自定义 shell 配置文件 可选的 RMB 粘贴和复制选择(PuTTY风格)

优秀的个人博客,低调大师

Apache Superset 4.1.2 发布,现代化数据工具

Apache Superset 4.1.2 现已发布。Apache Superset 是一个现代数据探索和数据可视化平台,可以替代或增强许多团队的专有商业智能工具,可以与各种数据源很好地集成。 具体更新内容如下: Database Migrations #32538fix(migrations):处理 old time comparison migration中 comparator None 的情况 #32155fix(migrations):处理 time comparison migration 中 no params 的情况 #31185fix:在迁移中添加列之前检查列 Features #29974feat(sqllab):在 SQL Lab 中的 table metadata 中添加刷新按钮 Fixes #32500fix:仪表盘、图表和数据集导入验证 #31353fix(sqllab):重复错误消息 #31407fix:Big Number side cut 已修复 #31480fix(sunburst):使用 verbose map 中的metric label #31427fix(tags):清理批量创建 api 和 schema #31334fix(docs):为介绍页面添加自定义 editUrl 路径 #31323fix:为 YDB 使用 clickhouse sqlglot dialect #31198fix:在配置中添加更多 clickhouse 不允许的functions #31194fix(embedded):在嵌入模式下隐藏anchor links #31960fix(sqllab):ResultTableExtension 中缺少 allowHTML props #31332fix:防止迁移时出现多个 pvm 错误 ...... Others #32043chore:在目录迁移期间跳过创建secondary perms #30865文档:更新 4.1 版本说明 更新说明:https://github.com/apache/superset/releases/tag/4.1.2

优秀的个人博客,低调大师

云计算服务如何使ERP现代化

与传统的企业资源规划(ERP)方法相比,云计算技术为企业资源规划(ERP)提供了许多好处,其中包括增强的安全性和可用性。 如今,企业每天都在创建大量数据,并通过匿名分析和安全性确保整个引擎平稳运行。近年来,企业资源规划(ERP)工具和方法被设计用来解决企业日常运作中团队成员使用的数据、硬件和软件方面的问题。 原始的企业资源规划(ERP)方法 传统上,企业资源规划(ERP)在严格控制的条件下在数据中心中的服务器中运行。风扇一直在不停地运行,以使服务器在高负载下保持凉爽,因为IT成员致力于防止服务器发生故障。值得注意的是,IT部门总是有一个备份服务器同时运行,以防这种情况发生。但是如果没有备份呢?没有备份就意味着整个引擎都将可能崩溃,并且所有的数据都可能丢失,这真是一个令人崩溃的时刻。 使用本地服务器和基础设施的原有企业资源规划(ERP)方法的另一个问题是系统更新。当系统需要更新时,企业员工必须等到所有更新完成后才能重新登录并完成所有工作。当企业员工很繁忙并且需要在时间表上完成重要工作时,这可能会令人崩溃。这种放缓也扩展到了需要安装的新软件,因为该软件必须在网络范围内安装,因为IT成员必须在每台计算机上安装软件。有时,IT技术人员必须人工地将软件安装到每台计算机上,这将耗费大量的时间和精力。由于IT成员需要不断扫描病毒并应对系统的攻击,因此需要总结过去使用企业资源规划(ERP)的经验,虽然效果不错,但始终担心某些事情会变缓。 云计算服务 云计算服务大约在20年前就开始出现,由于云存储空间不足以用于企业资源规划(ERP),所以部署的规模相当小。随着时间的推移,技术的进步使得云计算技术成为企业使用的可行选择。20年前开始为用户提供额外的存储空间,现在已经发展成为当今企业环境中一个完整的企业资源规划(ERP)解决方案。 云计算服务已与企业资源规划(ERP)系统开展竞争,以处理大多数企业的数据负载。最近增加的光纤数据线将互联网速度提高到了更高水平。再加上云计算服务提供商提供的云服务,为基于云计算的企业资源规划(ERP)解决方案打开了大门。 云计算安全 云计算服务公司为数据使用和与某些公司(例如谷歌云)的集成提供了高度的安全性,这些公司对存储在其云计算服务器上的所有数据提供自动加密措施。仅此一点就可以减轻IT部门的负担,因为他们可以更轻松地了解到云中的数据是安全的。 云存储 使用基于云计算的企业资源规划(ERP)的好处在于,它可以根据企业的数据负载进行扩展。该公司是否正在期待一个繁忙的季度?该公司可以扩展存储以满足需求。这样的选择是无止境的,企业可以根据业务的需要增加或减少规模,而不是在合同的基础上对数据进行硬性限制。 云计算远程访问 用户需要几乎可以立即访问云计算应用程序,并且可以从登录到云平台的任何设备进行访问。无论是在遥远的酒店还是在家中,移动团队成员的远程访问都是一个可以快速访问相关数据的现实。这也扩展到更新和软件安装,因为两者都可以在后台部署,而不会影响团队工作量。从现场服务器到云平台的数据迁移运行速度非常快,而且整个过程很简单。 企业资源规划(ERP)云计算维护 使用云计算企业资源规划(ERP)作为服务的好处在于,所有维护工作均由供应商完成。他们处理数据的托管,维护硬件以运行企业资源规划(ERP)服务,并可以与API进行数据集成。云计算供应商还负责企业资源规划(ERP)软件的维护,从而减轻了IT部门的负担。 云计算停机比较罕见 由于采用了云计算架构和始终在线的功能,因此很少会因任何原因导致云平台中断。企业可以简单地使用带有本地服务器的现场企业资源规划(ERP)作为备份,以防万一。 最后的想法 仍在使用原有的企业资源规划(ERP)方法的企业正在削弱其运营能力。人们总是会不断担心出问题,并且可能发生故障或减速的风险太大,这不容忽视。IT部门在维护原有企业资源规划(ERP)管理方面增加的工作量使他们不再关注其他需要解决的问题,如网络安全和维护系统正常运行时间。 云计算带来的优势几乎使大多数问题迎刃而解。在使用云计算时,数据安全性和完整性是不容置疑的,对云平台的访问始终处于开启状态,并且随时可以使用。软件更新和安装在后台运行,以实现最长的正常运行时间和最小的压力。随着业务的发展,可以扩大或缩小云存储规模,并使IT部门专注于更大的问题,并增强整体网络安全性。升级到基于云计算的企业资源规划(ERP)系统是一个实施良好的业务策略。

优秀的个人博客,低调大师

现代化个人博客系统 ModStartBlog v5.7.0

系统介绍 ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场,后台一键快速安装 会员模块通用且完整,支持完整的 API 调用 大文件分片上传,进度条显示,已上传文件管理 强大的模块扩展功能,所有模块可以无缝集成,支持在线安装、卸载模块 完善的开发助手,实现模块、主题的的一键创建 完善的后台权限管理,支持基于 RBAC 的权限管理系统 后台管理支持使用手机、平板、PC,无论何时何地都可方便管理 第三方登录(QQ、微信、微博、支付宝、微信小程序) 第三方支付支持(微信、支付宝、支付宝当面付、微信扫码、微信小程序) 第三方云存储支持,支持云储存分片上传(阿里云、百度云、华为云、腾讯云、FTP、七牛云、UCloud、又拍云) 第三方短信支持(阿里云、腾讯云、华为云、百度云、253 云通讯、聚合、七牛云、融云、赛邮、UCloud、云片、网易云) V5.7.0 亮点介绍 新增加白色主题,可在模块市场自行安装。 V5.7.0 版本更新 2022 年 09 月 07 日 ModStartBlog 发布 v5.7.0 版本,增加了以下 7 个特性: [新功能] 增加 Button 组件,支持表单快捷提交 [新功能] 富文本组件新增 htmlFilter 属性,定制配置过滤 [新功能] 富文本过滤图片新增 data-formula-image 属性 [新功能] 博客列表页面图片响应式大小优化 [新功能] 纯白的简约博客主题已支持 [系统优化] Cookie 中 SameSite 默认调整为 Lax [系统优化] 配置函数根据默认值类型自动推断 模块市场一键安装 系统内置模块市场,有行业应用、插件、云存储、云短信等功能模块,后台支持一键安装、启用、禁用、卸载,可快速搭建属于自己的系统应用。 系统演示与文档 码云仓库:https://gitee.com/modstart/ModStartBlog Github 仓库:https://github.com/modstart/ModStartBlog 系统演示:https://blog.demo.tecmz.com/ 下载试用:https://modstart.com/download 开发者文档:https://modstart.com/doc 模块市场:https://modstart.com/store

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册