博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloud 之入门概述
阅读量:2454 次
发布时间:2019-05-10

本文共 3059 字,大约阅读时间需要 10 分钟。

文章目录

Spring Cloud项目的官方网址:
在这里插入图片描述

什么是SpringCloud

  • Spring Cloud是一系列框架的集合,这一系列框架全部用Spring Boot的开发风格做到一键启动和部署,由于Spirng Boot开发的便利性,巧妙的简化了分布式系统基础设施的开发;比如:服务注册发现、配置中心、负载均衡、数据监控等。

  • Spring Cloud并不是重新开发这些框架的,而是将各家公司比较成熟的框架组合起来,然后通过Spring Boot风格进行再次封装,屏蔽了复杂的配置和实现,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

  • Spring Cloud是一站式分布式系统解决方案,可以快速建立一个分布式系统基础设施。

什么是微服务

微服务是一个概念、一个项目开发的架构思想。Spring Cloud 是微服务架构的一种 Java 实现。

微服务架构模式(Microservices Architecture Pattern)的目的是将大型的、复杂的、长期运行的应用程序构建为一组相互配合的服务,每个服务都可以很容易进行局部改良。 Micro 这个词意味着每个服务都应该足够小,但是,这里的小不能用代码量来比较,而应该是从业务逻辑上比较 —— 符合 SRP(单一职责) 原则的才叫微服务。

CAP理论

  • 一致性(Consistency) (所有节点在同一时间具有相同的数据)
  • 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
  • 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)

微服务架构优势

复杂度可控、独立部署、技术选型灵活、容错、扩展。

  • 复杂度可控: 在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。
  • 独立部署: 由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。
  • 技术选型灵活: 微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,故需要对技术栈进行升级时所面临的风险就较低,甚至完全重构一个微服务也是可行的。
  • 容错(fault isolation): 当某一组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。
  • 扩展: 每个服务可以各自进行 水平 扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。

SpringCloud框架特点

在这里插入图片描述

SpringCloud与SpringBoot版本对应关系

SpringBoot与SpringCloud需要版本对应,否则可能会造成很多意料之外的错误。

关于maven仓库的版本列表

spring-cloud-dependencies版本列表可查看:

spring-boot-starter-parent 版本列表可查看:

版本对应关系

大版本对应关系:

SpringBoot SpringCloud 关系
1.2.x Angel版本(天使) 兼容Spring Boot 1.2.x
1.3.x Brixton版本(布里克斯顿) 兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x
1.4.x Camden版本(卡姆登) 兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x
1.5.x Dalston版本(多尔斯顿) 兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x
1.5.x Edgware版本(埃奇韦尔) 兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x
2.0.x Finchley版本(芬奇利) 兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x
2.1.x Greenwich版本(格林威治) 兼容Spring Boot 2.1.x
2.2.x Hoxton(霍克斯顿) 兼容Spring Boot 2.2.x

实际开发版本关系:

spring-boot-starter-parent spring-cloud-dependencies
1.5.2.RELEASE Dalston.RC1
1.5.9.RELEASE Edgware.RELEASE
2.0.2.RELEASE Finchley.BUILD-SNAPSHOT
2.0.3.RELEASE Finchley.RELEASE
2.0.6.RELEASE Finchley.SR2
2.1.4.RELEASE Greenwich.SR1
2.2.2.RELEASE Hoxton SR1

SpringCloud常用启动依赖

Spring Cloud Netflix:是对Netfilx开发的一套分布式服务框架的封装,包括服务注册发现、负载均衡、断路器等。

  • spring-cloud-starter-netflix-eureka-server: 主要负责完成微服务架构中的服务治理功能中的服务端。
  • spring-cloud-starter-netflix-eureka-client: 主要负责完成微服务架构中的服务治理功能中的客户端。
  • spring-cloud-starter-netflix-ribbon:为服务实现负载均衡。
  • spring-cloud-starter-netflix-hystrix:为服务提供容错保护功能,实现了线程隔离、断路器等一些列服务保护功能。
  • spring-cloud-starter-openfeign:声明式、模板化的HTTP客户端。
  • spring-cloud-starter-netflix-zuul:服务网关。
  • spring-cloud-config-server:配置中心服务端。
  • spring-cloud-starter-config:配置中心客户端。
  • spring-cloud-starter-gateway:功能更强大的第二代服务网关,SpringCloud好像已经不会更新Zuul了,用gateway替换Zuul。

SpringCloud分布式流程总结

  • 使用Eureka作为服务注册中心完成服务注册和发现。
  • 服务间通过FeignRibbon实现服务的消费以及负载均衡。
  • 为了使服务集群更健壮,使用Hystrix的容错保护机制来避免微服务架构中个别服务出现异常时引起的故障蔓延。
  • 只用zuulgateway作为服务的路由转发、权限校验、限流控制。
  • 项目用到的配置信息,比如数据源,可以使用config配置中心组件管理,配置信息可以放置到Git、SVN等,实现不重启应用的情况下更新配置。

经典入门教程

转载地址:http://xdchb.baihongyu.com/

你可能感兴趣的文章
j pocket_Wallabag:Pocket的开源替代品
查看>>
未拉手刹撞到前面车的动画_使用手刹转换视频
查看>>
cms系统和管理员系统区别_如何成为懒惰的系统管理员
查看>>
linux dd格式化磁盘_如何在Linux中使用dd而不破坏磁盘
查看>>
dropbox内容更改_Dropbox替代品,Git技巧,Linux技巧,DevOps必须阅读的内容等等
查看>>
pandoc epub_使用Pandoc将您的书变成网站和ePub
查看>>
开源 计划管理_公司开源计划的三大好处
查看>>
devops java使用_谁会在使用DevOps时最大程度地退缩?
查看>>
java 补丁差异_差异和补丁简介
查看>>
python django_8个Python软件包将简化Django的生活
查看>>
shell 点文件_Shell点文件可以为您做什么
查看>>
zsh 简单高效使用技巧_使用zsh提高生产力的5个技巧
查看>>
perl子例程_子例程签名在Perl 6中如何工作
查看>>
开源 js图形_年度计算机图形会议鼓励使用开源
查看>>
多步骤建立镜像_通过四个步骤建立更多可信赖的团队
查看>>
linux中top命令_在Linux中使用top命令的提示
查看>>
管理工具 tools不可用_赶紧为管理员准备的10种杀手tools工具
查看>>
sysadmin默认密码_sysadmin的SELinux指南:42个主要问题的答案
查看>>
sysadmin默认密码_sysadmin的Ansible指南:如何简化任务
查看>>
linux开源游戏_适用于Linux的5个开源策略和模拟游戏
查看>>