
PiggyMetrics完全入门指南15分钟快速了解这个Spring Cloud微服务教程项目的全部价值【免费下载链接】piggymetricsMicroservice Architecture with Spring Boot, Spring Cloud and Docker项目地址: https://gitcode.com/gh_mirrors/pi/piggymetricsPiggyMetrics 是一个基于 Spring Boot、Spring Cloud 和 Docker 构建的轻量级财务记账应用被公认为学习 Spring Cloud 微服务架构的最佳教程项目。它把账户、统计、通知三大业务拆成独立微服务并完整演示了服务注册发现、API 网关、OAuth2 认证、配置中心、熔断器、监控大屏等全套微服务基础设施——读完本文你就能在 15 分钟内看懂这个项目的全部价值。15分钟看懂PiggyMetrics是什么PiggyMetrics 本身是一个小猪记账财务应用记录收入、支出和储蓄计算现金流统计还能发送邮件提醒。它的业务很简单但架构却五脏俱全3 个业务微服务account-service账户、statistics-service统计、notification-service通知每个服务独享自己的 MongoDB彼此只能通过 REST API 通信4 个基础设施服务config配置中心、registryEureka 注册中心、gatewayZuul 网关、auth-serviceOAuth2 认证2 个可观测性组件monitoringHystrix 监控大屏和 turbine-stream-serviceTurbine 指标流整个项目共 9 个 Maven 模块统一由根 pom.xml 管理基于 Spring Boot 2.0.3 Spring Cloud Finchley Java 8 构建。下面这张图就是 PiggyMetrics 运行后的前端概览页展示了收入、支出、储蓄和现金流趋势 这个前端页面本身就托管在网关服务里是理解 Zuul 网关静态资源 反向代理双重职责的最佳入口。三大业务微服务微服务拆分的经典示范PiggyMetrics 按业务领域Domain拆分服务这是微服务架构最核心的原则服务职责独立数据库Account Service收支项目、储蓄、账户设置的录入与校验MongoDBStatistics Service核心财务指标计算、时间序列数据追踪MongoDBNotification Service联系人管理、邮件提醒定时任务驱动MongoDB拆分带来一个关键好处每个微服务只能访问自己的数据库无法绕过 API 直接读写别人的持久化数据。这种API 即边界的设计正是真实生产环境微服务的标准做法。服务之间的调用全部通过Feign 声明式 HTTP 客户端完成例如账户服务保存数据后会调用统计服务更新指标FeignClient(name statistics-service, fallback StatisticsServiceClientFallback.class) public interface StatisticsServiceClient { ... }只需一个接口 FeignClient注解就同时获得了负载均衡、熔断降级能力——相关源码可以看 StatisticsServiceClient.java 和 StatisticsServiceClientFallback.javafallback属性展示了熔断器降级配置的写法。Spring Cloud 基础设施注册、网关、认证、配置四大件如果说业务服务是业务大脑那基础设施就是神经系统。PiggyMetrics 用四个服务演示了分布式系统的标配组件Eureka 服务注册发现registry注册中心是服务发现的核心。每个微服务启动时自动注册到 Eureka Server并持续发送心跳实例挂掉后会被自动摘除。客户端无需硬编码地址直接按服务名调用即可。入口只有一个注解 RegistryApplication.javaEnableEurekaServer public class RegistryApplication { ... }启动后访问http://localhost:8761就能看到所有在线服务的控制面板。Zuul API 网关gateway网关是所有外部请求的唯一入口负责路由转发和认证把关。路由规则集中写在配置中心的 gateway.yml 中zuul: routes: account-service: path: /accounts/** serviceId: account-service stripPrefix: false statistics-service: path: /statistics/** serviceId: statistics-service stripPrefix: false以/accounts开头的请求全部转发给账户服务/statistics转给统计服务——没有任何硬编码 IP 地址网关通过 Eureka 自动发现实例位置。OAuth2 认证服务auth-service认证职责被独立成一个专门的 Auth Server签发 OAuth2 Token 供后端各资源服务校验。项目使用了两种授权模式Password 模式浏览器 UI 用户登录Client Credentials 模式服务间机器通信各业务服务只需在 Controller 上标注PreAuthorize(#oauth2.hasScope(server))就能阻止来自浏览器的越权访问。安全配置可参考 WebSecurityConfig.java 和 OAuth2AuthorizationConfig.java。Spring Cloud Config 配置中心config所有服务的配置都集中存放在 config/src/main/resources/shared 目录下的 YAML 文件中。更妙的是通过RefreshScope注解修改配置后无需重新构建和重启发一次 refresh 请求即可热更新——这是配置中心的杀手级能力。监控与熔断微服务的体检仪分布式系统最怕级联故障。PiggyMetrics 用 Hystrix 熔断器 Turbine 指标流 Hystrix Dashboard 组成完整的可观测链路每个带 Hystrix 的微服务把指标推送到 Turbine经 RabbitMQ 中转Turbine 汇聚后通过流接口turbine.stream输出MonitoringApplication.java 中的EnableHystrixDashboard提供可视化大屏启动后访问http://localhost:9000/hystrix填入流地址http://turbine-stream-service:8080/turbine/turbine.stream就能看到请求成功率、线程池状态和熔断器开关的实时变化。统计服务还故意模拟了请求延迟让你能亲眼观察熔断器从关闭到半开再到断开的全过程——这是书本上很难学到的实战经验。此外项目还集成了Spring Cloud Sleuth 分布式链路追踪每条日志都带上traceId和spanId跨服务的请求链路一目了然。Docker Compose 一键启动最快配置方法得益于 Docker这套 8 个服务 4 个 MongoDB RabbitMQ 的完整系统可以一条命令拉起注意至少需要4GB 内存。前置准备安装 Docker 和 Docker Compose构建项目mvn package -DskipTests生产模式直接拉取 Docker Hub 镜像docker-compose up开发模式本地构建镜像 暴露全部端口方便 IDE 调试docker-compose -f docker-compose.yml -f docker-compose.dev.yml up其中 docker-compose.dev.yml 继承主配置并额外开放容器端口。完整的服务依赖关系、端口映射都定义在 docker-compose.yml 中各服务的容器镜像则由各自目录下的 Dockerfile 构建。启动后的关键访问入口地址用途http://localhost:80网关前端 UI 入口http://localhost:8761Eureka 服务注册面板http://localhost:9000/hystrixHystrix 监控大屏http://localhost:15672RabbitMQ 管理台guest/guest打开网关地址输入邮箱即可创建账户或访问 demo 账户体验记账功能前端页面正是上面那张概览图。项目价值总结为什么值得学习✅架构完整注册发现、网关、认证、配置中心、熔断、监控、链路追踪一个项目覆盖微服务全景图✅代码极简每个服务的核心逻辑通常只有一个主类 几个 Controller/Service学习成本极低✅开箱即用Docker Compose 一键部署MongoDB 还预置了 demo 数据account-service-dump.js✅适合动手README 明确鼓励你 fork 后魔改是练手的绝佳沙盒建议学习路径先docker-compose up跑通全流程 → 打开 Eureka 面板认识服务发现 → 阅读 gateway.yml 理解路由 → 用 Hystrix 大屏观察熔断行为 → 最后深入各业务服务的 Feign 客户端源码。15 分钟后你将对 Spring Cloud 微服务架构建立起完整的直觉。【免费下载链接】piggymetricsMicroservice Architecture with Spring Boot, Spring Cloud and Docker项目地址: https://gitcode.com/gh_mirrors/pi/piggymetrics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考