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 来了!首个生产环境全链路压测平台正式开源的更多相关文章

  1. 生产环境全链路压测平台 Takin

    什么是Takin? Takin是基于Java的开源系统,可以在无业务代码侵入的情况下,嵌入到各个应用程序节点,实现生产环境的全链路性能测试,适用于复杂的微服务架构系统. Takin核心原理图 Taki ...

  2. 教你50招提升ASP.NET性能(十二):在生产环境,仔细考虑你需要记录哪些日志

    (18)When in production, carefully consider what you need to log 招数18: 在生产环境,仔细考虑你需要记录哪些日志 Many peopl ...

  3. Nacos 发布 1.0.0 GA 版本,可大规模投入到生产环境

    经过 3 个 RC 版本的社区体验之后,Nacos 正式发布 1.0.0 GA 版本,在架构.功能和 API 设计上进行了全方位的重构和升级. 1.0.0 版本的发布标志着 Nacos 已经可以大规模 ...

  4. 15分钟从零开始搭建支持10w+用户的生产环境(四)

    上一篇文章,介绍了这个架构中,WebServer的选择,以及整个架构中扩展时的思路. 原文地址:15分钟从零开始搭建支持10w+用户的生产环境(三)   五.架构实践 前边用了三篇文章,详细介绍了这个 ...

  5. NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇

    背景 NanoProfiler是一个EF Learning Labs出品的免费性能监控类库(即将开源).它的思想和使用方式类似于MiniProfiler的.但是,设计理念有较大差异. MiniProf ...

  6. NanoProfiler - 适合生产环境的性能监控类库 之 大数据篇

    上期回顾 上一期:NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇 上次介绍了NanoProfiler的基本功能,提到,NanoProfiler实现了MiniProfiler欠 ...

  7. NanoProfiler - 适合生产环境的性能监控类库 之 实践ELK篇

    上期回顾 上一期:NanoProfiler - 适合生产环境的性能监控类库 之 大数据篇 上次介绍了NanoProfiler的大数据分析理念,一晃已经时隔一年多了,真是罪过! 有朋友问到何时开源的问题 ...

  8. IBM Thread and Monitor Dump Analyzer for Java解决生产环境中的性能问题

    这个工具的使用和 HeapAnalyzer 一样,非常容易,同样提供了详细的 readme 文档,这里也简单举例如下: #/usr/java50/bin/java -Xmx1000m -jar jca ...

  9. Jmeter压力测试笔记(6)性能调测-压力并发-模拟生产环境数据

    问题原因找到了,那就好办了. 找到阿里云技术人员,让他们强行给我们上架了一个共享代理模式的Redis. 并重新进行压力测试. 哦豁~ 开心,压力测试顺利,异常率大大降低实际为: 数据库DBA反馈,数据 ...

随机推荐

  1. MySQL——SQL语句入门

    1.DDL: 数据库定义语言 定义对象:库.表 何为定义: 库的定义: 创建 删除 修改---->修改本身以及库中的对象(表.视图.函数.触发器...) 表的定义: 创建---->定义表的 ...

  2. Robot Framework(8)- Collections 测试库常用的关键字列表

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 所有关键字 ...

  3. Java 常用 Collection 继承关系与接口实现

    Java Collection List 接口 继承.接口实现关系: public interface List<E> extends Collection<E> 方法定义: ...

  4. 【第十七篇】- Maven Web 应用之Spring Cloud直播商城 b2b2c电子商务技术总结

    Maven Web 应用 本章节我们将学习如何使用版本控制系统 Maven 来管理一个基于 web 的项目,如何创建.构建.部署已经运行一个 web 应用. 创建 Web 应用 我们可以使用 mave ...

  5. ORACLE 12C Identity Column(身份列) 实现自增长字段

    Oracle 12c提供的Identity Column特性简化了自增字段的定义. 声明自增字段通常有3种常见的用法,以下三种方式都支持INSERT语句中省略自增字段的插入,但有些许差别. 1. GE ...

  6. 记录一次C语言中free(p)失败

    首先介绍一下自己的程序出错的原因,然后总结一下什么时候free会失败. 1.程序伪代码 // 已知payload已经指向一部分内存数据 char * payload; int payload_len; ...

  7. 论文解读(PCL)《Prototypical Contrastive Learning of Unsupervised Representations》

    论文标题:Prototypical Contrastive Learning of Unsupervised Representations 论文方向:图像领域,提出原型对比学习,效果远超MoCo和S ...

  8. 修改 CubeMX 生成的 RT-Thread makefile 工程

    修改 CubeMX 生成的 RT-Thread makefile 工程 使用 RT-Thread 官方 基于 CubeMX 移植 RT-Thread Nano 生成的 Makefile 工程在编译时有 ...

  9. gin 源码阅读(1) - gin 与 net/http 的关系

    gin 是目前 Go 里面使用最广泛的框架之一了,弄清楚 gin 框架的原理,有助于我们更好的使用 gin. 这个系列 gin 源码阅读会逐步讲明白 gin 的原理. gin 概览 想弄清楚 gin, ...

  10. Appium Capability使用进阶