Takin is an Java-based, open-source system designed to measure online or test environmental performance test for full-links, Especially for microservices

Overview

Takin

LICENSE Language

English / 中文

What is Takin?

Takin is an Java-based, open-source system designed to measure online or test environmental performance test for full-links, Especially for microservices. Through ArchGuadian, middlewares and applications can identify real online traffic and test traffic, ensure that they enter the right databases.

Why should we do online environmental performance test

Microservices Architecture is used commonly nowadays and it always make system complex to understand for humans. Moreover, businesses are also very complex in huge system. Business complexity and system complexity make it difficult to :

  • Keep entire system highly available
  • Maintain Research & Development efficiency.

In order to keep system high available, we usually make performance test on test environment or online single-service. However, test environment is very different from online environment, single-service can't stand for the whole service-links. They can't guarantee system performance.

Microservices Are Complex
Compare with monolithic application, Microservices architecture increases complexity for business system. It may maintain multiple tools and frameworks.

Business Systems Are Complex
Businesses involve different sections and many of them are long-process and complicated, such as E-Commerce businesses.

The Microservices Relation Is Complex
In a microservices architecture system with a lot of business services, the calling relation between services is very complicated. Every change may affect the availability of the entire system and make developers difficult to release new versions Frequently.

Quick Start Instruction

docker:

  • VM memory requirement : 8G
  • Docker mirror size : 2.1 G

If docker configuration doesn't set AliYun docker source :

vim /etc/docker/daemon.json

Add following configuration:

{
  "registry-mirrors": ["https://q2gr04ke.mirror.aliyuncs.com"]
}

restart service

systemctl daemon-reload

Pull docker

# docker url : registry.cn-hangzhou.aliyuncs.com/shulie-takin/takin:v1.0.0
docker pull registry.cn-hangzhou.aliyuncs.com/shulie-takin/takin:v1.0.1
docker run -e APPIP=your ip address -p 80:80 -p 2181:2181 -p 29900-29999:29900-29999 registry.cn-hangzhou.aliyuncs.com/shulie-takin/takin:v1.0.1
  • Parameter:-d start in background,-p port.
    The Initiation of docker need about 10 mins because it need install necessary components. -d can ignore installment information of components in background. If you dont't want to open your server's port, you can use --net=host and make sure it and host server are in the same network。

  • Open http://APPIP/web

  • PS:If Nginx shows 502, the problem mostly is caused when the docker container has just been started, you only need to configure it correctly, and then wait a little (1-2 min) while to refresh and try again.

after installation:

Instruction

Takin Architecture


Takin consists of Agent, Web App and Surge Data.

Agent

Surge Data

Takin Web

Takin Engine

Community

Mailing List: Mail to [email protected]
Wechat group


QQ group: **118098566**
QR code:


Dingding group:


WeChat Official Account:


Ask Questions in Official Forum

Official Forum

Who use Takin

image

License

Takin is under the Apache 2.0 license. See the LICENSE file for details.

Comments
  • surge启动未找到jar包

    surge启动未找到jar包

    surge.out中提示缺少surge-deploy-1.0-jar-with-dependencies.jar image 回到容器data路径下查看发现:只有surge-deploy-pradar-storm-1.0.jar却没有surge-deploy-1.0-jar-with-dependencies.jar image

    当启动命令换成surge-deploy-pradar-storm-1.0.jar时,进行 ps -ef | grep surge,结果如下: image

    分别运行两个包 均有报错: image

    请问启动surge到底以哪个jar为准?还是缺少了surge-deploy-1.0-jar-with-dependencies.jar这个包吗?

    opened by wu-zhishuai 5
  • 运行docker命令有报错

    运行docker命令有报错

    按照说明执行一下docker命令有报错: docker run -d -p 80:80 -p 2181:2181 -p 3306:3306 -p 6379:6379 -p 8086:8086 -p 9000:9000 -p 10032:10032 -p 6628:6628 -p 8000:8000 -p 6627:6627 -p 8888:8888 -p 29900-29999:29900-29999 registry.cn-hangzhou.aliyuncs.com/forcecop/forcecop:v1.0.0

    报错部分log: Archive: /data/apps.zip

    replace apps/tro-web/trodb_web_base.sql? [y]es, [n]o, [A]ll, [N]one, [r]ename: NULL

    (EOF or read error, treating as "[N]one" ...)

    apps_install.sh: line 4: /usr/local/nginx/conf/nginx.conf: No such file or directory

    pid not found

    apps_install.sh: line 80: nginx: command not found

    /usr/bin/tail: inotify cannot be used, reverting to polling: Function not implemented

    opened by tmaerd 5
  • docker安装部分内容补充建议

    docker安装部分内容补充建议

    目前 docker 安装部分,进入容器 只有一段注释,没有配套的命令,可能部分对 docker 不熟悉的同学会误以为第一条命令就是进入容器。 image

    建议: 1、docker run 命令里加上 --name takin 参数,指定容器名称 2、下方的文档,加上进入容器命令(如 docker exec -it takin sh

    opened by chenhengjie123 4
  • 探针部署在K8S+docker环境中,demo服务能获取到请求,正常业务服务的接口请求后在takin平台上查询远程调用和业务活动一直不显示请求

    探针部署在K8S+docker环境中,demo服务能获取到请求,正常业务服务的接口请求后在takin平台上查询远程调用和业务活动一直不显示请求

    已排查以下问题: 1.t_amdb_pradar_link_entrance表中有数据(jdk-http和httpserver的请求有,tomcat的请求没有); 2.surge-deploy任务是正常启动; 3.t_trace_all表中是有最新流量数据(jdk-http和httpserver的请求有,tomcat的请求没有);

    opened by Ro-W 2
  • easydemo-usercenter.jar运行异常

    easydemo-usercenter.jar运行异常

    :: Spring Boot :: (v2.4.5)

    2022-05-19 10:15:48.415 INFO 10786 --- [ main] c.e.u.DemoUsercenterApplication : Starting DemoUsercenterApplication v1.0-SNAPSHOT using Java 1.8.0_261 on devopsapp with PID 10786 (/root/easydemo/app/user/easydemo-usercenter.jar started by root in /root/easydemo/app/user) 2022-05-19 10:15:48.440 INFO 10786 --- [ main] c.e.u.DemoUsercenterApplication : No active profile set, falling back to default profiles: default 2022-05-19 10:15:54.944 INFO 10786 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 28882 (http) 2022-05-19 10:15:54.963 INFO 10786 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2022-05-19 10:15:54.963 INFO 10786 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.45] 2022-05-19 10:15:55.075 INFO 10786 --- [ main] o.a.c.c.C.[.[localhost].[/user-center] : Initializing Spring embedded WebApplicationContext 2022-05-19 10:15:55.076 INFO 10786 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 6210 ms 2022-05-19 10:15:56.587 INFO 10786 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2022-05-19 10:15:57.272 INFO 10786 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 28882 (http) with context path '/user-center' @ "usercenter.log" 340L, 32169C at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386) at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401) Caused by: java.lang.IllegalStateException: TTL logger implementation type is already set! type = 0 at com.alibaba.ttl.threadpool.agent.internal.logging.Logger.setLoggerImplType(Logger.java:22) at com.alibaba.ttl.threadpool.agent.TtlAgent.premain(TtlAgent.java:128) ... 6 more FATAL ERROR in native method: processing of -javaagent failed nohup: ignoring input Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386) at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401) Caused by: java.lang.IllegalStateException: TTL logger implementation type is already set! type = 0 at com.alibaba.ttl.threadpool.agent.internal.logging.Logger.setLoggerImplType(Logger.java:22) at com.alibaba.ttl.threadpool.agent.TtlAgent.premain(TtlAgent.java:128) ... 6 more

    opened by tree1024z 2
  • 安装docker一键部署非80端口出现跨域问题

    安装docker一键部署非80端口出现跨域问题

    image

    使用如下命令 我使用的不是80端口 而是其他自定义的端口 但是部署成功后的web api请求出现跨域问题 docker run -e APPIP=your IP Address -p 80:80 -p 2181:2181 -p 29900-29999:29900-29999 registry.cn-hangzhou.aliyuncs.com/shulie-takin/takin:v1.0.1

    opened by yisirman 2
  • 系统很多地方都会报null point 错误  系统现在没有登录了  但是很多地方还在使用 WebPluginUtils.getUser(); 获取出来是null

    系统很多地方都会报null point 错误 系统现在没有登录了 但是很多地方还在使用 WebPluginUtils.getUser(); 获取出来是null

    如标题 很多地方还是有 WebPluginUtils.getUser(); 相关代码。 但是获取出来是 null,导致会报错。 比如删除挡板提示删除失败,但是刷新页面发现挡板已经删除了。查看日志发现报 null point。

    image

    image

    java.lang.NullPointerException: null
    	at io.shulie.takin.web.biz.service.linkManage.impl.LinkGuardServiceImpl.deleteById(LinkGuardServiceImpl.java:140)
    	at io.shulie.takin.web.entrypoint.controller.linkmanage.LinkGuardController.deleteGuard(LinkGuardController.java:166)
    	at io.shulie.takin.web.entrypoint.controller.linkmanage.LinkGuardController$$FastClassBySpringCGLIB$$bb0b0d89.invoke(<generated>)
    

    不仅仅是挡板这里,还有很多地方使用了 WebPluginUtils.getUser();

    bug 
    opened by Fyuxuan 2
  • 获取不到服务

    获取不到服务

    此方法试了,未解决

    操作步骤(大致) 1、按照如下命令运行docker docker run -e APPIP=10.60.133.56 -p 80:80 -p 2181:2181 -p 29900-29999:29900-29999 -p 3306:3306 -p 6379:6379 registry.cn-hangzhou.aliyuncs.com/shulie-takin/takin:v1.0.1

    2、添加demo及探针,然后发起流量请求,数据入库了,但是amdb库未查询到数据

    3、看了下发现zookeep地址非宿主机ip,感觉应该是这个原因导致的,如果是,该如何解决? @xuehuilu @vinzhangya

    Xnip2021-11-23_18-40-30

    opened by qianmaoliugou 2
  • Dependency org.apache.zookeeper:zookeeper, leading to CVE problem

    Dependency org.apache.zookeeper:zookeeper, leading to CVE problem

    Hi, In Takin/takin-data/surge-data/common,there is a dependency org.apache.zookeeper:zookeeper:3.4.9 that calls the risk method.

    CVE-2019-0201

    The scope of this CVE affected version is [11.0, 24.1.1-android),(24.1.1-android, 24.1.1-jre)

    After further analysis, in this project, the main Api called is <org.apache.zookeeper.server.FinalRequestProcessor: void processRequest(org.apache.zookeeper.server.Request)>

    Risk method repair link : GitHub

    CVE Bug Invocation Path--

    Path Length : 4

    <org.apache.zookeeper.server.FinalRequestProcessor: void processRequest(org.apache.zookeeper.server.Request)>
    at <org.apache.zookeeper.server.quorum.CommitProcessor: void run()> (org.apache.zookeeper.server.quorum.CommitProcessor.java:[77]) in /.m2/repository/org/apache/zookeeper/zookeeper/3.4.9/zookeeper-3.4.9.jar
    at <io.shulie.surge.data.common.zk.impl.CuratorZkPathChildrenCache: void setNewData(java.util.List)> (io.shulie.surge.data.common.zk.impl.CuratorZkPathChildrenCache.java:[185, 187]) in /detect/unzip/Takin-1.0.1/takin-data/surge-data/common/target/classes
    at <io.shulie.surge.data.common.zk.impl.CuratorZkPathChildrenCache: void access$1000(io.shulie.surge.data.common.zk.impl.CuratorZkPathChildrenCache,java.util.List)> (io.shulie.surge.data.common.zk.impl.CuratorZkPathChildrenCache.java:[49]) in /detect/unzip/Takin-1.0.1/takin-data/surge-data/common/target/classes
    
    

    Dependency tree--

    [INFO] io.shulie.surge.data:common:jar:1.0
    [INFO] +- ch.qos.logback:logback-classic:jar:1.2.3:compile
    [INFO] |  +- ch.qos.logback:logback-core:jar:1.2.3:compile
    [INFO] |  \- org.slf4j:slf4j-api:jar:1.7.25:compile
    [INFO] +- com.github.stephenc.high-scale-lib:high-scale-lib:jar:1.1.4:compile
    [INFO] +- com.github.sgroschupf:zkclient:jar:0.1:compile
    [INFO] +- commons-collections:commons-collections:jar:3.2.2:compile
    [INFO] +- org.apache.zookeeper:zookeeper:jar:3.4.9:compile
    [INFO] |  +- log4j:log4j:jar:1.2.16:compile
    [INFO] |  +- jline:jline:jar:0.9.94:compile
    [INFO] |  \- io.netty:netty:jar:3.10.5.Final:compile
    [INFO] +- commons-codec:commons-codec:jar:1.6:compile
    [INFO] +- com.alibaba:fastjson:jar:1.2.72:compile
    [INFO] +- com.netflix.curator:curator-framework:jar:1.3.3:compile
    [INFO] |  \- com.netflix.curator:curator-client:jar:1.3.3:compile
    [INFO] +- com.netflix.curator:curator-recipes:jar:1.3.3:compile
    [INFO] +- org.apache.commons:commons-lang3:jar:3.11:compile
    [INFO] +- commons-io:commons-io:jar:1.3.2:compile
    [INFO] \- com.google.guava:guava:jar:15.0:compile
    

    Suggested solutions:

    Update dependency version

    Thank you very much.

    opened by CVEDetect 2
  • 代码重复,没有必要重复赋值

    代码重复,没有必要重复赋值

    、、、 private void notifyTaskResult(ScheduleRunRequest request) { SceneTaskNotifyParam notify = new SceneTaskNotifyParam(); notify.setSceneId(request.getRequest().getSceneId()); notify.setTaskId(request.getRequest().getTaskId()); notify.setCustomerId(request.getRequest().getCustomerId()); notify.setCustomerId(request.getRequest().getCustomerId()); notify.setStatus("started"); sceneTaskService.taskResultNotify(notify); } 、、、

    opened by lishun888 2
  • import to idea error

    import to idea error

    <dependency>
                <groupId>io.shulie.amdb</groupId>
                <artifactId>amdb-common</artifactId>
                <version>1.0-SNAPSHOT</version>
    </dependency>
    

    is missing

    opened by huashen 2
  • module-shadow-preparation plugin缺少agent-management-client依赖

    module-shadow-preparation plugin缺少agent-management-client依赖

    module-shadow-preparation plugin缺少agent-management-client依赖, <dependency> <groupId>io.shulie</groupId> <artifactId>agent-management-client</artifactId> <version>2.0.0-SNAPSHOT</version> </dependency>

    opened by liuzhengtxx 0
  • 新增业务活动服务链表为空

    新增业务活动服务链表为空

    描述:平台提供的demo在接入探针后,项目列表正常 image 但是在新增业务活动,没有服务新增入口 image

    一下是排查流程,仍没有定位到问题: 1、t_amdb_pradar_link_entranc无数据 2、检查surge-deploy正常 3、检查surge-deploy对外也正常 4、zk正常通过以下命令查看surge任务运行日志 vi /data/surge.out 无任何错误日志 5、探针是最新版本

    opened by lztt191225 1
Releases(v1.0.1)
Owner
ShulieTech
ShulieTech
Apache Dubbo is a high-performance, java based, open source RPC framework.

Apache Dubbo Project Apache Dubbo is a high-performance, Java-based open-source RPC framework. Please visit official site for quick start and document

The Apache Software Foundation 38.3k Jan 9, 2023
Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.

Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.

AOL 936 Dec 19, 2022
Sample application demonstrating an order fulfillment system decomposed into multiple independant components (e.g. microservices). Showing concrete implementation alternatives using e.g. Java, Spring Boot, Apache Kafka, Camunda, Zeebe, ...

Sample application demonstrating an order fulfillment system decomposed into multiple independant components (e.g. microservices). Showing concrete implementation alternatives using e.g. Java, Spring Boot, Apache Kafka, Camunda, Zeebe, ...

Bernd Ruecker 1.2k Dec 14, 2022
Source Code for 'Pro Java Microservices with Quarkus and Kubernetes' by Nebrass Lamouchi

Apress Source Code This repository accompanies Pro Java Microservices with Quarkus and Kubernetes by Nebrass Lamouchi (Apress, 2021). Download the fil

Apress 24 Oct 31, 2022
Lightweight framework for building java microservices

Ja-micro Ja-micro is a lightweight Java framework for building microservices. Introduction Ja-micro is a framework that allows developers to easily de

Sixt 621 Aug 21, 2022
WSO2 Microservices Framework for Java (MSF4J)

Build status: WSO2 Microservices Framework for Java (MSF4J) WSO2 Microservices Framework for Java (MSF4J) is a lightweight high performance framework

WSO2 359 Dec 27, 2022
A powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件)

Sentinel: The Sentinel of Your Microservices Introduction As distributed systems become increasingly popular, the reliability between services is beco

Alibaba 20.4k Dec 31, 2022
ColocationSim: Simulate Colocation Datacenter in a Fine Granularity with Microservices and Interference Modeling

ColocationSim Introduction 将在线作业和离线作业混合部署在同一集群(简称混部,Colocation)提升数据中心资源利用率的主流方法,如何在保证在线作业性能的前提下最大化集群的资源利用率成为混部相关研究中最主要问题。混部作业调度算法从集群层面解决这一问题,是学术界、企业界的

null 93 Jan 4, 2023
KBE Spring Boot Microservices

SFG Beer Works - Brewery Microservices This project has a services of microservices for deployment via Docker Compose and Kubernetes. You can access t

John Thompson 29 Nov 2, 2022
High Performance Inter-Thread Messaging Library

LMAX Disruptor A High Performance Inter-Thread Messaging Library Maintainer LMAX Development Team Support Open a ticket in GitHub issue tracker Google

LMAX Group 15.5k Dec 31, 2022
Opinionated libraries for HTTP&JSON-based RPC using Retrofit, Feign, OkHttp as clients and Jetty/Jersey as servers

Conjure Java Runtime (formerly http-remoting) This repository provides an opinionated set of libraries for defining and creating RESTish/RPC servers a

Palantir Technologies 76 Dec 13, 2022
Annotation/Reflection Based Bukkit Command API. Containing many features such as help-service, command providers, tab completion, and many more!

CommandAPI Annotation/Reflection Based Command API that just does what you want it to do without any problems. Importing Maven <repository> <id>

damt 1 Jun 13, 2022
[JAVA] Projeto exemplo de uma arquitetura modular em Java

Arquitetura modular O objetivo do bom design de software, como já diria Robert C. Martin, em seu livro 'Clean Architecture: A Craftsman's Guide to Sof

HelpDEV 97 Dec 29, 2022
Java client for Consul HTTP API

consul-api Java client for Consul HTTP API (http://consul.io) Supports all API endpoints (http://www.consul.io/docs/agent/http.html), all consistency

Ecwid 402 Jan 6, 2023
Define Java service providers by annotating them directly

Annotated Service Provider Define JVM service providers by annotating the provider class directly. This annotation processor will add to the class-pat

Emily 5 Oct 31, 2021
Apache JMeter - An Open Source Java application designed to measure performance and load test applications

An Open Source Java application designed to measure performance and load test applications. By The Apache Software Foundation What Is It? Apache JMete

The Apache Software Foundation 6.7k Jan 1, 2023
Hcode Online Judge(HOJ):An open source online judge system base on SpringBoot, Springcloud Alibaba and Vue.js !

Hcode Online Judge(HOJ) 前言 基于前后端分离,分布式架构的在线测评平台(hoj),前端使用vue,后端主要使用springboot,redis,mysql,nacos等技术。 在线Demo:https://hdoi.cn 在线文档:https://www.hcode.top/

Himit_ZH 179 Dec 31, 2022
The open source CyborgFlow project is an out-of-the-box (OOTB) solution to perform load test on your online system.

CyborgFlow CyborgFlow provides an out-of-the-box (OOTB) solution to perform load test on your online system, powered by Apache APISIX, Apache SkyWalki

SphereEx 70 Nov 30, 2022