Spring Cloud 微服务架构学习笔记与示例

一、分布式服务框架的发展

1.1 第一代服务框架

  代表:Dubbo(Java)、Orleans(.Net)等

  特点:和语言绑定紧密

1.2 第二代服务框架

  代表:Spring Cloud等

  现状:适合混合式开发(例如借助Steeltoe OSS可以让ASP.Net Core与Spring Cloud集成),正值当年

1.3 第三代服务框架

  代表:Service Mesh(服务网格) => 例如Service Fabric、lstio、Linkerd、Conduit等

  现状:在快速发展中,更新迭代比较快

1.4 未来(目测不久)主流的服务架构和技术栈

  

  基础的云平台为微服务提供了资源能力(计算、存储和网络等),容器作为最小工作单元被Kubernetes调度和编排,Service Mesh(服务网格)管理微服务的服务通信,最后通过API Gateway向外暴露微服务的业务接口。

  目前,我所在的项目组已经在采用这种技术架构了,服务网格采用的是Linkerd,容器编排采用的是K8S,Spring Cloud已经没用了。But,不代表Spring Cloud没有学习的意义,对于中小型项目团队,Spring Cloud仍然是快速首选

二、Spring Cloud 简介

2.1 Spring Cloud极简介绍

  

   首先,尽管Spring Cloud带有“Cloud”这个单词,但它并不是云计算解决方案,而是在Spring Boot基础之上构建的,用于快速构建分布式系统的通用模式的工具集。

   其次,使用Spring Cloud开发的应用程序非常适合在Docker和PaaS(比如Pivotal Cloud Foundry)上部署,所以又叫做云原生应用(Cloud Native Application)。云原生可以简单地理解为面向云环境的软件架构。

总结 Spring Cloud是一个基于Spring Boot实现的云原生应用开发工具,它为基于JVM的云原生应用开发中涉及的配置管理、服务发现、熔断器、智能路由、微代理、控制总线、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

  Spring Cloud具有如下特点:

  • 约定大于配置
  • 适用于各种环境
  • 隐藏了组件的复杂性,并提供声明式、无XML式的配置方式
  • 开箱即用,快速启动
  • 组件丰富,功能齐全
  • ......

  Spring Cloud作为第二代微服务的代表性框架,已经在国内众多大中小型的公司有实际应用案例。许多公司的业务线全部拥抱Spring Cloud,部分公司选择部分拥抱Spring Cloud。例如,拍拍贷资深架构师杨波老师就根据自己的实际经验以及对Spring Cloud的深入调研,并结合国内一线互联网大厂的开源项目应用实践结果,认为Spring Cloud技术栈中的有些组件离生产级开发尚有一定距离,最后提出了一个可供中小团队参考的微服务架构技术栈,又被称为“中国特色的微服务架构技术栈1.0”:

  

  上图中涉及到的组件,这里不做具体介绍,有兴趣的童鞋可以浏览波波老师的这篇文章:《一个可供中小团队参考的微服务架构技术栈》。

2.2 Spring Cloud核心子项目

  • Spring Cloud Netflix:核心组件,可以对多个Netflix OSS开源套件进行整合,包括以下几个组件:
    • Eureka:服务治理组件,包含服务注册与发现
    • Hystrix:容错管理组件,实现了熔断器
    • Ribbon:客户端负载均衡的服务调用组件
    • Feign:基于Ribbon和Hystrix的声明式服务调用组件
    • Zuul:网关组件,提供智能路由、访问过滤等功能
    • Archaius:外部化配置组件
  • Spring Cloud Config:配置管理工具,实现应用配置的外部化存储,支持客户端配置信息刷新、加密/解密配置内容等。
  • Spring Cloud Bus:事件、消息总线,用于传播集群中的状态变化或事件,以及触发后续的处理
  • Spring Cloud Security:基于spring security的安全工具包,为我们的应用程序添加安全控制
  • Spring Cloud Consul : 封装了Consul操作,Consul是一个服务发现与配置工具(与Eureka作用类似),与Docker容器可以无缝集成
  • ......

三、参考学习资料

  备注:下面资料都是我们项目组新同事以及老同事(.Net技术背景)所采用的学习资料,并不保证适合于所有人。本示例主要也主要是基于下面的资料而写的sample code。

  (1)周立:《Spring Cloud与Docker 微服务架构实战

  

  (2)程序猿DD:《Spring Cloud 微服务实战》、《Spring Cloud基础教程(Dalston版本)强力推荐)》

  

  (3)纯洁的微笑,《Spring Cloud系列文章

四、示例结构说明

4.1 示例环境版本

  • Java : JDK & JRE 1.8 8u151
  • Spring Boot : 1.5.15.RELEASE
  • Spring Cloud : Edgware.SR3 (小贴士:Spring Cloud的版本命名是以伦敦地铁站的名字来命名的)

4.2 示例地址与结构说明

  示例地址:GitHub - Coder-EdisonZhou/EDT.SpringCloud.Samples: Spring Cloud作为第二代微服务的代表性框架,已经在国内众多大中小型的公司有实际应用案例。许多公司的业务线全部拥抱Spring Cloud,部分公司选择部分拥抱Spring Cloud。此示例基于Spring Boot 1.5.x编写,展示了Spring Cloud的核心组件的基本使用方式,在学习Spring Cloud时可以参考本示例。

4.2.1 服务注册与发现 - 基于Eureka

  此部分示例位于:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值