0%

问题描述

cp-kafka 4.0.0 集群默认单条消息上限为 1M(message.max.bytes 默认值 1048576),confluent-kafka-go 客户端若未调整对应配置,发布超过 1M 的消息会触发两类报错:

  • 客户端:Local: Message size too large(本地检测超上限);​
  • 集群:Broker: Message size too large(Broker 拒绝接收)。

临时解决方案:客户端与Kafka集群配置对齐

修改发布端的 message.max.bytes 参数,同时同步调整消费端的 fetch.message.max.bytes 参数,避免后续消费时因消息大小超限导致接收失败。示例代码如下:

阅读全文 »

前言

解决传统 Docker 构建 Golang 项目时,依赖重复下载、编译缓存失效导致构建耗时较长的问题

编译加速原理

  • 智能缓存:单独缓存 go mod download、go build 等步骤,仅输入变化时重新执行;​
  • 临时缓存卷:通过 –mount=type=cache 挂载依赖与编译缓存目录,跨构建复用资源;​
  • 多阶段构建:仅将编译产物复制到最终镜像,兼顾加速与镜像精简。

Golang 编译加速 Dockerfile 示例

阅读全文 »

本文详细介绍如何在 K3s 环境中部署一个 3 节点的 Apache Kafka 4.0.0 集群(对应 Confluent Platform 8.0.0),使用 KRaft 模式消除对 ZooKeeper 的依赖。

镜像与版本选择

​​confluentinc/cp-kafka:8.0.0​​:Confluent 官方镜像,提供企业级特性
Kafka 4.0.x 移除了对 ZooKeeper 的依赖(KRaft 模式 GA),带来显著性能提升和运维简化

1
docker pull confluentinc/cp-kafka:8.0.0

Kafka集群部署架构

  • 3节点Kafka集群​​:利用 StatefulSet 的稳定网络标识(kafka-0、kafka-1、kafka-2)
  • Pod反亲和性​​:确保3个副本分散在不同k3s节点(221、222、223)
  • KRaft模式​​:无需ZooKeeper,简化部署架构
  • 数据持久化​​:每个节点使用独立PVC存储数据
阅读全文 »

一、前置操作:创建命名空间

先为 EMQX 单独创建命名空间,隔离资源,避免与其他服务冲突:

1
kubectl create ns emqx

二、核心配置文件:emqx-cluster.yaml

核心配置包含 Headless Service、NodePort Service、ConfigMap、StatefulSet 四部分,需重点关注集群通信、端口映射、存储与部署策略。

阅读全文 »

git commit --amend 命令一键修改

1
2
git commit --amend --author="新用户名 <新邮箱@example.com>" --no-edit
git push origin your_branch [--force]

前言

在多Git仓库场景下,常需为不同仓库配置不同用户信息(name/email),又不想修改全局配置。
本文介绍在Linux环境下, 如何为当前 Git 仓库单独设置用户信息,不修改全局配置。

原理: Git配置三层优先级

  • 仓库级配置(local):仅作用于当前仓库,配置文件存储在仓库根目录的 .git/config 中,优先级最高。
  • 用户级配置(global):作用于当前操作系统用户的所有仓库,配置文件存储在用户目录下(Windows 为 C:\Users\用户名.gitconfig,macOS/Linux 为 ~/.gitconfig),优先级次之。
  • 系统级配置(system):作用于当前操作系统的所有用户,配置文件存储在 Git 安装目录的 etc/gitconfig 中,优先级最低。

操作方法

进入目标git仓库目录, 设置仓库级用户名和邮箱

1
2
3
4
5
6
7
8
cd /path/to/your/git/repo
git config --local user.name "你的用户名"
git config --local user.email "你的邮箱"

# 查看配置, 确认配置生效
git config --local --list | grep user
user.name=xxx
user.email=xxx

如果需要删除当前仓库配置, 执行如下:

1
2
git config --local --unset user.name
git config --local --unset user.email

问题描述

使用 SeaweedFS S3 接口进行预签名 Post 上传时,客户端收到 501 错误: “A header you provided implies functionality that is not implemented”。

测试发现,当请求头中携带 Bearer Token 时必定报错, 移除 Bearer Token 后上传成功

定位过程

查看 SeaweedFS 源码 的认证处理流程,发现问题在于两个关键函数的逻辑交互

阅读全文 »

问题描述

在使用 Kafka 官方的 Golang SDK (confluent-kafka-go) 时,在 Alpine 容器中编译会报错,而在宿主机上编译没有这个问题
详细问题描述参考:官方 Github issue

问题原因

  • confluent-kafka-go 依赖C语言库 (librdkafka), 编译时需指定CGO_ENABLED=1
  • Alpine Linux使用musl libc而不是glibc, go build编译时需指定-tags musl

解决方案

Dockerfile里指定编译依赖, 编译时指定CGO_ENABLED=1-tags musl, Dockerfile示例如下:

阅读全文 »

7月7号(周一), 我参与了首农REIT基金的打新, 认购了25w。资金周三晚上到账,共占用3天

这次中签177份, 市值652.3元, 中签率0.26%。7月25号REIT上市, 当天表现一般, 没有封30厘米涨停。我在4.624元的位置卖掉了份额, 涨幅约25%

阅读全文 »