大厂开源项目
今天给大家推荐几款大厂开源项目
# 一、bk-job
一套腾讯出品的运维脚本脚本管理系统
蓝鲸作业平台(Job)是一套运维脚本管理系统,具备海量任务并发处理能力。除了支持脚本执行、文件分发、定时任务等一系列基础运维场景以外,还支持通过流程调度能力将零碎的单个任务组装成一个自动化作业流程;而每个作业都可做为一个原子节点,提供给上层或周边系统/平台使用,实现跨系统调度自动化。
# 项目的优势
- 安全可靠的高危命令检测能力
- 完善的脚本版本管理
- 作业编排,一切皆场景
- 原汁原味的 Cron 定时任务
- 高扩展性的文件源管理能力
# 八大功能
配置管理: 提供面向运维人员的服务器/设备基础信息、进程服务、业务拓扑等资源的配置管理平台,支持自动发现和web可视化能力,并具备丰富的API接口。
作业执行: 支持多云并发、海量且高效的运维操作平台,涵盖了脚本执行、文件拉取/分发等基础操作,满足各种复杂运维场景一键式作业,实现真正的Web自动化运维。
Devops: 提供了完整的开发框架、调度引擎以及丰富的组件、页面样例,旨在降低运维开发的门槛,提升了应用的开发效率,最快10分钟开发出一个应用。
移动运维: 借助微信公众号解决方案,整合蓝鲸的功能特性移植到移动端,最大化提高运维工作效率和便捷性,真正做到“工作 • 生活,弹指一瞬间”。
任务调度 :蓝鲸体系拥有强大的任务调度引擎,能够自定义将多个系统的作业任务串接成一个流程,轻松实现跨系统的调度自动化。
数据分析: 专注于运维领域的大数据平台,以海量数据采集、实时/离线分析计算、数据可视化、大容量存储及Data API等优势,致力打造专业的运维数据运营解决方案。
监控告警: 覆盖自下而上的(包括并不仅限于)设备主机、应用服务、平台系统、舆情等多维度/多指标的全方位监控告警服务。
CI/DI:蓝鲸提供了从代码的构建、集成到最终交付部署的完整自动化工具链,使产品持续部署各个环节得到全周期的管控,交付的效率得到循序渐进的提高。
# 官网地址
https://bk.tencent.com/
# 二、derrick
Derrick 是阿里开源的工具,可帮助您在几秒钟内将应用程序容器化。
Derrick 是一个帮助用户快速容器化应用的工具。Derrick 适用于本地开发环境,能够自动检测项目的语言框架,然后自动生成容器化所需的配置文件,包括不限于:
- Dockerfile
- Kubernetes 资源定义
- Helm Chart 模板
- Kustomize 模板
- 更多在实现中 (如 Terraform 模板等)
支持的语言:
NodeJs,Python,Java,Golang,PHP
# 对比其他项目
# Buildpack[#](https://alibaba.github.io/derrick/docs/comparison#buildpack
Buildpack (opens new window) 是一个客户端工具,用于从源代码自动化构建出应用镜像。
Derrick 在很大程度上借鉴了 Buildpack 的思想,包括 auto-detection 等简单易用的体验。但是,Buildpack 作用的场景过于局限,很多用户需要的场景没法满足。比如说:
- 用户不想要自动构建镜像,而是想要先自动生成 Dockerfile 文件,然后在里面手动做一些更改。
- 用户想要自动生成 K8S 部署配置。
- 用户想要自动生成一些云资源配置的模板,比如跟中间件 AHAS/MSE/ARMS 的集成,然后进一步填入信息。
- 用户想要一步到位把镜像上传到镜像服务中。
- 用户已经有一些服务跑在 VM 里面,想要进一步把这些应用给容器化后运行到 K8S 上。
这些都是 Buildpack 无法解决的问题。而 Derrick 的出现正是为了解决这些用户问题,为了能够更好地帮助用户容器化应用。
另一方面,Derrick 计划直接利用 Buildpack 做自动生成镜像的工作,充分利用 Buildpack 社区已有的能力。从这点看,Derrick 更像是 Buildpack 的一个超集。
Derrick 跟 Buildpack 的对比总结如下:
- Derrick 能够生成 Dockerfile 等配置文件,让用户进一步修改。
- Derrick 能够生成 K8S 部署配置、云资源配置等。
- Derrick 能够将已经在运行的服务容器化。
- Buildpack 能够自动生成镜像。而且这方面在社区有大量已有的能力。Derrick 有计划直接利用起来,而不是重复建设。
# 三、leaf
Leaf是美团基础研发平台推出的一个分布式ID生成服务
# Leaf特性
Leaf在设计之初就秉承着几点要求:
全局唯一,绝对不会出现重复的ID,且ID整体趋势递增。
高可用,服务完全基于分布式架构,即使MySQL宕机,也能容忍一段时间的数据库不可用。
高并发低延时,在CentOS 4C8G的虚拟机上,远程调用QPS可达5W+,TP99在1ms内。
接入简单,直接通过公司RPC服务或者HTTP调用即可接入。
分布式ID生成的方案有很多种,Leaf开源版本提供了两种ID的生成方式:
- 号段模式:低位趋势增长,较少的ID号段浪费,能够容忍MySQL的短时间不可用。
- Snowflake模式:完全分布式,ID有语义。
这里主要介绍Snowflake模式
# Leaf Snowflake
Snowflake,Twitter开源的一种分布式ID生成算法。基于64位数实现,下图为Snowflake算法的ID构成图。
- 第1位置为0。
- 第2-42位是相对时间戳,通过当前时间戳减去一个固定的历史时间戳生成。
- 第43-52位是机器号workerID,每个Server的机器ID不同。
- 第53-64位是自增ID。
这样通过时间+机器号+自增ID的组合来实现了完全分布式的ID下发。
在这里,Leaf提供了Java版本的实现,同时对Zookeeper生成机器号做了弱依赖处理,即使Zookeeper有问题,也不会影响服务。Leaf在第一次从Zookeeper拿取workerID后,会在本机文件系统上缓存一个workerID文件。即使ZooKeeper出现问题,同时恰好机器也在重启,也能保证服务的正常运行。这样做到了对第三方组件的弱依赖,一定程度上提高了SLA。
Leaf-snowflake是按照下面几个步骤启动的:
启动Leaf-snowflake服务,连接Zookeeper,在leaf_forever父节点下检查自己是否已经注册过(是否有该顺序子节点)。
如果有注册过直接取回自己的workerID(zk顺序节点生成的int类型ID号),启动服务。
如果没有注册过,就在该父节点下面创建一个持久顺序节点,创建成功后取回顺序号当做自己的workerID号,启动服务。
# Leaf现状
Leaf在美团点评公司内部服务包含金融、支付交易、餐饮、外卖、酒店旅游、猫眼电影等众多业务线。目前Leaf的性能在4C8G的机器上QPS能压测到近5w/s,TP999 1ms,已经能够满足大部分的业务的需求。每天提供亿数量级的调用量,作为公司内部公共的基础技术设施,必须保证高SLA和高性能的服务,我们目前还仅仅达到了及格线,还有很多提高的空间。
# 项目地址
https://github.com/Meituan-Dianping/Leaf
# 四、CAT
CAT 美团点评提供了全面的实时监控告警服务
- CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
- CAT 很大的优势是它是一个实时系统,CAT 大部分系统是分钟级统计,但是从数据生成到服务端处理结束是秒级别,秒级定义是48分钟40秒,基本上看到48分钟38秒数据,整体报表的统计粒度是分钟级;第二个优势,监控数据是全量统计,客户端预计算;链路数据是采样计算。
# Cat 优势
- 实时处理:信息的价值会随时间锐减,尤其是事故处理过程中
- 全量数据:全量采集指标数据,便于深度分析故障案例
- 高可用:故障的还原与问题定位,需要高可用监控来支撑
- 故障容忍:故障不影响业务正常运转、对业务透明
- 高吞吐:海量监控数据的收集,需要高吞吐能力做保证
- 可扩展:支持分布式、跨 IDC 部署,横向扩展的监控系统
# 架构设计
整个CAT主要分为三个模块,cat-client,cat-consumer,cat-home。
- cat-client 提供给业务以及中间层埋点的底层sdk。
- cat-consumer 用于实时分析从客户端的提供的数据。
- cat-home 作为用户提供给用户的展示的控制端。
在实际开发和部署中,cat-consumer和cat-home是部署在一个jvm内部,每个CAT服务端都可以作为consumer也可以作为home,这样既能减少整个CAT层级结构,也可以增加整个系统稳定性。
上图是CAT目前多机房的整体结构图:
- 路由中心是根据应用所在机房信息来决定客户端上报的CAT服务端地址
- 每个机房内部都有的独立的原始信息存储集群HDFS
- cat-home可以部署在一个机房也可以部署在多个机房,在做报表展示的时候,cat-home会从cat-consumer中进行跨机房的调用,将所有的数据合并展示给用户
- 实际过程中,cat-consumer、cat-home以及路由中心都是部署在一起,每个服务端节点都可以充当任何一个角色
# 模块简介
# 功能模块
- cat-client: 客户端,上报监控数据
- cat-consumer: 服务端,收集监控数据进行统计分析,构建丰富的统计报表
- cat-alarm: 实时告警,提供报表指标的监控告警
- cat-hadoop: 数据存储,logview 存储至 Hdfs
- cat-home: 管理端,报表展示、配置管理等
- 根目录下 cat-client 模块以后不再维护,下个大版本更新计划移除。新版Java客户端参考:lib/java
- 管理端、服务端、告警服务均使用 cat-home 模块部署即可
# 五、Gaea
Gaea是小米中国区电商研发部研发的基于mysql协议的数据库中间件,目前在小米商城大陆和海外得到广泛使用,包括订单、社区、活动等多个业务。Gaea支持分库分表、sql路由、读写分离等基本特性,更多详细功能可以参照下面的功能列表。其中分库分表方案兼容了mycat和kingshard两个项目的路由方式。
# 功能列表
# 基础功能
- 多集群
- 多租户
- SQL透明转发
- 慢SQL指纹
- 错误SQL指纹
- 注解路由
- 慢日志
- 读写分离,从库负载均衡
- 自定义SQL拦截与过滤
- 连接池
- 配置热加载
- IP/IP段白名单
- 全局序列号
# 分库、分表功能
- 分库: 支持mycat分库方式
- 分表: 支持kingshard分表方式
- 聚合函数: 支持max、min、sum、count、group by、order by等
- join: 支持分片表和全局表的join、支持多个分片表但是路由规则相同的join
# 模块划分
gaea包含四个模块,分别是gaea-proxy、gaea-cc、gaea-agent、gaea-web。gaea-proxy为在线代理,负责承接sql流量,gaea-cc是中控模块,负责gaea-proxy的配置管理及一些后台任务,gaea-agent部署在mysql所在的机器上,负责实例创建、管理、回收等工作,gaea-web是gaea的一个管理界面,使gaea整体使用更加方便。
# 架构图
# 集群部署图
# 项目地址
https://github.com/XiaoMi/Gaea
- 01
- 保姆级教程 用DeepSeek+飞书,批量写文案、写文章,太高效了06-06
- 03
- 熬夜做PPT?AI一键生成高逼格幻灯片,效率提升10倍!06-06