Spring Cloud - Eureka 学习笔记 - 1

 2024-10-09    0 条评论    85 浏览 Spring Cloud Eureka

微服务架构概念与Spring Cloud指南

1. 微服务概念

1.1 什么是微服务?

微服务架构是由 Martin Fowler(马丁・福勒)与 James Lewis(詹姆斯・刘易斯)在 2014 年提出的架构思想。

参考链接:Martin Fowler的微服务架构

微服务架构的核心特点:

  • 将大型应用程序拆分为一系列小型服务
  • 每个服务独立运行在自己的进程中
  • 服务间通过轻量级通信机制(如RESTful API)交互
  • 围绕特定业务能力构建
  • 支持独立部署和扩展
  • 允许使用不同的开发语言和技术栈

微服务架构示意图

1.2 微服务的核心特征

1.2.1 业务划分原则

  1. 按业务类型细分

    • 用户项目
    • 订单项目
    • 商品项目
  2. 责任归属明确

    • 开发方负责维护
    • 部署方负责运维
    • 明确的职责划分
  3. 单一职责原则

    • 严格的业务边界
    • 避免职责重叠
    • 清晰的服务定位

1.2.2 技术特征

  1. 轻量级通信

    • 基于API的服务间通信
    • 高效的数据交换机制
  2. 技术多样性

    • 支持多种编程语言
    • 灵活的数据存储选择
    • 适应不同团队技术栈
  3. 部署与扩展

    • 独立部署能力
    • 按需扩展服务
    • 自动化运维管理

1.3 架构对比

架构对比:单体式vs微服务 左:单体式架构 右:微服务架构

2. 远程过程调用(RPC)

2.1 核心角色

  1. 提供者(Provider)

    • 提供接口和功能
    • 作为服务资源的提供方
    • 确保服务可用性
  2. 消费者(Consumer)

    • 调用提供者接口
    • 获取所需服务
    • 实现业务逻辑

RPC调用示意图

2.2 通信模式对比

RPC vs RESTful

特性RPCRESTful
协议基础TCP/IPHTTP
通信方式远程过程调用资源操作
数据格式多样化XML/JSON
使用场景内部服务通信外部API接口

2.3 架构模式

  1. 集群

    • 多节点部署
    • 性能线性扩展
    • 高可用保障
  2. 分布式

    • 业务功能拆分
    • 独立运行容器
    • 服务间协作

3. Spring Cloud 框架

3.1 框架概述

Spring Cloud 是基于 Spring Boot 的微服务框架,提供:

  • 配置管理
  • 服务注册与发现
  • 断路器
  • 智能路由
  • 微代理
  • 控制总线等功能

3.2 核心组件

组件名称主要功能
Eureka服务注册与发现中心
Open Feign服务间请求调用
Hystrix容错处理
Ribbon负载均衡
Gateway/Zuul服务网关
Config分布式配置
Sleuth服务链路追踪

3.3 Eureka 服务治理

架构组件

  1. Eureka Server

    • 服务注册中心
    • 维护服务实例列表
    • 提供服务发现功能
  2. Eureka Client

    • 服务提供方:注册服务
    • 服务消费方:发现服务
    • 心跳维护

Eureka架构图

4. Netflix 与 Spring Cloud 的故事

从流媒体巨头到技术创新者

Netflix 不仅是一家全球知名的流媒体服务提供商,更是技术创新的先驱。让我们来了解这个引人入胜的故事:

业务的迅速扩张

Netflix 以其丰富的内容库和优质的原创作品在全球范围内快速发展,特别是在美剧领域建立了强大的影响力。然而,随着用户量的持续增长,他们面临着前所未有的技术挑战。

技术架构的演进

为了应对日益增长的访问量和数据处理需求,Netflix 走在了微服务架构的前沿。虽然他们并非微服务架构的首创者,但他们的实践经验却产生了深远的影响:

  • 率先在生产环境大规模应用微服务
  • 充分利用 AWS 云计算平台
  • 将核心技术栈开源,形成 Netflix OSS

与Spring Cloud的深度合作

Pivotal 公司在 Netflix 的技术基础上,进行了进一步的封装和整合,创建了 Spring Cloud。这次合作带来了:

  • 更简化的开发流程
  • 更完善的工具支持
  • 更广泛的技术生态

持续的影响

如今,Netflix 与 Spring Cloud 的合作已经成为了微服务领域的一个经典案例:

  • 推动了微服务架构的普及
  • 促进了云原生技术的发展
  • 影响了整个软件开发行业

Netflix 的经验不仅帮助自己实现了业务的快速增长,更通过与 Spring Cloud 的合作,为整个技术社区贡献了宝贵的经验和解决方案。