第一周总结
Java 学习第一周总结
一、引言
本周聚焦于 Java 相关技术的深入学习,重点探索了 Kubernetes 资源管理特性以及 Spring Cloud 生态系统中的关键组件,包括限流熔断、API 网关、服务调用、配置管理等。通过理论学习与实践操作相结合的方式,对微服务架构和容器化部署有了更系统的认识。以下是本周学习的详细总结。
二、学习内容:Kubernetes 资源管理
(一)学习目标
- 了解 Kubernetes 的资源管理特性(HPA、Resource Quotas、Namespace)。
- 掌握如何使用 Horizontal Pod Autoscaler(HPA)自动扩展 Pod。
- 学习如何使用 Resource Quotas 管理资源配额。
(二)学习内容 - Horizontal Pod Autoscaler(HPA)
- 简介:HPA 是 Kubernetes 的自动扩展功能,可根据 CPU 使用率或其他自定义指标自动调整 Pod 副本数量,支持水平扩展,适用于负载变化较大的应用。
- 创建 HPA:通过 YAML 文件定义 HPA 配置,指定目标部署、最小 / 最大副本数及监控指标(如 CPU 利用率),并使用kubectl apply命令部署。
- Resource Quotas
- 简介:用于限制命名空间中的资源使用量,如 CPU、内存、Pod 数量等,避免资源滥用,确保集群稳定运行。
- 创建 Resource Quotas:在 YAML 文件中定义命名空间的资源硬限制,包括 Pod 数量、CPU 和内存的请求与限制值,部署到指定 Namespace。
- Namespace
- 简介:将集群资源划分为多个虚拟子集群,便于资源隔离和管理,支持多租户环境及开发、测试、生产环境的隔离。
- 创建 Namespace:通过 YAML 文件定义 Namespace 名称,使用命令部署后,可在该空间内进行资源管理。
- CI/CD 集成
- 介绍了 GitLab CI 和 GitHub Actions 两种自动化工具,通过配置相应的 YAML 文件,实现代码的自动化构建、测试和部署到 Kubernetes 集群。
- 实际练习
完成自动扩展的 Spring Boot 应用部署,包括创建 Namespace、部署应用、配置 HPA 并进行负载测试验证。
(三)学习心得
HPA 能根据负载动态调整 Pod 数量,保障应用高可用性;Resource Quotas 实现了细粒度的资源管理;Namespace 则有效隔离了资源,便于多环境管理。CI/CD 集成提升了开发效率,实践操作加深了对各组件的理解。
三学习内容:Spring Cloud 限流与熔断
(一)学习目标 - 了解 Spring Cloud 的限流和熔断机制。
- 掌握如何使用 Spring Cloud Circuit Breaker 实现熔断功能。
- 学习如何使用 Resilience4j 实现限流和容错。
- 构建具有限流和熔断功能的微服务。
(二)学习内容 - 限流(Rate Limiting)
- 概念:限制客户端对服务的访问频率,防止服务过载,常见算法有漏桶和令牌桶算法。
- Resilience4j 限流:添加依赖后,在配置文件中设置限流规则(如每秒最大请求数),通过@RateLimiter注解应用于服务方法。
- 熔断(Circuit Breaker)
- 概念:当服务调用失败率达到阈值时,熔断器断开,避免资源浪费,直接返回失败结果。
- Spring Cloud Circuit Breaker:结合 Resilience4j,添加依赖并配置熔断规则(如失败率阈值、断开时长),使用@CircuitBreaker注解及 fallback 方法处理熔断情况。
- 实际练习
创建 Spring Boot 项目,配置限流和熔断规则,通过模拟高并发请求和服务故障,验证功能有效性。
(三)学习心得
限流可防止服务过载,Resilience4j 提供灵活配置;熔断机制实现快速失败,减少资源浪费。实践中深刻体会到两者在微服务架构中保障服务可用性的重要性。
四、学习内容:Spring Cloud Gateway 高级特性
(一)学习目标 - 了解 Spring Cloud Gateway 的高级特性。
- 掌握路由断言(Predicates)和过滤器(Filters)的使用方法。
- 学习自定义路由规则和过滤器。
- 实现带有高级路由和过滤功能的 API 网关。
(二)学习内容 - Spring Cloud Gateway 基础
- API 网关作用:作为微服务统一入口,负责请求路由、负载均衡、认证授权等,简化客户端通信,隐藏后端复杂性。
- Gateway 简介:基于 Spring WebFlux 构建,支持动态路由、熔断、限流等功能。
- 路由断言(Predicates)
- 概念:基于请求属性(路径、方法、头信息等)决定是否路由请求。
- 内置断言:使用 Path、Method、Query 等断言配置路由规则,如匹配特定路径和请求方法。
- 过滤器(Filters)
- 概念:在请求和响应过程中执行额外逻辑,修改请求 / 响应内容或头信息。
- 内置过滤器:使用 AddRequestHeader、AddResponseHeader 等过滤器添加自定义头信息。
- 自定义断言和过滤器
- 通过实现 GatewayPredicate 接口自定义断言逻辑,根据请求参数等条件判断是否路由。
- 实现 GatewayFilter 接口自定义过滤器,修改请求头或执行其他预处理逻辑。
- 实际练习
创建 Gateway 项目,配置路由规则和过滤器,验证请求路由和头信息修改是否生效。
(三)学习心得
路由断言和过滤器是 Gateway 的核心功能,提供了灵活的路由控制和请求处理能力。自定义功能满足复杂业务需求,实践中对 API 网关在微服务架构中的枢纽作用有了更清晰的认识。
五、学习内容:Spring Cloud OpenFeign 与 Stream
(一)学习目标 - 了解 OpenFeign 的基本概念和使用方法,实现声明式服务调用。
- 了解 Spring Cloud Stream 的基本概念和消息驱动架构,实现消息通信。
- 构建使用 OpenFeign 和 Stream 的微服务架构。
(二)学习内容 - Spring Cloud OpenFeign
- 简介:基于 Java 注解的声明式服务调用框架,简化微服务通信,自动生成代理实现,支持负载均衡和熔断。
- 使用方法:添加依赖,启用 Feign 客户端注解,定义 Feign 接口并通过注解映射服务端点,在服务中注入使用。
- Spring Cloud Stream
- 简介:构建消息驱动微服务的框架,支持 RabbitMQ、Kafka 等消息中间件,简化消息发送和接收。
- 使用方法:添加依赖,配置消息通道(输入 / 输出目的地和组),通过 Source 接口发送消息,使用@StreamListener接收消息。
- 实际练习
创建多个微服务项目,集成 OpenFeign 实现服务间调用,集成 Stream 实现消息通信,测试功能有效性。
(三)学习心得
OpenFeign 通过声明式接口大幅简化服务调用,支持负载均衡和熔断;Stream 简化了消息驱动开发,支持多种中间件。两者结合使微服务架构的通信更加便捷高效,实践中加深了对微服务间通信方式的理解。
六、学习内容:Spring Cloud Config 与 Bus
(一)学习目标 - 了解 Spring Cloud Config 的基本概念和使用方法,实现集中化配置管理。
- 学习 Spring Cloud Bus 的作用和使用方法,实现配置动态更新传播。
(二)学习内容 - Spring Cloud Config
- 简介:集中化管理配置的工具,支持将配置存储在 Git 仓库或本地,微服务动态获取配置,支持版本管理和历史记录。
- 搭建配置中心:添加依赖,启用配置中心注解,配置 Git 仓库地址,客户端通过配置中心 URI 获取配置。
- Spring Cloud Bus
- 简介:用于在微服务间传播配置更新,支持消息中间件,配置中心更新后自动通知客户端刷新配置。
- 集成方法:添加依赖,配置消息中间件(如 RabbitMQ),在客户端启用刷新作用域,通过端点触发配置刷新。
- 实际练习
启动配置中心和 RabbitMQ,部署微服务客户端,修改 Git 配置后触发刷新,验证客户端配置是否更新。
(三)学习心得
Config 实现了配置的集中管理和动态更新,避免了分布式系统中配置管理的混乱;Bus 确保配置更新及时传播到所有客户端,无需重启服务。两者结合提升了系统的可维护性和灵活性,实践中体会到动态配置在微服务架构中的重要性。
七、本周学习总结与反思
(一)学习成果 - 掌握了 Kubernetes 的 HPA、Resource Quotas 和 Namespace 等资源管理特性,能够实现 Pod 自动扩展和资源配额管理。
- 深入理解了 Spring Cloud 的限流熔断机制,使用 Resilience4j 和 Circuit Breaker 实现了服务的容错保护。
- 熟悉了 Spring Cloud Gateway 的路由断言和过滤器机制,能够自定义路由规则和请求处理逻辑。
- 掌握了 OpenFeign 声明式服务调用和 Spring Cloud Stream 消息驱动开发,实现了微服务间的通信。
- 了解了 Spring Cloud Config 和 Bus 的配置管理与动态更新机制,实现了配置的集中管理和实时传播。
(二)学习方法与体会
本周采用 “理论学习 - 代码实践 - 问题总结” 的学习模式,通过阅读文档、编写代码和实际测试,加深了对各技术点的理解。实践中发现,微服务架构各组件之间紧密关联,需从整体角度理解其设计思想。同时,遇到问题时通过查阅官方文档和社区资源,提升了自主解决问题的能力。
(三)存在的问题与改进方向 - 对部分技术的底层原理理解不够深入,如 Kubernetes 的 HPA 实现机制、Resilience4j 的限流算法细节等,需进一步学习源码和相关资料。
- 实践过程中,在环境配置和组件集成方面遇到一些问题,如配置中心与客户端的连接、消息中间件的配置等,未来需加强对部署和运维环节的学习。
- 对于复杂场景下的架构设计经验不足,如高并发、高可用场景下的组件配置优化,需要通过更多项目实践积累经验。
(四)下周学习计划 - 深入学习 Spring Cloud Alibaba 相关组件,如 Nacos 服务注册与发现、Sentinel 限流熔断等。
- 学习容器化部署的进阶知识,如 Kubernetes 的服务发现、网络策略等。
- 进行微服务架构的综合项目实践,整合本周所学知识,构建完整的微服务应用系统。
- 阅读相关技术书籍和论文,拓宽技术视野,加深对微服务架构设计原则的理解。
浙公网安备 33010602011771号