HTTP 协议演进
Http 1.0 存在的问题 无法复用链接:每个请求都需要建立TCP链接。 对头阻塞:第二个请求必须等第一个请求响应后才能发起。 Http 1.1 特性 默认使用长连接,可配置Keep-alive来控制连接时间 支持请求管道化,客户端可以发送多个请求,而不用等待前一个请求响应。 存在的问题 为了让客户端识别请求对应的响应,服务端响应时,必须按照请求…
thumbnail
Go进阶训练营 – 微服务概览与治理三:gRPC & 服务发现
同系列文章:Go 进阶训练营 服务调用:gRPC 什么是gRPC? A high-performance, open-source universal RPC framework。 语言中立,公司里可能存在不同语言的服务需要交互。 统一采用gRPC作为服务之间的通信协议,可能存在其他性能更好的解决方案,但不要过早关注性能问题,先标准化更重要。 轻量…
thumbnail
Gitlab CI/CD 实践五:基础镜像 Dockerfile 仓库 CI 流水线配置
基础镜像Dockerfile集中管理 完整代码:https://github.com/EchoGroot/dockerfile 优点 结合Gitlab CI,可以快速便捷地新建和更新镜像。 可以快速找到镜像对应的 Dockerfile,明确镜像的具体组成,避免重复造轮子。 基于Dockerfile,方便对镜像进行扩展。 如何使用 创建、修改Dock…
thumbnail
Gitlab CI/CD 实践四:Golang 项目 CI/CD 流水线配置
概要 通过gitlab CI/CD,可实现提交代码时触发golang应用的单元测试、代码检查、构建镜像、推送镜像到镜像私仓、部署应用到k8s,下面说下具体实现。 创建流水线脚本文件 在项目根目录创建.gitlab-ci.yml文件。 引入公共脚本库 include: - project: 'devops/gitlab-cicd-templ…
thumbnail
Go进阶训练营 – 微服务概览与治理二:微服务设计
同系列文章:Go 进阶训练营 API Gateway B站进行了 SOA 服务化的架构演进,按照垂直功能进行了拆分,对外暴露了一批微服务,但是因为缺乏统一的出口面临了不少困难: 1.0 客户端到微服务直接通信,强耦合。 如果涉及移动端,同时存在多版本,api兼容困难,重构困难,用户可能还在使用一年前版本的移动端。 需要多次请求,客户端聚合数据,工作…
LeetCode:一和零_474
思路 多维的动态规划,属于背包类问题,只是穷举多了个背包。 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版本命名…
开发规范二:Git Commit 规范
基于约定式提交 1.0.0 🐱commit message格式 <类型>[范围]: <标题> [主体内容] 例如:fix(admin): k8sProxy反向代理路由修改 类型(必须) 用于说明git commit的类别,只允许使用下面的标识。 feat:新功能(feature)。 fix:修复bug,可以是QA发现的BUG…
thumbnail
开发规范一:Git Flow + Gitlab 工作流
分支说明 main 分支 发布分支。 包含最新稳定版本,每个版本都是该分支上的一个tag。 长期分支。 保护分支,非Maintainer成员不能直接提交,只能从其他分支合并。 develop 分支 主开发分支。 新功能或 bug 修复分支都从这里拉取和提合并请求。 长期分支。 保护分支,非Maintainer成员不能直接提交,只能从其他分支合并。 …