1、Spring boot与Spring cloud 之间的关系

Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务 ​ Spring Cloud基于Spring Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。 ​ Spring Cloud是一个基于Spring Boot实现的云应用开发工具; ​ Spring boot专注于快速、方便集成的单个个体,Spring Cloud是关注全局的服务治理框架; ​ spring boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置, ​ Spring Cloud很大的一部分是基于Spring boot来实现。

服务的框架那么多比如:dubbo、Kubernetes,为什么就要使用Spring Cloud的呢?

  • 产出于spring大家族,spring在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善。比如dubbo现在就差不多死了(后面又卷土重来重新开始更新了)

  • 有spring Boot 这个独立干将可以省很多事,大大小小的活spring boot都搞的挺不错。(框架搭建快捷,几分钟就能跑起一个子项目,便于快捷开发。)

  • 作为一个微服务治理的大家伙,考虑的很全面,几乎服务治理的方方面面都考虑到了,方便开发开箱即用。(一站式构建微服务,对于中小型公司有利,不需要花费大量人力机器实现负载均衡,熔断等措施)

  • Spring Cloud 活跃度很高,教程很丰富,遇到问题很容易找到解决方案(源于Spring家族,用户基数大,技术分享帖也多)

  • 轻轻松松几行代码就完成了熔断、均衡负责、服务中心的各种平台功能(功能齐全)

Spring Cloud 也有一个缺点,只能使用Java开发,不适合小型独立的项目。

通俗来说,SpringCloud就像是一体机,拿回来就可以用,不需要开发人员去深入了解各个功能(服务注册(Eureka),API gateway(Zuul),熔断器(Hystrix)等等),但是缺点就是如果某些功能想用其他框架代替,开发者可能要去研究一下其他框架与Spring Could 的整合(DIY 组装电脑),需要了解其运行原理。

spring-cloud组件详解

  1. Spring Cloud Config:配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。

  2. Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

  3. Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。

  4. Netflix Eureka:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障 转移。

  5. Netflix Hystrix:容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

  6. Netflix Zuul:边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。

  7. Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调 机制等功能。

  8. Spring Cloud for Cloud Foundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS 云平台。

  9. Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。

  10. Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。

  11. Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。

  12. Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。

  13. Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。


项目架构的演变历程

 
 
 
 
 
集中式架构
垂直拆分
分布式服务
SOA面向服务架构
微服务架构
 

2. 微服务架构说明

目标:了解SOA与微服务架构的区别以及说出微服务架构的特点

SOA使用了ESB组件的面向服务架构:ESB自身实现复杂;应用服务粒度较大,所有服务之间的通信都经过ESB会降低通信速度;部署、测试ESB比较麻烦。

微服务架构:是一套使用小服务或者单一业务来开发单个应用的方式或途径。

微服务架构特点:

  • 单一职责

  • 服务粒度小

  • 面向服务(对外暴露REST api)

  • 服务之间相互独立

与使用ESB的SOA架构的区别:微服务架构没有使用ESB,有服务治理注册中心;业务粒度小。

spring cloud 概述

Eureka注册中心

Eureka的主要功能是进行服务管理,定期检查服务状态,返回服务地址列表。Eureka是服务注册中心,只做服务注册;自身并不提供服务也不消费服务。

  • 服务注册:在服务提供工程user-service上添加Eureka客户端依赖;自动将服务注册到EurekaServer服务地址列表。

    • 添加依赖;

    • 改造启动引导类;添加开启Eureka客户端发现的注解;

    • 修改配置文件;设置Eureka 服务地址

  • 服务发现:在服务消费工程consumer-demo上添加Eureka客户端依赖;可以使用工具类根据服务名称获取对应的服务地址列表。

    • 添加依赖;

    • 改造启动引导类;添加开启Eureka客户端发现的注解;

    • 修改配置文件;设置Eureka 服务地址;

    • 改造处理器类ConsumerController,可以使用工具类DiscoveryClient根据服务名称获取对应服务地址列表。

spring-cloud微服务总体流程

高可用配置**:

  • 将Eureka Server作为一个服务注册到其它Eureka Server,这样多个Eureka Server之间就能够互相发现对方,同步服务,实现Eureka Server集群。

负载均衡Ribbon

  1. 负载均衡是一个算法,可以通过该算法实现从地址列表中获取一个地址进行服务调用。

  2. Ribbon提供了轮询、随机两种负载均衡算法(默认是轮询)可以实现从地址列表中使用负载均衡算法获取地址进行服务调用。

  3. 在实例化RestTemplate的时候使用@LoadBalanced,服务地址直接可以使用服务名。

熔断器Hystrix

Hystrix是一个延迟和容错库,用于隔离访问远程服务,防止出现级联失败。

线程隔离

用户请求不直接访问服务,而是使用线程池中空闲的线程访问服务,加速失败判断时间。

服务降级

及时返回服务调用失败的结果,让线程不因为等待服务而阻塞。

Feign应用

自动根据参数拼接http请求地址。

Feign负载均衡及熔断

  • 负载均衡

  • 服务熔断

  • 请求压缩

  • 日志级别

Spring Cloud Gateway网关

Spring Cloud Gateway的核心就是一系列的过滤器,可以将客户端的请求转发到不同的微服务。主要作用:过滤和路由。

路由:

  1. 面向服务的路由;只需要在配置文件中指定路由路径类似: `lb://user-service;;lb 之后编写的服务名必须要在eureka中注册才能使用

  2. 客户端的请求地址与微服务的服务地址如果不一致的时候,可以通过配置路径过滤器实现路径前缀的添加和去除。

过滤器

  • 用法:在配置文件中指定要使用的过滤器名称;

  • 类型:局部、全局;

  • 使用场景:请求鉴权、异常处理、记录调用时长等。

Gateway网关一般直接给终端请求使用;Feign一般用在微服务之间调用。

Spring Cloud Config分布式配置中心

服务注册中心yml配置

 server:
  port: 12000
 spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/goheima/heima-config.git
   # 配置rabbitmq信息;如果是都与默认值一致则不需要配置
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
 eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka
 management:
  endpoints:
    web:
      exposure:
         # 暴露触发消息总线的地址
        include: bus-refresh

spring cloud详解的更多相关文章

  1. spring cloud 详解

    https://www.cnblogs.com/qdhxhz/p/9601170.html SpringCloud(8)---zuul权限校验.接口限流 https://blog.csdn.net/c ...

  2. [推荐]spring cloud 详解

    http://blog.csdn.net/column/details/15197.html

  3. spring事务详解(二)简单样例

    系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...

  4. Spring配置文件详解 – applicationContext.xml文件路径

    Spring配置文件详解 – applicationContext.xml文件路径 Java编程                 spring的配置文件applicationContext.xml的默 ...

  5. spring配置文件详解--真的蛮详细

    spring配置文件详解--真的蛮详细   转自: http://book.51cto.com/art/201004/193743.htm 此处详细的为我们讲解了spring2.5的实现原理,感觉非常 ...

  6. 【转载】Spring AOP详解 、 JDK动态代理、CGLib动态代理

    Spring AOP详解 . JDK动态代理.CGLib动态代理  原文地址:https://www.cnblogs.com/kukudelaomao/p/5897893.html AOP是Aspec ...

  7. J2EE进阶(四)Spring配置文件详解

    J2EE进阶(四)Spring配置文件详解 前言 Spring配置文件是用于指导Spring工厂进行Bean生产.依赖关系注入(装配)及Bean实例分发的"图纸".Java EE程 ...

  8. Spring RestTemplate详解

    Spring RestTemplate详解   1.什么是REST? REST(RepresentationalState Transfer)是Roy Fielding 提出的一个描述互联系统架构风格 ...

  9. spring事务详解(五)总结提高

    系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.概念 ...

随机推荐

  1. nexus https proxy

  2. PostGIS 查询点在线上

    1.缓冲区法:查询数据库fm表里,与坐标(12989691.512 4798962.444)相距0.0001米的数据(3857坐标系) ),),),),geom) ; --如果坐标系统一,不用tran ...

  3. Hadoop之HDFS文件系统(二)

    HDFS客户端 通过IO流操作HDFS HDFS文件上传 @Test public void putFileToHDFS() throws Exception{ // 1 创建配置信息对象 Confi ...

  4. mui开发:苹果手机自动全屏解决方案

    前一段时间,使用mui写app时,出现了苹果手机播放视频时,自动全屏的情况,并且无法点击控件,只能等到播放完毕后点击控件. 那么怎么解决这个问题呢,弟弟们请看我的下面. 1.在页面的video标签中, ...

  5. length of the longest substring without repeating character

    Given a string, find the length of the longest substring without repeating characters. 来源:力扣(LeetCod ...

  6. 灵魂拷问:为什么 Java 字符串是不可变的?

    在逛 programcreek 的时候,发现了一些精妙绝伦的主题.比如说:为什么 Java 字符串是不可变的?像这类灵魂拷问的主题,非常值得深思. 对于绝大多数的初级程序员来说,往往停留在" ...

  7. cmd for install pygame in python 3.7

    Higher version Python better and convinient to use! Down load pygame whl file: C:\Work\software>p ...

  8. mysql查询出所有重复的记录

    假如我们有如下一张数据表(很简单,只是举例而已),表名为student.现在我们要取出其中重复记录.重复是以name相同为判定标准. ID name phone age 1 张三 10086 15 2 ...

  9. webpack4.0(二)--热更新

    webpack4.0---热更新 使用webpack可帮助我们的开发以及打包,在开发过程中,有时候我们只修改了部分代码并想不必刷新整个页面即可看到更改后的效果,这时候 webpack-dev-serv ...

  10. RAC环境查询JOB正在运行的信息

    需求: 客户环境12.2.0.1,三节点RAC需要,将一个正在运行的Job session kill掉, 但是通过DBA_JOBS_RUNNING发现,无法发现其它实例运行的JOB,因此需要登陆多台实 ...