同系列文章:Go 进阶训练营 服务调用:gRPC 什么是gRPC? A high-performance, open-source universal RPC framework。 语言中立,公司里可能存在不同语言的服务需要交互。 统一采用gRPC作为服务之间的通信协议,可能存在其他性能更好的解决方案,但不要过早关注性能问题,先标准化更重要。 轻量…
基础镜像Dockerfile集中管理 完整代码:https://github.com/EchoGroot/dockerfile 优点 结合Gitlab CI,可以快速便捷地新建和更新镜像。 可以快速找到镜像对应的 Dockerfile,明确镜像的具体组成,避免重复造轮子。 基于Dockerfile,方便对镜像进行扩展。 如何使用 创建、修改Dock…
概要 通过gitlab CI/CD,可实现提交代码时触发golang应用的单元测试、代码检查、构建镜像、推送镜像到镜像私仓、部署应用到k8s,下面说下具体实现。 创建流水线脚本文件 在项目根目录创建.gitlab-ci.yml文件。 引入公共脚本库 include: - project: 'devops/gitlab-cicd-templ…
同系列文章:Go 进阶训练营 API Gateway B站进行了 SOA 服务化的架构演进,按照垂直功能进行了拆分,对外暴露了一批微服务,但是因为缺乏统一的出口面临了不少困难: 1.0 客户端到微服务直接通信,强耦合。 如果涉及移动端,同时存在多版本,api兼容困难,重构困难,用户可能还在使用一年前版本的移动端。 需要多次请求,客户端聚合数据,工作…
思路 多维的动态规划,属于背包类问题,只是穷举多了个背包。 strs里的每个元素就是物品,m为装1的背包数量,n为装0的背包数量,开始DP套路: 定义状态:dp[i][m][n]表示0-i个物品,m个装1的背包,n个装0的背包可以装下多少个物品 状态转移方程:dp[i][m][n]=max(dp[i-1][m][n],dp[i-1][m-i1][n…
发布版本-需求标题 文档变更记录 日期 版本号 修订内容 修订人 目 录 [TOC] XXX功能详细设计 【 详细设计文档针对一个具体功能或者模块进行详细设计, 完成设计文档后,一定将【】的所有示例内容都删除。不能直接删除章节,若不进行设计,请写“无”。 注意修改页文档版本控制。 】 合并请求:https://xxx.xxx.com/xxx/-/m…
依据Semver2版本标准,和业界保持基本一致。 🐤主版本号 版本号使用三位版本号,X.Y.Z,不足三位的补齐为三位,如0.1.0,1.0.0,1.2.0。 一位版本 无法向下兼容时。 当软件和产品发生巨大变化时。 二位版本 软件和产品增加新的特性。 三位版本 产品累积的维护性需求或bug。 扩充版本号 alpha版本 演示版采用alpha版本命名…
基于约定式提交 1.0.0 🐱commit message格式 <类型>[范围]: <标题> [主体内容] 例如:fix(admin): k8sProxy反向代理路由修改 类型(必须) 用于说明git commit的类别,只允许使用下面的标识。 feat:新功能(feature)。 fix:修复bug,可以是QA发现的BUG…
分支说明 main 分支 发布分支。 包含最新稳定版本,每个版本都是该分支上的一个tag。 长期分支。 保护分支,非Maintainer成员不能直接提交,只能从其他分支合并。 develop 分支 主开发分支。 新功能或 bug 修复分支都从这里拉取和提合并请求。 长期分支。 保护分支,非Maintainer成员不能直接提交,只能从其他分支合并。 …
和k8s部署runner相比,Docker部署runner的优势 缓存,项目里用到的各种依赖,不可能每次都重新下载。同时构建应用、语法检测等也会产生缓存文件。 某个项目在k8s runner中使用分布式存储ceph来保存这些文件,大概700m。每次使用时特别慢,大部分时间都花在下载缓存,解压缓存,流水线结束时压缩缓存,上传缓存。 整个流水线跑下来需…