1. Trampoline 概览
过去,要理解系统运行时的状态,最简单的方式就是在终端手动运行。好一点的情况,我们会用脚本自动化所有操作。
当然,DevOps 运动彻底改变了这一切,幸运的是,我们的行业早已超越了这种原始方式。**Trampoline** 就是 Java 生态中解决此类问题的方案之一(支持 Unix 和 Windows)。
该工具基于 Spring Boot 构建,旨在通过清爽的用户界面帮助 Spring Cloud 开发者提升日常开发效率。
核心功能包括:
- 使用 Gradle 或 Maven 启动实例
- 管理 Spring Boot 实例
- 启动时配置 VM 参数
- 监控已部署实例:内存使用、日志和链路追踪
- 向作者反馈问题
本文将探讨 Trampoline 试图解决的问题,并通过实践演示其功能。我们将完成注册新服务并启动该服务实例的完整流程。
2. 微服务:单体部署已成历史
如前所述,应用通过单一部署单元部署的时代已经结束。
这带来了积极影响,但也伴随着负面问题。虽然 Spring Boot 和 Spring Cloud 帮助我们完成了转型,但仍需处理一些副作用。
从单体到微服务的演进,彻底改变了开发者构建应用的方式。
众所周知,打开一个包含 30 个类、包结构清晰且单元测试完善的项目,与面对一个庞大复杂的代码库完全是两回事。
不仅如此,可重用性、解耦和关注点分离也从中受益。尽管这些优势众所周知,我们仍列举几点:
- 单一职责原则——对可维护性和测试至关重要
- 弹性——单个服务故障不影响其他服务
- 高可扩展性——高负载服务可部署多个实例
但采用微服务架构时,我们必须面对一些权衡,尤其是网络开销和部署问题。
然而,聚焦部署层面,我们失去了单体架构的一大优势——单一部署。在生产环境中,我们有整套 CD 工具来解决此问题,让部署更轻松。
3. Trampoline:设置第一个服务
本节将演示如何在 Trampoline 中注册服务并展示所有可用功能。
3.1. 下载最新版本
访问 Trampoline 仓库的 releases 页面,下载最新发布版本。
然后启动 Trampoline,例如使用 mvn spring-boot:run
或 ./gradlew
(Windows 下为 gradle.bat
)bootRun
。
最后,通过 http://localhost:8080 访问 UI 界面。
3.2. 注册服务
Trampoline 运行后,进入 Settings 部分注册第一个服务。在 Trampoline 源码中可找到两个示例微服务:microservice-example-gradle 和 microservice-example-maven。
注册服务需要以下信息:服务名称、默认端口、构建文件路径、构建工具、Actuator 前缀 和 默认 VM 参数。
若使用 Maven 作为构建工具,需先配置 Maven 路径。若使用 Gradle wrapper,则必须将其放置在 microservices 文件夹中,无需其他配置。
本示例将同时配置两种构建工具:
随时可通过点击 info 按钮查看服务信息,或点击 trash 按钮删除服务。
要使用所有功能,只需在 Spring Boot 项目中引入 actuator starter(见下方代码片段),并通过日志配置启用 /logfile 接口:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
3.3. 管理服务实例
现在进入 Instances 部分。这里可以启动/停止服务实例,并监控其状态、链路追踪、日志和内存消耗。
本教程中,我们启动每个已注册服务的一个实例:
3.4. 仪表盘
最后快速浏览 Dashboard 部分。这里可查看统计信息,如计算机内存使用情况、已注册或已启动的服务数量。
还可检查设置中是否已配置必要的 Maven 信息:
3.5. 反馈
最后但同样重要的是,提供 Feedback 按钮,点击可跳转到 GitHub 仓库,用于创建问题、提问或提出改进建议。
4. 总结
本教程探讨了 Trampoline 试图解决的问题。
我们概述了其核心功能,并演示了如何注册服务及监控服务实例。
最后请注意,这是一个开源项目,欢迎贡献代码。