在K8s中,Deployment和StatefulSet是两种常用的控制器(Controller),用于管理Pod的生命周期和部署方式。尽管它们的目标都是运行和管理一组Pod,但两者的使用场景和特性存在着显著的差异。一下是他们主要的区别和使用场景分析。 核心概念 Deployment: 主要用于管理无状态应用 提供声明式的更新机制,支持回滚更新和回滚等操作。 ...
在K8s中,Deployment和StatefulSet是两种常用的控制器(Controller),用于管理Pod的生命周期和部署方式。尽管它们的目标都是运行和管理一组Pod,但两者的使用场景和特性存在着显著的差异。一下是他们主要的区别和使用场景分析。 核心概念 Deployment: 主要用于管理无状态应用 提供声明式的更新机制,支持回滚更新和回滚等操作。 ...
RDMA(Remote Direct Memory Access,远程直接内存访问)是一种高性能的网络通信技术,允许一台计算机直接访问另外一台计算机的内存,而无需直接操作远程系统的CPU或者操作系统。这种技术极大的减少了网络通信的延迟和CPU的开销,同时提高了数据传输的吞吐量。 RDMA的核心思想是通过硬件支持,绕过传统的协议栈如(TCP/IP),直接在用户空间完成数据的读写操作。这使得RD ...
在讨论语言模型时,你可能会注意到有些模型名称后面带有“-instruct”,而另外一些则没有。这种命名方式通常为了区分模型的不同用途或者训练目标。以下是带“-instruct”和不带“-instruct”的模型之间的区别: 训练目标的区别 不带的“-instruct”的模型: 这些模型通常是通过大模型无监督训练得到的,主要用于文本生成。它们的目标是根据输入的上下文预测 ...
位运算是一种在计算机中直接操作二进制位的方法,它通常比其他算数运算速度更快。在解决一些特定的问题的时候,位运算可以提供高效的解决方案。下面我们来详细的学习一下位运算的相关操作。 基本操作 按位与(AND):& 两个二进制位都为1时,结果为1,否则位0。 示例: let a = 5; // 0101 let b = 3; // 001 ...
chrony是一个时间同步工具,旨在替换掉传统的ntpd服务。特别适合现在的动态设备(如虚拟机、容器和移动设备),具有更快的同步速度和更高的灵活性。下面是关于chrony的原理和安装教程。 chrony的原理 客户端和服务器通信:chronyd作为客户端,向配置的ntp服务器发送时间同步请求。 计算时间偏差:根据服务器的响应时 ...
打开官网下载链接 官网下载链接 centos安装 sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-11.4 ...
分布式锁在分布式系统中非常重要,它可以帮助我们避免多个进程或线程同时访问共享资源,从而避免数据一致性问题。在Go语言中,我们可以使用Redis来实现分布式锁。 获取锁 在Redis中,我们可以使用SETNX命令来获取锁。SETNX命令的作用是,如果指定的key不存在,则设置key的值为指定的value,并返回1;如果指定的key已经存在,则不设置key的值,并返回0。 su ...
概述 在现代的微服务架构中,监控系统的性能和健康状况是至关重要的。Prometheus 是一个开源的监控和告警工具,广泛用于收集和查询时间序列数据。Gin 是一个高性能的 Go Web 框架,结合 Prometheus 可以方便地监控 HTTP 请求、系统资源使用情况以及 Go 运行时的状态。 本文将介绍如何在 Gin 框架中集成 Prometheus,并通过多个关键指标来监控系统的性 ...
prometheus 是一款开源的监控和告警系统,它可以帮助你收集和存储各种指标数据,并提供查询和可视化功能。Gin 是一款高性能的 Go 语言 Web 框架,它可以用来构建高性能的 Web 应用程序。 在本教程中,我们将介绍如何在 Gin 集成 Prometheus 来收集和存储该应用程序的指标数据。 初始化prometheus服务 package s ...
什么是yum YUM(全称Yellowdog Updater,Modified)是一个在类Unix系统中,特别是Red Hat系列的发行版(如Centos、RHEL、Fedora)中,常用的包管理工具。它用来自动的安装、更新、删除和管理软件包,可以简化系统管理员的工作。 yum的工作原理 依赖管理:yum会自动处理软件包的依赖 ...
1. 创建prometheus用户 创建prometheus用户,用于运行prometheus服务 sudo useradd --no-create-home --shell /bin/false prometheus 2. 下载安装包 下载最新的prometheus安装包 sudo wget https://github. ...
背景 最近从grafana的alert中收到一个告警,告警内容是K8S服务pod重启了,查看pod日志描述信息显示如下: kubectl describe xxxxxx-api-6577f45dd5-9gprq Name: xxxxxx-api-6577f45dd5-9gprq Namespace: xxxxxx Prior ...
背景 最近,在编译打包镜像的老是会失败,查看jenkins编译日志,发现是磁盘空间不足导致的。报错日志如下: #14 97.58 go: failed to trim cache: open /root/.cache/go-build/trim.txt: no space left on device Dockerfile:41 ...
背景 公司内部服务之间调用是,使用的签名如下: // 签名验证 func ValidateSignatureMiddleware(svc *service.Service) gin.HandlerFunc { return func(ctx *gin.Context) { ctxx := contextx.NewContextx(ctx, svc) if svc ...
在go语言中,从标准输入(os.Stdin)读取数据的常见方式有下面几种: 1. 使用fmt.Scan系列函数 fmt.Scan系列函数提供了简单的从标准输入读取数据的方法。 1.1 fmt.Scan 从标准输入读取由空白符(空格、制表符、换行符等)分隔的值,并将这些值保存到提供的参数中。 换行符被视为空白符,因此会忽略掉换行符继续输入。 返 ...
在实际的生产环境中,为了保障系统的安全性,通常会通过IP白名单来限制访问来源,确保只有在白名单中的受信任的IP地址才能访问特定的服务。常见的IP白名单主要有以下的几种方式: 单个IP配置 CIDR表示法配置 通用IP段配置 通配符的配置 单个IP配置 这种方式用于指定固定的IP地址。在白名单中直接配置: 192.168.100.60 CI ...
背景介绍 公司的一个公众号内嵌H5页面,用户在公众号内打开这个H5页面,点击页面的按钮打开微信小程序来领取优惠券。 运营反馈从昨天开始,用户点击打开小程序的按钮后没有反应,但是点击跳转h5的按钮可以正常跳转。而且时好时坏,并不是每次点击都无效。由于影响范围较大(公众号的主要功能受影响,受影响活跃用户在5w左右),所以进行了立即排查。 页面结构 H5的页面内部的主要逻辑是展示优惠 ...
在Go语言中,接口是一个非常重要的概念,用于定义一组行为的集合,任何实现了该接口方法集的类型都可以视为该接口的实现。在接口的使用过程中,有一种较为高级的技巧,即通过类型断言来确保某个类型实现了接口。这篇博客将详细介绍其中一种常用方式: var _ Buffer = (*StringBuffer)(nil) 这行代码看起来简单,却非常实用。在大型项目中,它可以帮助我们避免 ...
Go语言中并没有内置的三元运算符(类似a ? b : c),但可以通过定义一个泛型函数 Ter 来实现相同的效果。以下是详细的实现与使用示例。 实现三元运算符函数 在Go 1.18+版本中引入了泛型,允许定义泛型函数。Ter 函数的实现如下: // 三元运算符函数 func TerT any T { if cond { r ...
在编程过程中,我们经常需要比较两个值是否相等。go提供了丰富的数据类型,那么这些类型都是怎么进行等值比较的呢?下面我们来学习一下。 go中的数据类型 基本类型 整型 (int8, int16, int32, int64, int, uint8, uint16, uint32, uint64, uint, byte, rune) 浮点型 (fl ...
什么是Bitmap 位图(Bitmap)是一种在计算机领域广泛使用的数据结构,主要用于高效地表示和操作大量布尔值(0或1)的集合。它通过利用位级运算的特性,将每个布尔值存储在一个二进制位(bit)中,从而实现了空间高效和运算高效的目标。 位图的基本原理是使用一个连续的位序列(一个位就是0或1)来表示一组元素的集合。每个元素在位图中对应一个固定的位位置,如果该位为1,则表示该元素存在于集 ...
我们在搭建完服务器之后,默认的时区通常是Etc/UTC (UTC, +0000)。 Etc/UTC 是一个特殊的时区标识,代表协调世界时(Coordinated Universal Time,缩写为UTC)或格林威治标准时间(Greenwich Mean Time,缩写为GMT)。这是一个不考虑夏令时的时区,始终保持不变。 "+0000" 是与UTC时区关联的时区偏移值,表示该时 ...
背景 最近需要配置一个web服务,该web服务提供了HTTP和wss两种协议通信,在配置反向代理的过程中,wss协议的请求一直失败。了解后发现是相关参数未设置的问题,下面我将就我遇到的这个问题,简要的介绍一下什么是wss协议,以及如何正确的配置nginx代理wss。 什么是wss WSS, 全称:WebSocket Secure。顾名思义,就是安全的` ...
在服务器上经常会有文件内容部分或者全量替换的操作,下面我们来学习一下如何在vim编辑器里执行替换操作。 语法 替换命令的基本语法如下: :%s/要替换的文本/新文本/g 这个命令包括以下部分: :%s:表示对整个文档执行替换操作。 /要替换的文本:在这里指定你要查找和替换的文本。 /新文本:在这里指定你要替换成的新文本。 g ...
背景 最近在配置一个web代理服务,除了http代理外,还需配置wss协议代理。这篇博客记录一下如何使用nginx配置wss代理。 配置 如何配置Nginx支持WSS协议。 location /websocket { proxypass http://backendserver; # WebSocket后端的地址 proxyhttpve ...
在Ubuntu上设置静态IP地址需要编辑网络配置文件。以下是在Ubuntu 20.04上设置静态IP地址的步骤: 查看网络接口名称 $ ip addr 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback ...
根据ubuntu官方文档关于UFW命令的介绍,UFW(Uncomplicated Firewall),UFW 旨在简化 iptables 防火墙配置,提供了一种用户友好的方法来创建基于 IPv4 或 IPv6 主机的防火墙。默认情况下,UFW 最初处于禁用状态。从 ufw 手册页:"UFW并 ...
HTTP基本身份验证: 这是最简单的身份验证方法,它要求用户提供用户名和密码以访问受保护的资源。配置示例: location /secure { auth_basic "Restricted Area"; authbasicuser_file /etc/nginx/.htpasswd; } `authbasicuser_file参数指定存储 ...
添加Graphics Drivers PPA PPA(Personal Package Archive)是一种用于在Ubuntu中安装软件的方式。输入以下命令将Graphics Drivers PPA添加到系统中: $ sudo add-apt-repository ppa:graphics-drivers/ppa 按下回车后,系统可能会要求你输入管理员密码。 ...
背景 最近在给自己的服务器安装ubuntu server系统的时候,所有的选项都是用了安装引导的推荐选项,导致只分配了100G的磁盘空间,而磁盘剩余空间为1.8T。 $ ubuntu@ubuntu:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS nvme0n1 ...