第32周Java微服务入门 微服务基础

Spring Cloud基础课程笔记

一、微服务学习安排

1.1 微服务的基本概念及设计理念

  • 微服务定义: 一种将应用程序分解为小型、独立服务的架构风格,每个服务运行在自己的进程中,通常通过HTTP RESTful API进行通信。
  • 与Spring Cloud的关系: Spring Cloud为微服务架构提供了一套工具和框架,简化了微服务的开发和管理。
  • 设计理念 :
    • 独立部署: 每个服务可以独立部署和扩展。
    • 松耦合: 服务之间通过明确定义的API进行通信,减少依赖。
    • 按业务功能拆分: 根据业务领域进行服务拆分,如用户服务、订单服务等。
    • 领域驱动设计: 以业务领域为核心,指导服务的划分和设计。

1.2 微服务中的常见组件和功能

  • 服务注册中心: 如Eureka,用于服务的注册与发现。
  • 配置中心: 如Spring Cloud Config,集中管理应用配置。
  • 网关: 如Spring Cloud Gateway,负责请求路由、身份验证和流量控制。
  • 组件功能 :
    • 服务注册与发现: 动态注册和发现服务实例。
    • 配置管理: 集中管理配置信息,支持动态刷新。
    • 请求路由: 统一入口,路由请求到对应服务。

1.3 实战项目介绍

  • 项目名称: Spring Cloud课程查询项目。
  • 系统架构 :
    • 微服务架构: 采用微服务架构,拆分为课程列表、课程价格等多个服务。
    • 服务交互: 通过Feign进行服务间调用,通过Eureka进行服务发现。
  • 接口设计 :
    • 课程列表接口: 提供课程信息查询。
    • 课程价格接口: 提供课程价格查询。

1.4 服务整合、注册与发现

  • 服务整合: 将课程列表和课程价格模块整合为独立的微服务。
  • 服务注册与发现: 使用Eureka作为服务注册中心,服务启动时注册到Eureka,其他服务通过Eureka发现并调用。
  • 服务间调用: 使用Feign简化HTTP调用,自动处理服务发现和负载均衡。

1.5 网关集成

  • 网关作用: 统一入口,处理跨服务的公共逻辑。
  • 网关集成步骤 :
    1. 添加Spring Cloud Gateway依赖。
    2. 配置路由规则,将请求路由到对应服务。
  • 网关好处: 提高安全性,简化客户端调用,集中处理跨服务逻辑。

1.6 服务的熔断与降级

  • 熔断与降级概念: 在服务不可用时,快速失败并返回默认响应,避免级联故障。
  • 实现方式: 使用Hystrix等框架实现熔断器模式。
  • 意义: 提高系统可靠性,保证核心功能可用。

二、知识小结

知识点 核心内容 考试重点/易混淆点 难度系数
微服务基本概念 微服务的定义、设计理念、拆分原则 微服务与单体服务的区别 🌟
Spring Cloud介绍 Spring Cloud与微服务的关系,Spring Cloud在微服务架构中的作用 Spring Cloud与微服务是否等同 🌟🌟
微服务组件与功能 微服务架构中的关键组件及其作用,如服务注册中心、配置中心、网关等 各组件间的协作关系 🌟🌟
Spring Cloud课程查询项目 项目系统架构、设计理念、接口介绍 模块间的独立性与交互性 🌟🌟🌟
服务注册与发现 服务整合的关键步骤,服务注册与发现的实现机制 服务注册与发现的实现机制 🌟🌟🌟
服务间调用(Feign) 使用Feign完成服务间调用,服务间调用的注意点 服务间调用的注意点 🌟🌟🌟
网关集成 网关在项目中的作用与好处,网关的配置与集成方法 网关的配置与集成方法 🌟🌟🌟
服务的熔断与降级 提升服务可靠性和稳定性的手段,熔断与降级的策略与实施 熔断与降级的策略与实施 🌟🌟🌟🌟
依赖服务不可用应对策略 当依赖的服务不可用时的应对手段 - 🌟🌟🌟

微服务基础章节课程笔记

一、微服务基础章节介绍

1.1 什么是微服务

  • 定义: 微服务是一种将应用程序拆分为小型、独立服务的架构风格,每个服务独立运行,可独立开发、部署和扩展。
  • 对比: 与单体应用相比,微服务更加灵活,能够更快地响应市场变化。

1.2 微服务的特点

  • 独立性: 每个微服务独立开发、部署和运维。
  • 松耦合: 服务间通过轻量级通信机制(如RESTful API)通信,降低耦合度。
  • 围绕业务能力组织: 按业务能力划分,专注于特定业务领域。
  • 自动化部署: 支持自动化部署和运维,提高效率。

1.3 微服务的优点和缺点

  • 优点 :
    • 灵活性: 快速响应市场变化,独立部署和扩展。
    • 技术栈多样性: 不同服务可采用不同技术栈。
    • 故障隔离: 单个服务故障不影响整个系统。
  • 缺点 :
    • 复杂性增加: 系统复杂性增加,需要更复杂的运维和管理。
    • 服务间通信开销: 网络通信增加延迟和开销。
    • 数据一致性挑战: 分布式系统中数据一致性需要额外机制保证。

1.4 微服务的门派

  • Spring Cloud派: 基于Spring框架,提供微服务开发组件和工具。
  • Dubbo派: 阿里巴巴开源框架,专注于高性能和可扩展性。
  • 对比与选型: 根据项目需求、团队经验和偏好选择。

1.5 微服务的拆分

  • 拆分时机: 单体应用过于庞大、复杂时考虑拆分。
  • 拆分原则 :
    • 业务独立性: 每个服务专注于独立业务领域。
    • 数据独立性: 避免数据共享,保证数据独立和一致。
  • 拆分方法 :
    • 领域驱动设计: 识别业务领域和边界。
    • 逐步拆分: 从边缘业务开始,逐步过渡到核心业务。
  • 拆分限制: 考虑团队规模、技术能力和业务需求,避免过度拆分。

1.6 微服务的扩展

  • 扩展方式 :
    • 水平扩展: 增加服务实例数量。
    • 垂直扩展: 提升单个实例性能。
  • 扩展角度 :
    • 服务层面: 提高服务并发处理能力和吞吐量。
    • 数据层面: 保证数据读写性能和一致性。
    • 按需扩展: 动态调整实例数量和性能。

1.7 微服务的重要模块

  • 服务注册与发现: 动态注册和发现服务,便于通信和负载均衡。
  • 配置管理: 集中管理配置信息,支持动态更新和回滚。
  • 服务熔断与降级: 故障时自动熔断并降级处理,保证系统稳定。
  • 负载均衡: 分发服务请求,保证负载均衡。
  • 监控与日志: 实时监控和日志记录,便于问题定位和解决。

二、知识小结

知识点 核心内容 考试重点/易混淆点 难度系数
微服务介绍 微服务的定义、拆分概念,与单体应用的区别 微服务与单体应用的区别,服务化的概念 🌟
微服务特点 微服务流行的原因及其优点 微服务优点的具体表现,与单体应用对比的优势 🌟🌟
微服务优缺点 微服务的优点和缺点,如何避免缺点,技术选型时的考虑 微服务的缺点及应对策略 🌟🌟🌟
微服务门派 Spring Cloud派和Dubbo派,两派技术的对比,选型建议 Spring Cloud与Dubbo的适用场景 🌟🌟🌟
微服务拆分 拆分的时机、条件、方法,何时拆分、何时不拆分,具体拆分策略 拆分的时机和策略,避免过度拆分 🌟🌟🌟🌟
微服务扩展 从单体到集群的扩展,扩展角度,数据层面的改动,按需扩展 扩展的技术实现,数据一致性问题 🌟🌟🌟🌟
微服务重要模块 开发中常用的模块及其作用,必须掌握的模块,模块使用的场景和好处 服务注册与发现、配置管理、熔断降级等模块的应用 🌟🌟🌟

微服务基础课程笔记

一、微服务基础章节介绍

1.1 什么是微服务

  • 定义: 微服务是一种软件架构风格,专注于单一职责和功能的小型功能区块,通过模块化组合构建复杂应用程序。
  • 诞生背景: 为解决单体应用的痛点而诞生。

1.2 单体应用的痛点

  1. 项目庞大且复杂 :
    • 代码量和数据表众多,理解难度大。
    • 新成员难以快速上手,依赖团队内部知识传递。
  2. 尾大不掉 :
    • 项目过大导致调整困难,维护成本高。
    • 架构问题积重难返,重构难度大。
  3. 代码风格和组件不统一 :
    • 多人维护导致代码风格多样,可读性降低。
    • 组件使用混乱,造成项目管理困难。
  4. 技术难以升级 :
    • 单体应用技术升级风险高,成本大。
    • 升级可能导致系统不稳定,上线后报错。

1.3 什么是服务化

  • 拆分: 将大项目拆分为小而美的服务,专注于垂直领域业务功能。
  • 独立性: 每个服务独立开发、部署,明确分工和责任。
  • 通信: 服务间通过接口定义交互,避免强耦合。

1.4 微服务的特点

  1. 技术栈自由: 服务间可采用不同技术栈,通过接口通信。
  2. 按需弹性扩容: 根据服务流量需求灵活调整实例数量。
  3. 高复用率: 服务能力复用率高,减少重复开发。
  4. 部署和回滚成本低: 单服务部署问题可快速回滚,不影响整体系统。
  5. 康威定律: 组织结构与系统架构保持一致,特定模块由固定团队负责。

1.5 微服务的优缺点

  • 优点 :
    • 技术选型灵活,支持新技术应用。
    • 单服务故障不影响整体系统。
    • 提高代码和资源利用率。
  • 缺点 :
    • 运维成本高: 服务多,部署和维护复杂。
    • 接口不匹配风险: 服务间接口变更可能导致调用错误。
    • 代码重复: API和对象定义可能重复。
    • 架构复杂度提升: 管理难度加大,了解全系统困难。

1.6 微服务的两大门派

  • Spring Cloud :
    • 特点: 多个子项目组成,包含断路器、服务发现与注册、配置中心等。
    • 通信方式: 主要使用HTTP/RESTful API。
    • 生态和社区: 生态强大,社区活跃度高。
  • Dubbo :
    • 特点: 高性能、轻量级,提供六大核心能力(RPC调用、智能容错、负载均衡等)。
    • 通信方式: 基于RPC通信,效率高。
    • 生态和社区: 曾停止维护,现由Apache维护,生态不如Spring Cloud。

1.7 选型建议

  • 评估点 :
    • 内部是否存在异构系统集成问题。
    • 备选框架功能特性是否满足需求。
    • HTTP通信协议是否成为瓶颈。
    • 社区活跃度和框架维护情况。
    • 团队技术储备和熟悉程度。
  • 选型经验 :
    • 考拉团队案例: 选择Dubbo因其功能完备和国内广泛使用。
    • 中小企业建议: Spring Cloud提供更完备的微服务解决方案,适合大多数场景。

二、知识小结

知识点 核心内容 考试重点/易混淆点 难度系数
微服务两大门派 Spring Cloud和Dubbo的特点及区别 两大门派的核心特点和适用场景 🌟🌟🌟
Spring Cloud特点 多个子项目组成,包含断路器、服务发现与注册、配置中心等 与Dubbo的能力对比 🌟🌟🌟
Dubbo特点 高性能、轻量级,提供六大核心能力(RPC调用、智能容错等) 官网定义和核心能力 🌟🌟
对比维度:能力范围 Spring Cloud能力更广泛,Dubbo是其子集 选型时需求与框架能力的匹配 🌟🌟🌟
对比维度:通信协议 Spring Cloud使用HTTP/RESTful API,Dubbo使用RPC HTTP的灵活性与RPC的效率对比 🌟🌟
对比维度:生态与社区 Spring Cloud生态强大,社区活跃;Dubbo曾停止维护,现已重启 选型时框架的维护与更新考虑 🌟🌟🌟
选型建议 考虑团队技术熟悉程度、业务需求、社区活跃度等因素 考拉团队选型经验分享 🌟🌟
选型考量点 内部异构系统集成、备选框架功能特性、HTTP通信协议限制、社区活跃度等 选型时需综合考虑的多个因素 🌟🌟🌟

微服务基础课程笔记

一、微服务基础

1.1 微服务的概念

  • 定义: 微服务是一种以专注于单一职责和功能模块为基础的架构风格,通过组合构建复杂项目。
  • 特点 :
    • 将复杂应用分解为多个小而独立的服务。
    • 每个服务独立开发、部署和扩展。
    • 服务间通过轻量级通信机制(如HTTP/RESTful API)通信。
  • 挑战 :
    • 分布式通信引入延迟和故障风险。
    • 需设计有效的服务治理和监控机制。
    • 服务配置和部署复杂性增加。
  • 关键技术 :
    • 容器化技术: 如Docker,用于服务封装和部署。
    • 服务发现和注册: 如Eureka,用于服务动态管理。
    • 配置中心: 如Spring Cloud Config,用于服务配置管理。
  • 实践 :
    • 采用敏捷开发方法,快速迭代和部署。
    • 使用DevOps工具链,实现自动化部署和监控。
    • 持续优化服务性能和关注用户反馈。

1.2 微服务的特点

  • 技术栈自由: 服务可采用不同技术栈,通过接口通信。
  • 按需弹性扩容: 根据流量需求灵活调整服务实例数量。
  • 高复用率: 服务间能力复用,减少重复开发。
  • 部署和回滚成本低: 单服务部署问题可快速回滚,不影响整体系统。
  • 康威定律: 组织结构与系统架构保持一致,明确团队职责。

1.3 微服务的优缺点

  • 优点 :
    • 技术选型灵活,支持新技术应用。
    • 单服务故障不影响整体系统。
    • 提高代码和资源利用率。
  • 缺点 :
    • 运维成本高,服务多,部署和维护复杂。
    • 服务间通信引入延迟和故障风险。
    • 架构复杂度提升,管理难度加大。

1.4 微服务的门派

  • Spring Cloud :
    • 特点: 提供全面的微服务解决方案,包含断路器、服务发现与注册、配置中心等。
    • 适用场景: 适合大多数微服务场景,功能丰富。
  • Dubbo :
    • 特点: 高性能、轻量级,专注于RPC调用、智能容错和负载均衡。
    • 适用场景: 适合对性能要求高的场景,但功能相对单一。
  • 选型建议: 根据团队熟悉程度和项目需求选择合适框架。

1.5 微服务的拆分

  • 拆分信号 :
    • 事故频发且多由耦合引起。
    • 服务启动和部署速度缓慢。
    • 流量增加导致资源利用率低。
  • 不适合拆分的情况 :
    • 为拆分而拆分,缺乏实际需求。
    • 系统要求低变动和低维护成本。
    • 团队规模小,协作顺畅。
  • 拆分方法 :
    • 领域拆分: 按业务领域拆分,如商品、用户服务等。
    • 热点拆分: 将高流量模块单独拆分,如秒杀系统。
    • 逐步拆分: 从小模块开始,逐步迭代,积累经验。
    • 统筹安排: 制定详细规划,确保拆分过程顺利。

1.6 微服务的扩展

  • 扩展方式 :
    • 单体集群: 水平复制形成集群,适用于简单复制场景。
    • 微服务: 垂直领域解耦,提高可扩展性和可维护性。
    • 数据拆分: 分库分表,提高存储能力。
    • 按需扩展: 根据核心指标或特定时间进行扩展,提高资源利用率。

1.7 微服务的重要模块

  • 服务注册与发现: 动态管理服务,避免硬编码。
  • 配置管理: 集中管理配置信息,支持动态更新。
  • API网关: 统一入口,简化访问流程,提供安全保障。
  • 服务熔断与降级: 故障时启用兜底策略,保证系统稳定。
  • 服务监控与日志: 实时监控和日志记录,便于问题定位。
  • 服务调用与负载均衡: 均匀分配请求,避免单点压力。
  • 自动化部署与运维: 提高开发效率,降低运维成本。

二、知识小结

知识点 核心内容 考试重点/易混淆点 难度系数
微服务定义 微服务的定义、特点、挑战、关键技术及实践 微服务的定义与特点 🌟
微服务特点 技术栈自由、按需扩容、能力复用率高、部署和回滚成本低、康威定律 微服务的独立性和通信机制 🌟🌟
微服务优缺点 微服务的优点和缺点,运维成本和架构复杂度 微服务的缺点及应对策略 🌟🌟🌟
微服务门派 Spring Cloud和Dubbo的特点及适用场景,选型建议 Spring Cloud与Dubbo的定位差异 🌟🌟
微服务拆分 拆分信号、不适合拆分的情况、拆分方法(领域拆分、热点拆分等) 拆分的时机和策略,避免过度拆分 🌟🌟🌟
微服务扩展 单体集群、微服务、数据拆分、按需扩展的特点和适用场景 扩展方式的选择依据,资源利用率 🌟🌟
微服务重要模块 服务注册与发现、配置管理、API网关、熔断降级等模块的作用和使用场景 必须掌握的模块及其应用场景 🌟🌟🌟

三、总结

  • 微服务基础: 掌握微服务的定义、特点、挑战、关键技术及实践。
  • 微服务架构: 理解微服务的优点和缺点,合理选择技术栈。
  • 拆分与扩展: 根据业务需求选择合适的拆分时机和扩展方式。
  • 重要模块: 熟悉服务注册与发现、配置管理、API网关等模块的作用和使用场景。
相关推荐
满怀10152 分钟前
Python入门(5):异常处理
开发语言·python
是小李呀~5 分钟前
【工作梳理】怎么把f12里面的东西导入到postman
java
攀小黑6 分钟前
Java 多线程加锁 synchronized 关键字 字符串当做key
java·开发语言
每次的天空15 分钟前
Kotlin 作用域函数:apply、let、run、with、also
android·开发语言·kotlin
小林熬夜学编程19 分钟前
【高并发内存池】第八弹---脱离new的定长内存池与多线程malloc测试
c语言·开发语言·数据结构·c++·算法·哈希算法
余华余华19 分钟前
2024年蓝桥杯Java B组省赛真题超详解析-分布式队列
java·职场和发展·蓝桥杯
破罐子不摔22 分钟前
【C#使用S7.NET库读取和写入西门子PLC变量】
java·c#·.net
独好紫罗兰30 分钟前
洛谷题单3-P1980 [NOIP 2013 普及组] 计数问题-python-流程图重构
开发语言·python·算法
可爱的霸王龙33 分钟前
JVM——模型分析、回收机制
java·jvm
神秘的t34 分钟前
javaSE————网络原理
java·网络