性能利器 Takin 来了!首个生产环境全链路压测平台正式开源
6 月 25 日,国内知名的系统高可用专家数列科技宣布开源旗下核心产品能力,对外开放生产全链路压测平台产品的源代码,并正式命名为 Takin。
目前中国人寿、顺丰科技、希音、中通快递、中国移动、永辉超市、爱库存、浙江大学等 50+行业头部公司都采用了该技术,10 万+探针同时线上运行,每天实时处理数百亿条用户请求,生成数百 TB 链路数据。该项目已在 Github 上发布,作为全球首款开源的全链路压测平台,Takin 的开源将为更多企业提供超低门槛、超低成本、超高效率的性能保障能力。
什么是生产环境全链路压测?
全链路压测是一种使用最低成本,使系统达到最确定的性能目标的方法,能够保障业务的连续性,让 IT 系统具备反脆弱能力和快速定位问题能力。
IT 系统是工程师结合具体的业务场景基于一系列的基础组件进行编码搭建而成的,基础组件本身的局限性,以及代码的不确定性,会使整个系统存在很大的不确定性,这种不确定性会让系统在面临一系列“风险”场景(高峰场景)时,表现得很脆弱,那该如何让系统具备反脆弱能力呢?
通过生产环境全链路压测,真实模拟“风险”业务行为场景,实时监控系统表现,提前识别和快速定位系统的中的不确定因素,并对不确定因素进行处理,优化系统资源配比,使用最低硬件成本,使系统从容面对各种“风险”场景,达到预期的系统性能目标。通过这种方法,在生产环境上落地常态化稳定压测体系,实现 IT 系统的长期性能稳定治理。
性能测试经历了从线下到线上演变的四个阶段:
1. 需求驱动压测阶段
需求驱动压测,大多采用简单的工具进行单接口或者单系统压测,也能进行一些简单的性能问题分析,但很多时候都没有专门的测试团队,需要开发进行自主压测。
2.性能回归体系阶段
组建专门的性能测试团队搭建线下性能测试质量平台,具备复杂场景全链路压测能力、性能问题定位能力。
在这一阶段有三个问题是比较有代表性:
(1)很多公司线下做了性能测试,但到了线上还是存在很多问题,以测试环境的压测结果来评估线上环境,效果不佳。
(2) 业务增长、营销活动增加使测试工程师对活动保障心里没底,每逢营销活动问题频发影响公司形象。(3)性能压测效率无法满足增长的性能压测需求,导致部分项目没有性能压测直接上线,线上故障频发。
为了解决测试环境性能压测的不确定性,性能压测开始向生产环境进行演变,进入生产环境性能压测阶段。
3.生产只读业务压测阶段
在测试环境回归体系阶段上增加了生产只读业务的性能压测,对生产环境压测进行实践,搭建生产环境性能压测回归体系,具备只读业务生产压测的性能问题分析能力。
4.全业务全链路压测阶段
在上一个阶段的基础上增加写入业务的性能压测,进而开展对全业务实行全链路压测,具备全业务的性能压测能力、问题定位能力,做的更好一些还会增加系统防护能力,比如降级、限流、故障演练等。
为什么要开源?
正如数列科技 CEO 曹学锋在接受 InfoQ 专访时表示“我们开源 Takin 的初衷其实很简单,就是想让更多的企业用上好的产品,帮助企业提供更好的用户服务体验,释放更多的精力去拓展业务。相信大家的使用反馈对于产品本身的发展迭代也是具有正向作用的,互惠互利实现良性循环。”
目前大多数企业仍在使用传统的性能压测方式,但随着分布式、微服务架构的发展,这种方式已经无法满足系统性能的保障,数列科技决定把这款生产环境全链路压测产品开源出来并正式命名为 Takin。
当然 Takin 要做的不止于此,开源最大的特性在于开放包容与创新。希望产品开源能以开放的工作方式激发技术创新,吸引更多业界优秀的开发人员加入到生产环境全链路压测技术的共创团队中,让技术更落地,连接不同的使用场景。
什么是 Takin?
Takin 是基于 Java 语言开发的一套生产全链路压测的系统,可以在无业务代码侵入的情况下,嵌入到各个应用程序节点,实现生产环境的全链路性能测试,适用于复杂的微服务架构系统。
Takin 架构图
Takin 具备以下 4 个特点:
(1)业务代码 0 侵入:在接入、采集和实现逻辑控制时,不需要修改任何业务代码;
(2)数据安全隔离:可以在不污染生产环境业务数据情况下进行全链路性能测试,可以在生产环境对写类型接口进行直接的性能测试;
(3)安全性能压测:在生产环境进行性能压测,对业务不会造成影响;
(4)性能瓶颈快速定位:性能测试结果直接展现业务链路中性能瓶颈的节点。
Takin 界面
Takin 开源了哪些内容?
Takin 开源内容主要包括三个部分:Agent 探针、控制台以及大数据模块。在 Java 应用程序中植入探针(Agent),它能收集性能数据、控制测试流量的流向,将数据上报给大数据模块,大数据模块会进行一些实时计算分析并对数据进行存储,控制台则负责这些业务流程的管理和展现。三个部分各司其职,为业务提供无代码侵入的、常态化的生产环境全链路压测服务。
GitHub 开源地址如下:
Takin:https://github.com/shulieTech/Takin
开源社区:https://news.shulie.io/?p=3024(了解详细操作文档)
未来任重而道远,秉承着帮助企业解决微服务架构治理及性能问题的初心,Takin 可以较大程度地帮助企业降低生产全链路压测平台的开发难度,真正做到为更多企业系统的性能和稳定性提供保障。
数列衷心希望 Takin 能和业界携手,共建更完整、更标准化的生产全链路压测生态圈。
直播预告:
6 月 25 日晚上 7 点半,数列两位创始人震南和平威将在两场直播中为大家答疑解惑,感兴趣的小伙伴可以扫码进群,现在进群开播有提醒,还有 iphone12 等你来领哦!
性能利器 Takin 来了!首个生产环境全链路压测平台正式开源的更多相关文章
- 生产环境全链路压测平台 Takin
什么是Takin? Takin是基于Java的开源系统,可以在无业务代码侵入的情况下,嵌入到各个应用程序节点,实现生产环境的全链路性能测试,适用于复杂的微服务架构系统. Takin核心原理图 Taki ...
- 教你50招提升ASP.NET性能(十二):在生产环境,仔细考虑你需要记录哪些日志
(18)When in production, carefully consider what you need to log 招数18: 在生产环境,仔细考虑你需要记录哪些日志 Many peopl ...
- Nacos 发布 1.0.0 GA 版本,可大规模投入到生产环境
经过 3 个 RC 版本的社区体验之后,Nacos 正式发布 1.0.0 GA 版本,在架构.功能和 API 设计上进行了全方位的重构和升级. 1.0.0 版本的发布标志着 Nacos 已经可以大规模 ...
- 15分钟从零开始搭建支持10w+用户的生产环境(四)
上一篇文章,介绍了这个架构中,WebServer的选择,以及整个架构中扩展时的思路. 原文地址:15分钟从零开始搭建支持10w+用户的生产环境(三) 五.架构实践 前边用了三篇文章,详细介绍了这个 ...
- NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇
背景 NanoProfiler是一个EF Learning Labs出品的免费性能监控类库(即将开源).它的思想和使用方式类似于MiniProfiler的.但是,设计理念有较大差异. MiniProf ...
- NanoProfiler - 适合生产环境的性能监控类库 之 大数据篇
上期回顾 上一期:NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇 上次介绍了NanoProfiler的基本功能,提到,NanoProfiler实现了MiniProfiler欠 ...
- NanoProfiler - 适合生产环境的性能监控类库 之 实践ELK篇
上期回顾 上一期:NanoProfiler - 适合生产环境的性能监控类库 之 大数据篇 上次介绍了NanoProfiler的大数据分析理念,一晃已经时隔一年多了,真是罪过! 有朋友问到何时开源的问题 ...
- IBM Thread and Monitor Dump Analyzer for Java解决生产环境中的性能问题
这个工具的使用和 HeapAnalyzer 一样,非常容易,同样提供了详细的 readme 文档,这里也简单举例如下: #/usr/java50/bin/java -Xmx1000m -jar jca ...
- Jmeter压力测试笔记(6)性能调测-压力并发-模拟生产环境数据
问题原因找到了,那就好办了. 找到阿里云技术人员,让他们强行给我们上架了一个共享代理模式的Redis. 并重新进行压力测试. 哦豁~ 开心,压力测试顺利,异常率大大降低实际为: 数据库DBA反馈,数据 ...
随机推荐
- 我的第一个npm包:wechat-menu-editor 基于Vue的微信自定义菜单编辑器
wechat-menu-editor 微信自定义菜单编辑器 前言 在做微信公众号相关开发时,基本上会去开发的功能就是微信自定义菜单设置的功能,本着不重复造轮子的原则,于是基于Vue封装的一个微信自定义 ...
- git02
Git Gui的使用 Ssh key 介绍及使用 Ssh key介绍 我理解的就是每台电脑上会产生出一个ssh key,然后自己有一个远程账户,但是自己有可能有很多台电脑, 包括家里的电脑还有公司的电 ...
- 第09课:GDB 实用调试技巧(下)
本节课的核心内容: 多线程下禁止线程切换 条件断点 使用 GDB 调试多进程程序 多线程下禁止线程切换 假设现在有 5 个线程,除了主线程,工作线程都是下面这样的一个函数: void thread_p ...
- Identity用户管理入门七(扩展用户字段)
在实际使用时会发现很多字段在IdentityUser中并不存在,比如增加生日,地址等字段,可在模型类中实现自己的模型并继承自IdentityUser,需要修改的代码为以下类 一.新增模型 using ...
- 使用Redis Stream来做消息队列和在Asp.Net Core中的实现
写在前面 我一直以来使用redis的时候,很多低烈度需求(并发要求不是很高)需要用到消息队列的时候,在项目本身已经使用了Redis的情况下都想直接用Redis来做消息队列,而不想引入新的服务,kafk ...
- expression动态构成
http://blog.csdn.net/tastelife/article/details/7340205 http://blog.csdn.net/tastelife/article/detail ...
- WPF listbox中Checkbox横向排列
<ListBox Height="220" Margin="0" ItemsSource="{Binding RightCollection}& ...
- Maven专题1——坐标与依赖
1. 坐标 坐标用来唯一定位一个Maven构件: GAV(必需):groupId, artifactId, version packaging(可选): 可取值如:jar(缺省), war, pom, ...
- WPF 通过进程实现异常隔离的客户端
当 WPF 客户端需要实现插件系统的时候,一般可以基于容器或者进程来实现.如果需要对外部插件实现异常隔离,那么只能使用子进程来加载插件,这样插件如果抛出异常,也不会影响到主进程.WPF 元素无法跨进程 ...
- .Net core 的热插拔机制的深入探索,以及卸载问题求救指南.
.Net core 的热插拔机制的深入探索,以及卸载问题求救指南. 一.依赖文件*.deps.json的读取. 依赖文件内容如下.一般位于编译生成目录中 { "runtimeTarget&q ...