300分钟吃透分布式缓存——陈波 分布式缓存 01 业务数据访问性能太低怎么办? 缓存的定义 狭义缓存 加速CPU数据交换的存储器。 广义缓存 数据高速交换的存储介质,加速数据访问。 缓存成本 时间局限性原理,即被获取过一次的数据在未来会被多次引用,比如一条微博被一个人感兴趣并阅读后,它大概率还会被更多人阅读。 以空间换时间,因为原始数据获取太慢,…
Leaf——美团点评分布式ID生成系统 https://github.com/Meituan-Dianping/Leaf 数据库号段发号 线程池设置线程编号 public static class UpdateThreadFactory implements ThreadFactory { private static int threadInit…
背景 项目里存放了部署到测试环境的k8s资源定义文件,这部分文件需要提交到一个资源定义文件集中仓库,给运维部署到生产环境用。但这部分文件可能会改动,例如存放的项目配置文件就是以configmap的形式在k8s中使用,如果更改项目配置,就需要同步提交到集中仓库。 最开始,这部分工作是人工手动完成的,但是一份文件保存在多个地方,就可能出现不同步的问题,…
前言 之前将流水线脚本所有内容都放到项目里,出现了些问题。 不好维护,当我发现流水线可以优化,需要做些调整的时候,需要在群里跟所有人说,要怎么怎么改。很麻烦,而且不能保证所有项目都会去更新,导致有的基础设施就需要做兼容,例如我封装的基础镜像。 新项目需要使用流水线时,可能出现随便找个脚本抄过来用,而那个脚本并不保证是最新的。 Gitlab 官方也意…
背景 目前公司采用 protocol buffer 作为 IDL,虽然可以根据 API 定义,轻松生成客户端和服务端的代码。但是对于跨项目的接口,会增加项目之间的耦合性。例如A服务对外提供了一个接口,B服务去调用。那么就需要根据A服务的proto文件,生成客户端代码,并拷贝给B。如果联调期间,A服务改动了该接口,还需重复前面的步骤,非常繁琐。 由此…
基础镜像Dockerfile集中管理 优点 结合Gitlab CI,可以快速便捷地新建和更新镜像。 可以快速找到镜像对应的 Dockerfile,明确镜像的具体组成,避免重复造轮子。 基于Dockerfile,方便对镜像进行扩展。 如何使用 创建、修改Dockerfile文件,提交到仓库,就会触发 Gitlab 流水线,自动构建镜像并上传到Harb…
.gitlab-ci.yml 流水线入口:阶段 stages: - lint - test - build - deploy 流水线以job为单位运行,每个job就是自己想通过流水线做的事情,例如单元测试的job,核心是运行脚本: go test -short go list ./... 每个阶段下可以定义多个job。 同一阶段的job会并行执行。…
和k8s部署runner相比,Docker安装runner的优势 缓存,项目里用到的各种依赖,不可能每次都下载,以及构建、语法检测等都会产生缓存。在k8s runner中使用分布式存储ceph来保存这些文件,大概700m。每次使用时特别慢,大部分时间都花在下载缓存,上传缓存。当前项目整个流水线跑下来需要10多分钟。而是用docker部署的runne…
创建账号 进入ceph-tools pod kubectl -n rook-ceph exec -it rook-ceph-tools-6ccb958485-j7pvb bash 查看可用的对象存储 [root@rook-ceph-tools-6ccb958485-j7pvb /]# radosgw-admin realm list { "…
背景 最近负责公司的 Devops 改造,使用 Gitlab CI/CD 替代之前的Jenkins。 为什么选择Gitlab CI/CD 而不是 Jenkins? 不引入其他服务,降低复杂度。 公司已经采用 Gitlab 来做源码管理了。 触发更简单,更敏捷,更灵活。 当在开发环境调试时,有的问题需要在环境里才能复现,就需要经常更新代码到环境,如果…