分类: 其他

12 篇文章

thumbnail
【笔记】分布式缓存(1-2)
300分钟吃透分布式缓存——陈波 分布式缓存 01 业务数据访问性能太低怎么办? 缓存的定义 狭义缓存 加速CPU数据交换的存储器。 广义缓存 数据高速交换的存储介质,加速数据访问。 缓存成本 时间局限性原理,即被获取过一次的数据在未来会被多次引用,比如一条微博被一个人感兴趣并阅读后,它大概率还会被更多人阅读。 以空间换时间,因为原始数据获取太慢,…
Leaf——美团分布式ID生成系统
Leaf——美团点评分布式ID生成系统 https://github.com/Meituan-Dianping/Leaf 数据库号段发号 线程池设置线程编号 public static class UpdateThreadFactory implements ThreadFactory { private static int threadInit…
Gitlab CI/CD 实践八:同步文件到其他 Git 仓库
背景 项目里存放了部署到测试环境的k8s资源定义文件,这部分文件需要提交到一个资源定义文件集中仓库,给运维部署到生产环境用。但这部分文件可能会改动,例如存放的项目配置文件就是以configmap的形式在k8s中使用,如果更改项目配置,就需要同步提交到集中仓库。 最开始,这部分工作是人工手动完成的,但是一份文件保存在多个地方,就可能出现不同步的问题,…
thumbnail
Gitlab CI/CD 实践七:公共脚本仓库
前言 之前将流水线脚本所有内容都放到项目里,使用一段时间后,发现存在一些问题。 不好维护,当我发现流水线可以优化,需要做些调整的时候,需要在群里跟所有人说,要怎么怎么改。很麻烦,而且不能保证所有项目都会去更新,导致有的基础设施就需要做兼容,例如我封装的基础镜像。 新项目需要使用流水线时,可能出现随便找个脚本抄过来用,而那个脚本并不保证是最新的。 G…
thumbnail
Gitlab CI/CD 实践六:统一管理 protocol buffer,API 大仓设计与实现
背景 目前公司采用 protocol buffer 作为 IDL,虽然可以根据 API 定义,轻松生成客户端和服务端的代码。但是对于跨项目的接口,会增加项目之间的耦合性。例如A服务对外提供了一个接口,B服务去调用。那么就需要根据A服务的proto文件,生成客户端代码,并拷贝给B。如果联调期间,A服务改动了该接口,还需重复前面的步骤,非常繁琐。 由此…
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
Gitlab CI/CD 实践三:Docker 安装 Gitlab Runner
和k8s部署runner相比,Docker部署runner的优势 缓存,项目里用到的各种依赖,不可能每次都重新下载。同时构建应用、语法检测等也会产生缓存文件。 某个项目在k8s runner中使用分布式存储ceph来保存这些文件,大概700m。每次使用时特别慢,大部分时间都花在下载缓存,解压缓存,流水线结束时压缩缓存,上传缓存。 整个流水线跑下来需…
thumbnail
Gitlab CI/CD 实践一:Gitlab Runner 安装到 K8S 集群
背景 最近负责公司的 Devops 改造,使用 Gitlab CI/CD 替代之前的Jenkins。 为什么选择Gitlab CI/CD 而不是 Jenkins? 不引入其他服务,降低复杂度。 公司已经采用 Gitlab 来做源码管理了。 触发更简单,更敏捷,更灵活。 当在开发环境调试时,有的问题需要在环境里才能复现,就需要经常更新代码到环境,如果…