1. Trampoline 概览

过去,要理解系统运行时的状态,最简单的方式就是在终端手动运行。好一点的情况,我们会用脚本自动化所有操作。

当然,DevOps 运动彻底改变了这一切,幸运的是,我们的行业早已超越了这种原始方式。**Trampoline** 就是 Java 生态中解决此类问题的方案之一(支持 Unix 和 Windows)。

该工具基于 Spring Boot 构建,旨在通过清爽的用户界面帮助 Spring Cloud 开发者提升日常开发效率

核心功能包括:

  • 使用 Gradle 或 Maven 启动实例
  • 管理 Spring Boot 实例
  • 启动时配置 VM 参数
  • 监控已部署实例:内存使用、日志和链路追踪
  • 向作者反馈问题

本文将探讨 Trampoline 试图解决的问题,并通过实践演示其功能。我们将完成注册新服务并启动该服务实例的完整流程。

TrampolineUI 2

2. 微服务:单体部署已成历史

如前所述,应用通过单一部署单元部署的时代已经结束。

这带来了积极影响,但也伴随着负面问题。虽然 Spring Boot 和 Spring Cloud 帮助我们完成了转型,但仍需处理一些副作用。

从单体到微服务的演进,彻底改变了开发者构建应用的方式

众所周知,打开一个包含 30 个类、包结构清晰且单元测试完善的项目,与面对一个庞大复杂的代码库完全是两回事。

不仅如此,可重用性、解耦和关注点分离也从中受益。尽管这些优势众所周知,我们仍列举几点:

  • 单一职责原则——对可维护性和测试至关重要
  • 弹性——单个服务故障不影响其他服务
  • 高可扩展性——高负载服务可部署多个实例

但采用微服务架构时,我们必须面对一些权衡,尤其是网络开销和部署问题。

然而,聚焦部署层面,我们失去了单体架构的一大优势——单一部署。在生产环境中,我们有整套 CD 工具来解决此问题,让部署更轻松。

3. Trampoline:设置第一个服务

本节将演示如何在 Trampoline 中注册服务并展示所有可用功能。

3.1. 下载最新版本

访问 Trampoline 仓库的 releases 页面,下载最新发布版本。

然后启动 Trampoline,例如使用 mvn spring-boot:run./gradlew(Windows 下为 gradle.batbootRun

最后,通过 http://localhost:8080 访问 UI 界面。

3.2. 注册服务

Trampoline 运行后,进入 Settings 部分注册第一个服务。在 Trampoline 源码中可找到两个示例微服务:microservice-example-gradlemicroservice-example-maven

注册服务需要以下信息:服务名称默认端口构建文件路径构建工具Actuator 前缀默认 VM 参数

若使用 Maven 作为构建工具,需先配置 Maven 路径。若使用 Gradle wrapper,则必须将其放置在 microservices 文件夹中,无需其他配置。

本示例将同时配置两种构建工具:

trampolinev3 3

随时可通过点击 info 按钮查看服务信息,或点击 trash 按钮删除服务。

要使用所有功能,只需在 Spring Boot 项目中引入 actuator starter(见下方代码片段),并通过日志配置启用 /logfile 接口:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

3.3. 管理服务实例

现在进入 Instances 部分。这里可以启动/停止服务实例,并监控其状态、链路追踪、日志和内存消耗。

本教程中,我们启动每个已注册服务的一个实例:

trampoline instances

3.4. 仪表盘

最后快速浏览 Dashboard 部分。这里可查看统计信息,如计算机内存使用情况、已注册或已启动的服务数量。

还可检查设置中是否已配置必要的 Maven 信息:

trampoline dashboard

3.5. 反馈

最后但同样重要的是,提供 Feedback 按钮,点击可跳转到 GitHub 仓库,用于创建问题、提问或提出改进建议。

trampoline feedback

4. 总结

本教程探讨了 Trampoline 试图解决的问题。

我们概述了其核心功能,并演示了如何注册服务及监控服务实例。

最后请注意,这是一个开源项目,欢迎贡献代码。


原始标题:Trampoline - Managing Spring Boot Locally