- 博客(1906)
- 收藏
- 关注
原创 Vue 侧边栏导航栏 el-menu单个item和多个item
它类似<div>,但是template不带任何的样式,它是for循环或者要去包裹一层东西,但是包裹不让带任何样式可以使用template。:default-active="$route.path": 当前激活菜单的index,栏目与path做了匹配就拿到了path然后激活对应的item,当前打开了哪个页面,那么就会去找item对应的index。<el-icon>是vue的组件element,里面包了一层<component>,这是vue的能力,当时使用到哪个组件,那这里面is是一个动态值。
2025-03-10 17:28:23
583
原创 RocketMQ 核⼼概念
提供多种发送⽅式,同步发送(数据发过去要等待broker的返回,等待数据返回过程中生产者是阻塞的,是一个等待的效果)、异步发送(生产者也需要得到消息发送过去之后的结果,这个结果什么时候给不重要,不会因为没有等到结果就一直等待,发送过去就可以继续自己的业务逻辑了,一旦有返回就开始执行回调方法,所以是一种异步的效果,返回消息之前生产者可以继续做自己的事情)、顺序发送(发送的消息是顺序的)、单向发送(消息发送过去就不管了)。消息的单位并不是broker,而是topic,topic是一个逻辑的概念。
2024-12-11 14:36:15
3867
转载 Kubernetes Pod OOM 和 CPU 限制
中看到的,当我们想要限制进程的资源消耗时,设置限制或请求非常重要。不过,请注意不要将总请求设置为大于实际 CPU 大小,因为这意味着每个容器都应该有一定数量的 CPU。实际上,如果所有容器使用的内存多于请求的内存,则可能会耗尽节点中的内存。通过设置不切实际的限制或过度使用,您可能不会意识到您的进程受到限制,并且性能受到影响。限制是设置节点中资源最大上限的一种方法,但需要谨慎处理,因为最终可能会导致进程被限制或终止。云应用程序中的 CPU 和内存要求变得越来越重要,因为它们与您的云成本直接相关。
2024-12-10 10:55:32
3141
原创 如何导出和导入Grafana仪表盘
您可以使用导出导入Grafana仪表盘功能对Grafana仪表盘进行备份,或将仪表盘从一个Grafana实例迁移到另一个实例中。本文介绍如何导出和导入Grafana仪表盘。
2024-12-04 15:48:39
4443
原创 Rocket 批量消息
IO的话是十分消耗性能的,如果消息量是比较大的就可以采用批量消息的方式,将消息一次性的发给rocketmq,在这个过程当中只需要做一次I/O就行了。当拿到split对象之后,就可以去创建list,然后分割大于4M的消息,每次拿一部分也就是next去发送,超过4m的部分可以切分成多个小块进行发送。现在只要创建一个集合,在这个集合里面存入多条你要发送的消息,将消息存进来,在这个时候去发送的时候只要将集合一起的发送即可。这样比每条消息都发的次数肯定少,因为每次发送一次都是批量,这个批量是在4M的限制以内。
2024-12-02 15:28:53
3569
原创 Vue router 路由传参
用 Vue + Vue Router 创建单页应用非常简单:通过 Vue.js,我们已经用组件组成了我们的应用。这使得 Vue Router 可以在不重新加载页面的情况下更改 URL,处理 URL 的生成以及编码。将显示与 URL 对应的组件。你可以把它放在任何地方,以适应你的布局。新的页面就可以通过$route.query.name就可以取值了。的原因是,我们不想在每个需要操作路由的组件中都导入路由。,我们会触发第一次导航且可以在任意组件中以。在整个文档中,我们会经常使用。请注意,我们没有使用常规的。
2024-11-27 20:40:28
3899
原创 RocketMQ 消息示例-延迟消息
在系统里面会给每个等级配置topic,那么这18个topic会有不同的效果,延迟10s钟就会发送到延迟10s的topic里面,那么这个消息就会被延迟10s的消费。1级是1s,2级是10s,三级是30s。它是发送到这个topic里面,这个topic的效果是消费者会延迟10s去消费这个topic里面的消息。生产者在发送message的时候设置了一个延迟时间的等级,这里的3描述的是时间延迟的等级。生产者将消息发送过去,但是延迟的时间是10s,消费者得10s之后才能消费,才能收到消息。它是如何实现延迟的效果?
2024-11-24 12:18:52
3500
原创 Kubernetes Pod 告警规则
说明:kube_pod_status_phase可以统计Pod的数量,phase的值:Running(运行中)Pod 已经绑定到了某个节点,Pod 中所有的容器都已被创建。2.当pod中容器状态为ImagePullBackOff 时使用命令kube_pod_status_phase{pod=''}==1 查看pod状态pending。1.当pod中容器状态为ErrImagePull 时使用命令kube_pod_status_phase{pod=''}==1 查看pod状态为Running。
2024-11-20 14:45:56
4225
原创 jstat -gcutil 命令使用
S0: 新生代中Survivor space 0区已使用空间的百分比。S1: 新生代中Survivor space 1区已使用空间的百分比。YGCT: 从应用程序启动到当前,Yang GC所用的时间【单位秒】GCT: 从应用程序启动到当前,用于垃圾回收的总时间【单位秒】YGC: 从应用程序启动到当前,发生Yang GC 的次数。FGCT: 从应用程序启动到当前,Full GC所用的时间。FGC: 从应用程序启动到当前,发生Full GC的次数。E: 新生代已使用空间的百分比。
2024-11-20 11:22:23
3491
原创 RocketMQ 广播消息
生产者发送了10个order,每个order里面有5个消息,那么就会有50条消息。这10个order会被两个消费者分割,某一条消息只会被某一个消费者进行消费。消费者从一开始就从第一个offset位置进行消费,消费者设置消费模式为广播,剩下的都一样,消费者去订阅主题,在过滤消息的时候使用*号表示不过滤消息。在广播消息里面消费者 广播消息模式的设定,设定之后,多个消费者都能够全量的收到生产者发送的所有的数据。所谓的广播消息就是发送的一条消息会被多个消费者收到。的多个消费者,能全量收到⽣产者发送的所有消息。
2024-11-09 15:04:15
3479
原创 Alertmanager 报警接收器
Alertmanager 支持很多内置的报警接收器,如 email、slack、企业微信、webhook 等,上面的测试我们使用的 email 来接收报警。
2024-11-04 18:04:20
4105
原创 Prometheus 监控Harbor
你好!今天分享的是基于Prometheus监控harbor服务。在之前的文章中分别介绍了。那么,如果我们的harbor服务主机或者harbor服务及组件出现异常,我们该如何快速处理呢?Harborv2.2及以上版本支持配置Prometheus监控Harbor,所以你的harbor版本必须要大于2.2。本篇文章以二进制的方式简单的部署Prometheus相关服务,可以帮助你快速的的实现Prometheus对harbor的监控。Prometheus监控Harbor(二进制版)
2024-10-24 11:21:39
3902
原创 Docker 私有仓库 Harbor介绍
其实Harbor镜像复制采用了一个更加通用、高屋建瓴的做法,通过docker registry 的API去拷贝,这不是省事,这种做法屏蔽了繁琐的底层文件操作、不仅可以利用现有docker registry功能不必重复造轮子,而且可以解决冲突和一致性的问题。其实关于镜像的存储,Harbor使用的是官方的docker registry服务去完成,至于registry是用本地存储或者s3都是可以的,Harbor的功能是在此之上提供用户权限管理、镜像复制等功能,提高使用的registry的效率。
2024-10-24 10:25:30
4293
原创 Vue 生命周期
比如在打开页面的时候就设置输入框里面的默认值。转化为render函数就有一个beforemoun阶段,这个阶段一般可以去获取列表,刚进去的时候就有一个列表页,在这个阶段可以获取列表页,这个阶段可以拿到的数据都可以拿到了。首先会有两个初始化阶段,第一个初始化阶段初始化events和你的生命周期,事件就是你定义的v-on的比如click和change这些。挂载了之后会一直监听数据的变化,数据变化之后会去触发一个更新,在更新之前会有一个before update的阶段,在执行完了之后就会去触发更新。
2024-10-22 22:04:47
3738
原创 RocketMQ 顺序消息、全局顺序消息、乱序消息
顺序消息指的是消费者消费消息的顺序按照发送者发送消息的顺序执⾏。生产者去发了多条消息,先发了消息1,然后消息2,最后消息3。消费者在消费消息的时候我们追求的是顺序。对于消费者来说也是一样应该先消费消息1,再消费消息2,再消费消息3。消费者既可以消费brokera也可以消费brokerb,目前消费者消费的是brokera上面的mytopic1队列msgqueue里面的消息。在brokera里面主题为mytopic1下面的id为0 msgqueue里面会有三条消息在里面。
2024-10-21 14:06:14
4087
原创 Linux 系统磁盘空间占满,df 和 du 结果不一致
服务器运行一段时间后df查看磁盘剩余空间不足,通过du统计发现被几个文件占用,遂删除之。过了一段时间磁盘空间再次不足,通过du统计却找不到那么多大文件。搜索后才得知原因:文件删除后空间没有释放,du统计不到这部分文件;需要通过lsof排查,然后kill文件进程。
2024-10-17 09:58:25
4266
原创 kubelet PLEG实现
kubelet的主要作用是确保pod状态和podspec保持一致,这里的pod状态包括pod中的container状态,个数等。为了达到这个目的,kubelet需要从多个来源watch pod spec的变化,并周期从container runtime获取最新的container状态。比如创建了包括三个container的pod,当其中一个container异常退出时,kubelet能通过PLEG及时发现此事件并重建container。
2024-10-10 17:11:35
4492
原创 vue @change的用法及操作代码
元素上使用了 v-model 来双向绑定 inputValue 数据,同时使用 @change 监听了输入框的变化事件。当输入框的值发生变化时,handleChange 方法将被调用,你可以在该方法中执行任何你需要的操作,例如验证输入、触发其他逻辑等。例如,如果你想要获取输入框的新值,可以这样做:@change=“handleChange($event)”,然后在方法中使用 $event.target.value 来获取新值。通常用于监听表单输入框等元素的变化,以便在值发生变化时执行特定的操作。
2024-10-08 21:10:40
4108
原创 CoreDNS Plugins ---> hosts 添加hosts解析记录
虽然格式"172.30.200.21 172.30.200.22 172.30.200.23 kubenode1"可以正常下发configmap资源,但只有第一个ip生效。通过coredns的hosts插件配置kubernetes集群的dns服务,使集群内部可通过hostname/域名访问外部服务。kubernetes集群外部有少量服务,kubernetes集群内部pod需要通过服务所在的主机的hostname访问服务。# 省略了”FILE“,"ZONES"等字段。# ping外部hostname。
2024-10-08 16:40:33
4553
原创 RocketMQ 详解topic、broker、messagequeue
对于生产者来说会从nameserver这边拿到mytopic1对应broker的集群名称,在集群里面会有两个broker。如果在发送10条消息和消费十条消息,你会发现偏移量上去了,这是因为队列之前有消息在了,再发送消息就往后放往后面移了。消息都是保存在broker上面,它还没有被删除之前可以通过定位找到broker消息队列的偏移量找到之前存储的消息。offset指的是偏移量,偏移量非常重要,因为消费的消息有问题那么要回溯消费找到指定偏移量的消息再进行消费。消息在队列里面是有顺序的,谁在前在后是有顺序的。
2024-10-02 11:08:05
3938
原创 RocketMQ 生产者、消费者、消息示例
在maven项⽬中构建出RocketMQ消息示例的基础环境,即创建⽣产者程序和消费者程序。通过⽣产者和消费者了解RocketMQ操作消息的原⽣API。下面是使用Java程序来完成消息的收发。通过Java程序来实现消息的生产者,也就是程序可以使用rocketmq为Java程序提供的专有api来来将消息发送到rocketmq服务器上面。其次是消息的消费者,这也是一个Java程序,通过这个程序通过rocketmq提供的消费者相关的api从rocketmq服务器上订阅到消息。引⼊依赖new。
2024-09-27 14:54:31
1358
原创 Alertmanager 路由匹配
2、第二种方式则基于正则表达式,通过设置match_re验证当前告警标签的值是否满足正则表达式的内容。当前告警中是否存在标签labelname并且其值等于labelvalue。1、一种方式基于字符串验证,通过设置。告警的匹配有两种方式可以选择。
2024-09-26 17:48:24
2023
原创 RocketMQ 常用命令mqadmin与控制面板
MQMQ验证生产者:配置nameserver的环境变量 ,在发送/接收消息之前,需要告诉客户端nameserver的位置。配置环境变量使⽤⼯具验证消息的发送,默认会发1000条消息,下面的命令相当于提供了一个生产者的程序上面可以看到发送1000条消息是成功的也是启动一个消费者的程序,消费者就将生产者发送的消息全部接收到了。使⽤bin/tools.sh⼯具验证消息的接收。看到接收到的消息:上面就说明搭建的服务是ok的。关闭broker关闭nameserver。
2024-09-25 17:40:28
2184
原创 Kubernetes 集群中Coredns域名解析故障排查思路
无论是什么原因,只要是无法解析域名,就按照下面几步进行排查:1)排查Coredns组件的运行状态是否出现异常,查看运行日志获取关键信息。2)查看Node节点的/etc/resolv.conf文件中DNS地址是否配置正确,再进入到Pod中查看/etc/resolv.conf文件中DNS地址是否配置正确。3)通过K8S资源编排文件中的dnsConfig配置参数,手动配置搜索域。
2024-09-23 15:26:25
2494
原创 rsyslogd 内存占用很高解决方案
在Kubernetes(K8S)集群中,监控日志是非常重要的,而rsyslogd是Linux系统中用于处理系统和应用程序日志的守护进程。有时候rsyslogd可能会占用较高的内存,这时候我们就需要对其进行优化和调整。1、通过top -c可知,/usr/sbin/rsyslogd -n 占用了大量内存。查看rsyslogd服务配置文件,内存上限设置为8M,然后将绝对内存限制为80M。可以看到目前内存使用量:Memory: 841.2M,超过了80M的限制。2、查看rsyslog 服务,
2024-09-21 14:01:42
1959
原创 Kubelet 核心指标监控
就其本质而言,它是在操作系统本身中作为服务运行的代理,与集群中作为 Kubernetes 实体运行的其他组件非常不同。为每个集群节点发现一个目标,其地址默认为 Kubelet 的 HTTP 端口,因此您仍然可以依赖此 Prometheus 角色从您的 Prometheus 实例中抓取 Kubelet 指标。检查 Kubelet Pod 工作器持续时间指标的百分位数也是值得的,这样您将更好地了解不同操作在所有节点上的执行情况。现在,您将看到 Prometheus 实例中可用的 Kubelet 指标。
2024-09-20 14:29:04
2153
原创 kubelet 运行机制、功能 全面分析
如果发现本地的 Pod 被修改,则 Kubelet 会做出相应的修改,比如删除 Pod 中某个容器时,则通过 Docker Client 删除该容器。如果发现删除本节点的 Pod,则删除相应的 Pod,并通过 Docker Client 删除 Pod 中的容器。每个 Kubelet 进程会在 API Server 上注册所在Node节点的信息,定期向 Master 节点汇报该节点的资源使用情况,并通过 cAdvisor 监控节点和容器的资源。Pause 容器用于接管 Pod 中所有其他容器的网络。
2024-09-19 11:23:40
1851
原创 RocketMQ集群 双主双从同步模式(2m-2s-sync)搭建
具体物理的保存是保存在broker上面。也就是具体的topic和broker映射关系是保存在nameserver上面的,具体topic对应的消息保存在broker上面。在部署的时候首先要将nameserver启动起来,之后就是将broker启动起来,broker启动起来会将自己的信息注册到nameserver上面。生产者发送完消息了(或者先启动消费者也行),消费者这边也是随机选择nameserver建立长连接,或得topic的信息,它要去连接到broker上面,从broker上面不断的去拉取数据消息。
2024-09-18 21:24:16
1750
原创 RocketMQ 基本概念
对于生产者producer来说要将消息发送给某个topic上, 比如消息发送到t1这个topic,t1的topic在broker master1上面,那么消息就会存储在这个topic上面。消息服务或者说整个rocketmq里面所有的功能,这样一个功能,工具,可以使用broker来描述。在broker集群里面会有很多的broker,这些broker要将自己的信息注册到nameserver上面。对于生产者需要将消息发送到某一个topic上,但是实际的消息存储在broker上面,topic是用来区分消息的。
2024-09-14 10:27:39
1960
原创 为什么kubectl top命令查看节点内存使用超过100%?
实际节点内存利用率 = 节点已使用量 / 节点内存总量 = 2413824Ki / 4030180Ki = 59.9%节点内存使用率 = 节点已使用量 / 节点可分配 = 2413824Ki / 2213604Ki = 109%是调用kubelet的metrics API来获取数据的,因此。看到的是节点上已使用的资源总和除以可分配的所有资源。从界面上看节点内存使用率并不是很高,但使用。查看节点内存使用率已超过100%。例如,某节点的参数可通过。
2024-09-13 17:30:01
1978
1
原创 使用container_cpu_cfs_throttled_seconds_total 来避免Kubernetes CPU Limits造成的事故
本文介绍了limits是如何工作的,以及可以使用哪些指标来设置正确的值,使用哪些指标来进行抑制类型的问题定位。本文的实验提出了一个观点,即过多地配置limits的vCPU数也可能会导致vCPU处于idle状态而造成应用响应延迟,但在现实的服务中,一般会包含语言自身runtime的线程(如go和java)以及开发者自己启动的线程,一般设置较多的vCPU不会对应用的响应造成影响,但会造成资源浪费。
2024-09-13 14:05:19
2193
原创 你真的理解 Kubernetes 中的 requests 和 limits 吗?
为了实现 Kubernetes 集群中资源的有效调度和充分利用, Kubernetes 采用requests和limits两种限制类型来对资源进行容器粒度的分配。每一个容器都可以独立地设定相应的requests和limits。这 2 个参数是通过每个容器 containerSpec 的 resources 字段进行设置的。一般来说,在调度的时候requests比较重要,在运行时limits比较重要。
2024-09-09 18:03:30
2161
原创 Linux 通俗易懂的讲解 Raid0、Raid1、Raid5、Raid10
RAID : 磁盘冗余队列 (Redundant Arrays of Independent Disks )RAID是一种将多个容量较小的磁盘组成一组容量更大的磁盘,并提供数据冗余来保证数据完整性的技术。RAID将普通硬盘组成一个磁盘阵列,在主机写入数据,RAID控制器把主机要写入的数据分解为多个数据块,然后并行写入磁盘阵列;主机读取数据时,RAID控制器并行读取分散在磁盘阵列中各个硬盘上的数据,把它们重新组合后提供给主机。由于采用并行读写操作,从而提高了存储系统的存取系统的存取速度。
2024-09-09 14:48:13
2249
原创 JVM 如何获取当前容器的资源限制?
结合这个日志和代码,我们也可以看到如何获取容器配额,首先从 /proc/self/mounts 中读取对应的资源的 mount 位置,比如 cpu 就是在 / sys/fs/cgroup/cpu,cpuacct:。一算就知道物理机器有 56 个核心(8+(56-8)*5/8=38),然后使用 +PrintFlagsFinal 看下参数:。运行同样的程序:。另外,jdk 8u191 引入了 PrintContainerInfo 参数:。
2024-09-09 11:14:42
1602
原创 7张图带你轻松入门 RocketMQ
RocketMQ 是阿里巴巴的分布式消息,在 2012 年开源,在 2017 年成为 Apache 顶级项目。RocketMQ 的集群架构如下图:Name Server 集群部署,但是节点之间并不会同步数据,因为每个节点都会保存完整的数据。因此单个节点挂掉,并不会对集群产生影响。NameServer 负责维护整个消息队列系统中 Broker 的路由信息,提供轻量级的服务发现和路由功能。
2024-09-09 09:58:42
1852
原创 Rocketmq 概述消息队列的应用场景
在未出现消息队列的时候,这些服务的调用是同步的过程,当出现了消息队列之后会发现已经变成了异步的过程。异步的过程在于提高整个系统的吞吐量。只要消息发送到队列,那么就得到应该Ok的指示。对于上游来说就可以很快的结束业务。对于下游来说,既然已经在消息队列里面了,那么下游可能就不那么追求实时性。不是要立刻执行完才算下单成功,下游拿到这些消息了可以慢慢的,不追求实时的消费,但是可以将消息逐一的进行处理。允许异步的不实时的场景出现。可能在用户进行支付的时候,这些东西都已经创建好了。
2024-09-09 09:57:06
1774
原创 kubernetes Pod failed to create fsnotify watcher: too many open files
fs.nr_open: 控制单个进程可以打开的文件描述符的最大数量。单个进程的文件描述符限制可以通过 ulimit 命令来设置。单个进程能够打开的文件描述符总数的限制。当前系统可打开的最大数量指定用户可以打开的最大数量。
2024-09-06 10:20:17
2407
1
原创 记一次 OOM内存溢出案例
在linux中,出现killed的原因是系统资源不足或内存不足;当系统资源不足时,Linux内核也可以决定终止一个或多个进程,内存不足时会在系统的物理内存耗尽时触发killed,可以利用“dmesg | tail -7”命令来查看killed日志。
2024-09-05 16:55:12
2630
原创 Kubernetes CoreDNS 无法解析外网域名的问题
宿主机本地的/etc/resolv.conf文件中有两个nameserver是指定的内网的dns,这两个dns解析不到公网域名,coredns又是以轮询的方式去找那几个nameserver的,解析记录的缓存是30s(也就是说,如果你解析到了,那么未来30s的解析都是成功的),30s后再解析,解析请求就会落到那两个内网dns服务器上,所以就出现了我这种情况经过上面的ping测试和nslookup测试,分析发现k8s集群内部pod解析外部域名,先走coredns内部域名解析,再走局域网dns解析。
2024-09-04 16:55:13
2847
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人