性能利器 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反馈,数据 ...
随机推荐
- K8S的核心概念
1.Pod -- 是最小部署单元 -- 是一组容器的集合 -- Pod中的容器共享网络 -- 生命周期是短暂的 2.controller -- 确保预期的pod副本的数量 -- 确保所有的node运行 ...
- MySQL数据库初体验
一.数据库的基本概念1.数据(Data) 描述事物的符号记录 包括数字,文字,图形,图像,声音,档案记录等 以"记录"形式按统一的格式进行存储 2.表 将不同的记录组织在一起 用来 ...
- jsp连接mysql数据库 ——查询
<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%& ...
- SpringCloudAlibaba - 整合 Nacos 实现服务注册与发现
目录 前言 环境 Nacos是什么? 服务发现原理 搭建 Nacos Server Nacos Server 下载地址 Nacos Server 的版本选择 运行 Nacos Server Nacos ...
- 【PHP数据结构】栈的相关逻辑操作
对于逻辑结构来说,我们也是从最简单的开始.堆栈.队列,这两个词对于大部分人都不会陌生,但是,堆和栈其实是两个东西.在面试的时候千万不要被面试官绕晕了.堆是一种树结构,或者说是完全二叉树的结构.而今天, ...
- google插件网页播放mp4代码
<script src="http://html5media.googlecode.com/svn/trunk/src/html5media.min.js"></ ...
- Leetcode 矩阵置零
题目描述(中等难度) 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 .请使用 原地 算法. 进阶: 一个直观的解决方案是使用 O(mn) 的额外空间,但这 ...
- django 使用装饰器验证用户登陆
使用装饰器验证用户登陆,需要使用@method_decorator 首先需引用,method_decorator,并定义一个闭包 from django.utils.decorators import ...
- Linux服务器时间同步配置
Linux服务器时间同步配置 以CentOS7 做时间服务器,其他服务器(Centos 6.RHEL7)同步该服务器时间 RHEL 7.CentOS 7 默认的网络时间协议 为Chrony 本教程 ...
- 鸿蒙内核源码分析(用栈方式篇) | 程序运行场地谁提供的 | 百篇博客分析OpenHarmony源码 | v20.04
百篇博客系列篇.本篇为: v20.xx 鸿蒙内核源码分析(用栈方式篇) | 程序运行场地谁提供的 | 51.c.h .o 精读内核源码就绕不过汇编语言,鸿蒙内核有6个汇编文件,读不懂它们就真的很难理解 ...