当前位置: 首页 > 工具软件 > Mage+ > 使用案例 >

什么是 Mage

澹台华晖
2023-12-01

1. 什么是 Mage

Mage 是基于 golang 开发的, 类似 make/rake 的工具, 我们可以使用 golang 代码编写类似 make 的功能。

1.1. 什么是 gradle

Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建开源工具。它使用一种基于 Groovy 的特定领域语言 (DSL) 来声明项目设置, 也增加了基于 Kotlin 语言的 kotlin-based DSL, 抛弃了基于 XML 的各种繁琐配置。
面向 Java 应用为主。当前其支持的语言 C++、Java、Groovy、Kotlin、Scala 和 Swift, 计划未来将支持更多的语言。

1.2. 什么是 Gitea

Gitea - Git with a cup of tea
A painless self-hosted Git service.
Gitea is a community managed lightweight code hosting solution written in Go. It is published under the MIT license.

1.3. 什么是 JRuby

JRuby, 一个采用纯 Java 实现的 Ruby 解释器, 由 JRuby 团队开发。它是一个自由软件, 在 CPL/GPL/LGPL 三种许可协议下发布。

1.4. 什么是 packetbeat

packetbeat 是 elastic 公司开发的网络抓包、嗅探以及分析工具。
和 tcpdump 一样, 它的底层依赖 libpcap。但它比 tcpdump、tcpcopy 功能强大的多。
它能够直接解析以下的网络协议

ICMP (v4 and v6)
DHCP (v4)
DNS
HTTP
AMQP 0.9.1
Cassandra
Mysql
PostgreSQL
Redis
Thrift-RPC
MongoDB
Memcache
TLS
将网络包转换成 JSON 字符串, 然后导出到以下 output

File
Console
Elasticsearch
Logstash
Kafka
Redis
简单描述过程

event -> filter1 -> filter2 … -> output

让我非常吃惊的是它能够捕获 MySQL、Redis 等的二进制通讯协议, 能够从捕获的记录中, 清晰的看到每一条 SQL 查询语句, 以及每一条 Redis 命令

  1. 我们能拿它做什么?
    据笔者的了解。
    以前做线上的流量复制和重放, 大致有这么几种方法
    (1) 使用 tcpcopy
    (2) 在服务中引起流量复制模块
    (3) 服务打印特殊格式的日志
    供后期解析, 并做重放

(1)是二进制数据流, 人无法阅读, (2)、(3)对服务有入侵, 不够友好。
JSON 格式的数据, 对程序优化, 对人来说阅读的障碍也不大。个人认为是个不错的选择

有了这些捕获的数据, 我们可以用来做

线上排障
服务功能测试 / 压力测试
对请求 (HTTP 请求, MySQL、Redis 请求等) 进行统计分析, 为服务优化提供必要的数据支持。

 类似资料: