- 博客(240)
- 收藏
- 关注
原创 【go】三端实时反馈系统的设计,websocket实现
const (阶段主要工作遇到的挑战解决方案收获需求分析确定功能范围和角色权限需求不够明确逐步细化,迭代完善需求分析的重要性架构设计选择技术栈,设计数据库技术选型困难根据项目规模选择合适技术架构设计要考虑扩展性基础开发实现CRUD和认证Go语言不熟悉查阅文档,实践学习基础扎实很重要实时通信WebSocket集成消息重复发送理清消息流向,统一处理实时通信的复杂性功能完善图片上传,状态管理前后端数据不一致制定统一的数据格式规范数据一致性的重要性问题修复解决各种bug。
2025-08-29 18:33:05
559
原创 【计算机网络】前端基础知识Cookie、localStorage、sessionStorage 以及 Token
是否自动发给服务器Cookie:是(每次请求都带)。另外三个:否(需手动处理)。生命周期localStorage:永久(除非手动删)。sessionStorage:当前标签页生命周期。Cookie/Token:可设置过期时间。安全性敏感信息(如登录凭证)优先用Cookie(带 HttpOnly)或Token(存在内存,不用 localStorage)。非敏感信息(如用户偏好)用 localStorage。适用场景登录状态维持:Cookie(传统网站)或 Token(前后端分离)。
2025-08-29 17:11:31
886
原创 【ElasticSearch】各字段详解,案例演示
提示:ES 是“搜索引擎 + 列存分析”的混合体,所以决定你能做什么查询/排序/聚合,以及性能如何。
2025-08-24 20:24:19
438
原创 【ElasticSearch】IK分词器安装,配置修改,支持新增词组,中文常用mapping使用案例
— 主配置文件—— 停用词main.dic—— 系统内置词库(可新增)—— 自定义扩展词典# my_dict.dic 豆包编程助手自定义词汇# my_stopword.dic 的了呢啊下载对应版本的 IK 插件wget https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-<版本号>.zip安装到容器并重启docker cp zip包 es01:/tmp/配置自定义词典修改添加。
2025-08-22 16:08:22
1216
原创 【ElasticSearch】使用docker compose,通过编写yml安装es8.15和kibana可视化界面操作,go连接es
Docker 搭建环境,并在过程中标注常见问题和解决方案。
2025-08-22 15:50:31
750
原创 【Kafka】常见简单八股总结
Kafka 集群│ ├─ Topic A 的 Partition 0│ └─ Topic B 的 Partition 1│ ├─ Topic A 的 Partition 1│ └─ Topic C 的 Partition 0└─ Topic B 的 Partition 0Topic A 包含 2 个 Partition,分别在 Broker 1 和 Broker 2 上。每个 Broker 存放了不同 Topic 的 Partition。
2025-08-20 17:34:56
1291
原创 【MongoDB】多种聚合操作详解,案例分析
我们需要将这两个集合的数据按照商品编号(item)进行关联,得到包含订单信息和商品库存信息的完整文档。建议逐段复制执行,每次执行前确保集合存在且数据格式正确。遇到语法错误时,检查括号闭合和逗号使用。我们分三次执行,以便更好理解命令参数。
2025-08-18 18:44:58
464
原创 【MongoDB】常见八股合集,mongodb的特性,索引使用,优化,事务,ACID,聚合查询,数据复制机制,理解其基于raft的选举机制
自动分片分片键:可以选择高频查询字段如用户id作为分片依据,常用的还有以时间字段来分片(主要有两种分片键:范围分片,哈希分片,复合分片)MongoDB 分片需先搭建含分片节点配置服务器和路由节点的,为目标数据库启用分片,选择合适字段(如高基数字段)创建分片键索引,再为集合指定该分片键开启分片,数据将按分片键规则(范围或哈希)自动分布到各分片,应用通过路由节点透明访问。追问自动故障转移和备份细节?先分析架构,可以是一主多从,主节点宕机,通过raft协议在从节点选举。
2025-08-18 18:38:07
1122
原创 【MongoDB】工作中的中间件/数据库选择逻辑,MongoDB的使用业务
企业如何选择数据库/中间件的困惑,是许多开发人员和架构师在实际工作中不断思考的问题。
2025-08-12 10:08:42
1066
原创 【MongoDB】简单理解聚合操作,案例解析
简单说,聚合操作是MongoDB中用于对数据进行"多步处理、统计分析、格式转换"的工具。可以把它理解成一条"数据流水线":原始数据从管道入口进入,经过多个阶段(比如筛选、分组、计算、排序)的处理后,最终输出我们需要的结果。原始数据是"超市所有商品的销售记录"(包含商品名、价格、销量、日期等);聚合操作可以先筛选出"2024年的记录",再按"商品名分组",最后计算"每组的总销量和总销售额",最终得到"2024年各商品的销售统计"。
2025-08-12 10:08:07
637
原创 【MongoDB】查询计划解析,各字段理解
使用哪个索引(或是否全表扫描)执行阶段的顺序和类型数据扫描范围和预估成本查询计划就像GPS导航路线,不同的路线选择会导致截然不同的执行效率。分析查询计划就是找出最优路线的过程。优先使用索引:避免COLLSCAN,确保查询使用IXSCAN为常用查询条件创建索引复合索引中高选择性字段放在前面关注关键指标应接近nReturned应尽可能低避免的SORT操作优化查询模式追求PROJECTION_COVERED(覆盖索引)使用LIMIT减少处理数据量。
2025-08-11 09:29:49
918
原创 【MongoDB】多种索引详细使用,索引使用建议,多键索引使用的注意事项
每个集合只能有一个文本索引无论是单字段文本索引还是复合文本索引包含$text的查询不能使用hint()强制指定索引// 错误示例.hint({ content: "text" }) // 试图强制使用文本索引,会失败如果$search包含多词字符串和单个词,仅匹配包含完整多词字符串的文档举例:搜索关键词为"green apple red"(包含多词字符串 “green apple” 和单个词 “red”)// 只会匹配同时包含"green apple"完整短语和"red"的文档。
2025-08-11 09:29:29
1356
原创 【MySQL】常用字符集,排序规则的理解,在反馈系统表结构的应用
字符集:优先选utf8mb4,避免utf8(除非兼容旧系统)。排序规则(MySQL 8.0)或(低版本)。(如密码、唯一标识)。排序规则(COLLATE)只会影响字符的比较和排序逻辑不会改变数据本身的存储内容,也不会修改你存入的实际值(包括 JSON 格式的图片 URL)。具体来说:对于存储的内容(包括JSON格式的图片URL)会原封不动地保存,比如你存,数据库里还是这个值。当你进行查询(如)时,会不区分大小写image.pngImage.PNGIMAGE.PNG都会被匹配到。
2025-08-09 11:23:51
462
原创 【MongoDB】聚合操作,aggregate() 聚合管道和查询操作符$expr的区别,使用场景
用当需要多步骤处理数据(如先筛选再分组,再排序)。涉及分组统计($group)、联表查询($lookup)、数据转换($project重命名/计算新字段)。处理结果需要重新组织结构(如合并字段、拆分数组)。用$expr当仅需在find()查询中实现单文档内的字段间运算或复杂比较。逻辑简单,无需多阶段处理。不需要分组、统计或联表等聚合功能。注意$expr可作为中$match阶段的条件(增强筛选能力)。两者都可能影响性能,需结合explain()分析优化(尤其$expr要警惕全表扫描)
2025-08-09 09:42:13
605
原创 【MongoDB】索引分类,使用案例讲解,explain三种模式讲解,及性能排查案例,稀疏索引
最左前缀匹配:查询条件必须包含索引的前N个字段,否则索引失效。字段顺序依据:基数高(值唯一或多样)的字段放前面,过滤性强;排序字段放最后,且排序方向需与索引一致。避免过度设计:字段数量不宜过多(建议≤5个),否则索引维护成本高,写性能下降。结合查询频率:只为高频查询创建复合索引,低频查询可接受稍慢的响应。每个集合最多支持64个索引。索引键的总长度不能超过1024字节。某些操作(如$where$expr)可能无法使用索引。为什么where和where和where和。
2025-08-08 12:51:23
775
原创 【MongoDB】查询条件运算符:$expr 和 $regex 详解,以及为什么$where和$expr难以使用索引
特性$expr$regex主要用途字段间比较和复杂逻辑文本模式匹配语法使用聚合表达式使用正则表达式性能可以使用索引(取决于表达式)有限索引支持版本需要 MongoDB 3.6+所有版本支持典型场景比较同一文档中的多个字段搜索、模糊匹配。
2025-08-08 12:01:30
966
原创 【MongoDB】核心概念理解
文档设计优先使用嵌入式文档减少关联查询保持适度的文档结构一致性,便于Go代码处理避免文档过大(建议不超过16MB)集合规划按业务实体划分集合(如用户、订单、商品)避免过度拆分或过度合并索引策略为查询、排序、聚合操作中使用的字段创建索引复合索引字段顺序遵循"最左匹配原则"定期分析慢查询,优化索引。
2025-08-07 09:45:22
870
原创 【MongoDB】基础认知与 Docker 快捷安装,命令演示
MongoDB是一个开源的NoSQL文档数据库,它以灵活的JSON-like格式(称为BSON)存储数据,而不是传统的关系型数据库的表结构。
2025-08-07 09:45:02
588
原创 【Kubernetes】污点(Taints)与容忍(Tolerations):节点调度的“门禁系统”
污点是添加在节点上的“排斥规则”,用于阻止 Pod 被调度到该节点。如果一个节点被添加了污点,默认情况下,所有 Pod 都会被这个节点“排斥”,无法调度到该节点上。污点的核心作用是保护节点,让节点只接受“被允许”的 Pod。给_master 节点添加污点,避免普通 Pod 占用 master 资源;给带有特殊硬件(如 GPU)的节点添加污点,只允许需要 GPU 的 Pod 调度过来。
2025-08-06 09:26:10
665
原创 【Kubernetes】亲和力(Affinity):Pod 主动选择节点的“导航系统”,节点亲和性,Pod亲和性
亲和力是 Pod 上定义的“偏好或要求”,用于指导调度器将 Pod 调度到“符合条件”的节点(或与其他 Pod 靠近/远离)。它的核心作用是让 Pod 主动选择节点,而不是被动接受调度。与 Kubernetes 早期的支持更复杂的条件判断(如ANDOR逻辑);可以设置“偏好”(preferred)而非“强制要求”(required);不仅能基于节点标签选择,还能基于其他 Pod 的标签选择(如“与某类 Pod 部署在同一节点”)。要点知识。
2025-08-06 09:25:10
682
原创 【Kubernetes】使用Init Container进行高级调度,与Pod 中的 preStop 钩子 对比
kind: Podmetadata:spec:# 定义两个 Init Container- name: wait-for-mysql # 第一个:等待 mysql-service 就绪sleep 2;done"]- name: prepare-nginx-config # 第二个:处理配置文件env:value: "example.com" # 要替换的占位符值mountPath: /tmp # 挂载 ConfigMap 到 /tmp 目录。
2025-08-05 10:06:31
692
1
原创 【Kubernetes】使用CronJob进行高级调度,定时任务的应用
核心部分说明示例或默认值时间规则决定任务执行时间,采用 cron 格式,由分钟、小时、日、月、星期组成0 3 * * *(每天凌晨 3 点)任务模板定义任务具体内容,包括容器镜像、命令等容器使用 busybox 镜像,执行 echo 命令历史记录限制保留已完成和失败的 Job 数量成功 3 个,失败 1 个(默认)并发策略处理任务并发执行的策略Allow(默认)、Forbid、Replace工作流程监控时间→触发任务→执行任务→记录历史→循环执行要点知识。
2025-08-05 10:06:14
2293
原创 【Kubernetes】配置与存储,在ConfigMap和Secret配置中使用subPath进行更精确的挂载
subPath是 Kubernetes 中容器挂载配置的一个可选参数,用于指定从 Secret 或 ConfigMap 中只挂载部分内容(单个文件),而不是将整个 Secret/ConfigMap 作为目录挂载。简单说,subPath只取需要的配置文件放到指定位置不影响容器中已有的其他文件多配置源挂载到同一目录当需要从多个 ConfigMap 或 Secret 挂载文件到同一个目录时保护容器原有文件当挂载路径下已有重要文件,不想被覆盖时只需要部分配置项。
2025-08-04 09:42:44
525
原创 【Kubernetes】使用PV和PVC进行的配置与存储,创建PV、PVC和关联Pod,分析存储卷和PV的联系,多场景 PV、PVC 和 Pod 配置
解耦存储供给与使用:管理员负责维护PV(存储资源),用户只需通过PVC声明需求,无需关心底层存储细节;提高应用可移植性:应用通过PVC使用存储,迁移时只需确保目标集群有匹配的PV即可,无需修改应用配置;灵活的存储管理:支持多种存储类型(NFS、Ceph、云存储等),适应不同环境需求;安全的数据持久化:即使Pod或节点故障,数据依然保存在PV对应的存储设备中。
2025-08-04 09:41:31
1206
原创 【Kubernetes】Secret配置管理,安全管理敏感配置
Secret是Kubernetes中用于存储敏感配置数据的资源类型,与ConfigMap类似,但专门用于处理密码、令牌、密钥等需要保密的信息。数据会被Base64编码存储(注意:这只是简单编码,并非加密,真正的加密需结合RBAC权限控制或第三方密钥管理系统)可以被Pod挂载为文件或注入为环境变量与ConfigMap一样支持“配置与代码分离”,但更侧重敏感信息的安全管理简单说,Secret就像一个“加密的配置文件仓库”,专门存放需要保密的信息。
2025-08-02 16:25:38
579
原创 【Kubernetes】ConfigMap配置管理:存储配置参数,创建到容器挂载
ConfigMap是Kubernetes中用于存储非加密配置数据的资源类型,它可以存储键值对、配置文件等内容,然后被Pod中的容器引用。实现配置与应用程序代码分离方便不同环境(开发、测试、生产)使用不同配置避免配置硬编码到镜像或Pod定义中简单说,ConfigMap就像一个"配置文件仓库",Pod可以按需获取其中的配置。创建kind: Podmetadata:spec:sleep 3600"] # 输出环境变量后休眠env:# 引用ConfigMap中的key作为环境变量。
2025-08-02 16:25:23
877
原创 【Kubernetes】使用ingress的实践,理解流量路由
用户发起请求:如Ingress接收请求检查域名是否匹配Ingress规则检查路径/api是否匹配path: /api根据规则转发到Service处理请求找到Endpoints中的Pod(10.244.1.74和10.244.2.75)通过负载均衡将请求转发到其中一个PodPod响应请求Nginx容器处理请求并返回结果。
2025-08-01 12:13:55
830
原创 【Kubernetes】Ingress的理解,netstat命令使用,对比理解service和ingress
对于Kubernetes(k8s)初学者来说,网络相关的概念往往是入门的难点。Service、Ingress、端口映射等术语容易让人混淆,而netstat这类命令的输出也可能看得一头雾水。本文结合实际操作场景,从基础概念到命令使用,帮你理清Ingress、Service的核心作用及它们之间的关系。
2025-08-01 12:13:21
575
原创 【Kubernetes】Ingress-NGINX 部署与问题排查:从配置到运行
核心配置回顾通过限制控制器运行节点,确保资源合理分配;适合裸金属环境,简化外部端口访问;国内环境需配置阿里云等镜像源,避免镜像拉取失败。后续实践部署一个测试服务(如 Nginx),创建 Ingress 规则,验证通过节点IP:80能否访问;尝试配置 HTTPS,通过 Ingress 控制器实现 SSL 终止;观察控制器日志(),理解请求路由过程。
2025-07-31 09:21:13
669
原创 【Kubernetes】基础k8s服务内部访问,与DNS解析,手动配置Endpoint,与Service协作对接外部资源,ExternalName实现的CNAME转发
服务访问基础:Service 通过CLUSTER-IP提供集群内访问,NodePort提供外部访问;Endpoints动态关联后端 Pod,实现流量转发。DNS 解析逻辑:集群 DNS(如kube-dns)遵循 服务名.命名空间.svc.cluster.local规则解析域名,Pod 内可通过短域名(自动补充规则 )或完整域名访问服务,让应用间通信无需硬编码 IP,更灵活可靠。实践验证:通过dns-testPod 内的wget。
2025-07-31 09:20:57
1425
原创 【Kubernetes】使用HPA进行的自动扩缩容,模拟负载,触发自动扩/缩容,以及注意事项,自动扩缩容控制器和工作负载控制器划分
自动扩容:当 Pod 资源使用率(如 CPU)超过设定阈值时,增加 Pod 数量自动缩容:当资源使用率低于阈值且持续一段时间后,减少 Pod 数量边界控制:可设置最小()和最大()Pod 数量,避免过度扩缩容概念含义访问范围作用ClusterIPService 的虚拟 IP(集群内唯一)仅集群内(节点/Pod)集群内访问 Pod 的固定入口NodePort节点暴露的端口(30000-32767 范围内)集群内/外(需节点 IP)集群外访问 Pod 的入口Pod IP。
2025-07-30 09:29:39
693
原创 【Kubernetes】使用DaemonSet进行的资源调度,日志收集案例
DaemonSet 是 Kubernetes 提供的一种控制器,用于在集群的所有节点(或符合条件的节点)上运行且仅运行一个 Pod 实例。自动部署:新节点加入集群时,DaemonSet 会自动在该节点上创建对应的 Pod自动清理:节点从集群移除后,DaemonSet 会自动删除该节点上的 Pod节点选择:可通过标签选择器指定仅在特定节点上部署 Pod无副本数配置:无需手动设置replicas,Pod 数量由集群节点数决定(受节点选择限制)最典型的应用场景就是日志收集。
2025-07-29 12:35:05
931
原创 【Kubernetes】使用StatefulSet进行的资源调度,级联删除与非级联删除
StatefulSet 本身:定义应用的期望状态(如副本数、镜像等)关联的 Pod:由 StatefulSet 管理的实际运行实例级联删除(默认):删除 StatefulSet 时,自动删除其管理的所有 Pod非级联删除(孤儿模式):仅删除 StatefulSet 本身,保留其管理的 Pod(Pod 变为“孤儿”,不再受控制器管理)级联删除(默认):删除 StatefulSet 时自动清理所有关联 Pod,适合彻底移除应用非级联删除(–cascade=orphan)
2025-07-29 12:34:50
666
原创 【Kubernetes】使用StatefulSet进行的资源调度,删除更新策略
StatefulSet 的更新策略用于定义当 StatefulSet 配置(如镜像版本、资源限制等)发生变化时,如何更新其管理的 Pod。RollingUpdate(滚动更新):默认策略,会按顺序自动更新 Pod(从编号最大的开始),旧 Pod 终止后才创建新 Pod,保证服务连续性。OnDelete(删除触发更新):手动触发策略,配置修改后不会自动更新 Pod,只有当用户手动删除 Pod 时,StatefulSet 才会创建新的 Pod 应用新配置。演示了 StatefulSet 的OnDelete。
2025-07-28 16:14:43
902
原创 【Kubernetes】使用StatefulSet进行的资源调度,有状态应用更新发布时,必须遵循的版本灰度:金丝雀发布,StatefulSet重建步骤
通过配置Partition参数,控制只有部分Pod更新到新版本,其余仍保持旧版本。验证新版本没问题后,再调整Partition扩大更新范围,直到全量完成。为什么必须用Partition?StatefulSet的Pod有严格序号(如web-0到web-4),而Partition序号 ≥ Partition的Pod:会被更新到新版本序号 < Partition的Pod:保持旧版本不变这种按序号控制的方式,特别适合有状态应用(比如让序号大的从节点先更新,验证没问题再更新主节点)。操作目的命令说明。
2025-07-28 15:34:15
1218
原创 【Kubernetes】使用StatefulSet进行的资源调度,扩缩容,更改配置到版本回滚,三种配置更新方式
操作命令说明查看版本历史kubectl rollout history sts <名称>列出所有修订版本查看指定版本详情kubectl rollout history sts <名称> --revision=<编号>查看某版本的配置(如镜像)回滚到上一版本kubectl rollout undo sts <名称>无需指定编号,回滚到最近一次更新前回滚到指定版本kubectl rollout undo sts <名称> --to-revision=<编号>精确回滚到目标版本查看更新/回滚状态。
2025-07-26 09:40:03
709
原创 【Kubernetes】使用StatefulSet进行资源调度,实现有状态服务定义
比如数据库(MySQL主从集群):主库和从库身份不能混淆,数据不能丢失比如分布式系统(ZooKeeper):节点有编号(server1、server2),重启后身份不变这些应用如果用Deployment部署会出问题——Deployment的Pod名称是随机的(如),重建后名称改变,无法维持稳定身份。
2025-07-26 09:39:28
677
原创 【Kubernetes】使用Deployment进行的资源调度,资源清理,伸缩与更新管控
场景推荐操作优势清理闲置资源kubectl delete rs <闲置RS>保持集群资源列表简洁,避免资源冗余动态调整副本数kubectl scale deploy <名称> --replicas=<数量>一键伸缩,比手动编辑更高效安全更新配置pause→ 修改 →resume分步验证配置,降低更新风险版本管理与回滚追踪更新记录,支持快速回滚到稳定版本。
2025-07-25 10:02:37
862
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人