问题背景 最近,在对老项目进行重构工作。在重构过程中发现需要通过 grpc 调用若干远端微服务,远端微服务都有提前定义好的 proto,在运行时(编译通过,运行则panic)出现了 name conflict 冲突问题。也就是说,在运行时报错提示存在相同名称的 message 消息体。 具体报错信息,如下所示: ➜ app > go mod tidy ➜ app > go build main.go ➜ app > ./main api start panic: proto: file "usermgt.proto" has a name conf...
最近,接手一个新的项目 —— 电子价签。对于电子价签的常见架构,阿里云有一篇文章描述的非常详细(网址见文章末尾),里面包含一个核心的概念 MQTT。由于第一次接触MQTT,特此整理相关知识点,以备后用。 MQTT是什么 MQTT (Message Queuing Telemetry Transport 消息队列遥测传输),是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。 mqtt官网 https://mqtt.org MQTT 是 IBM 推出的一种针对移动端设备的基于 TCP/IP 的发布、订阅...
1.认识CDC Change Data Capture(简称CDC):其主要作用是用来捕获数据的变更,在数据发生变化之后,把变更后的数据同步到其他异构数据服务中。例如:通过订阅MySQL中binlog日志,将MySQL中发生变化的数据同步到Redis、kafka、Es等存储服务中。 在现实开发中有一些场景会用到CDC工具,例如: 数据库数据发生变化,异步更新缓存 业务中同时更新DB、cache,需要考虑边缘问题(面试问题:数据库、缓存不一致时如何解决?) 数据存储到MySQL之后,需要同步到ES以便可以使用全文检索 MySQL对全文搜索支持的不是很好,通常全站搜索都会使用E...
1.关于etcd 官方文档永远是最好的学习资料,官方介绍etcd如是说。 分布式系统使用etcd作为配置管理、服务发现和协调分布式工作的一致键值存储。许多组织使用etcd来实现生产系统,如容器调度器、服务发现服务和分布式数据存储。使用etcd的常见分布式模式包括leader选举、分布式锁和监视机器活动。 Distributed systems use etcd as a consistent key-value store for configuration management, service discovery, and coordinating distributed w...
使用 docker desktop 在 Mac OS 上搭建 Kubernetes 环境比较简单,但是搭建过程中可能会遇到一些问题,问题解决起来就没有那么简单,特此整理相关内容以备后续之需。 笔者第一次在Mac上搭建花了一天时间 1.下载/安装 docker desktop ① 下载 docker desktop # 地址1 https://hub.docker.com/search?type=edition&offering=community&q= # 地址2 https://www.docker.com/get-started/ ② 安装成功之后,查看版本信息...
本文使用 shell 作为 gitlab-runner 执行器 (executor) 演示提交 MR 时执行代码检查。 gitlab搭建参考文章:<基于docker搭建的gitlab实现CI/CD>,本文只是把文章中 runner 执行器由 docker 变成了 shell。 1.准备工作 安装gitlab-runner、reviewdog、golangci-lint #安装 gitlab-runner curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/scrip...