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. 携程Apollo简单入门教程这一篇就够了

    1. Apollo背景 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境.分集群管理配置,完善的权限.审核机制……   废话不多说,参考官方文档   如果不想看文档, 也没关系, 跟 ...

  2. UCloud 云服务内容审核 Java 版本实现

    前言 最近不少小伙伴反映上传小黄图偶尔性的异常,并且不能上传动态图片,很是苦恼!无她,鉴黄API还没有这么智能,毕竟是自己训练的,不是那么专业!为了更好的服务广大网友,撸主决定接入更加智能快速的鉴黄服 ...

  3. golang开发环境配置

    下载安装 从 https://golang.org/dl/ 下载最新的安装包. windows直接执行exe,按指示进行安装(默认安装目录是:C:\Go) linxu解压后复制到你喜欢目录就行(一般放 ...

  4. 【2018寒假集训 Day2】【动态规划】回文字

    回文字(palin) 问题描述: 如果一个单词从前和从后读都是一样的,则称为回文字.如果一个单词不是回文字,则可以把它拆分成若干个回文字.编程求一个给定的字母序列,最多要分割成几部分,使每一部分都回文 ...

  5. Java基础面试题及答案(四)

    反射 57. 什么是反射? 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力 Java反射: 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能 ...

  6. PowerMock学习(十)之Mock spy的使用

    前言 回顾下之前学过的内容,会发现一点,如果在mock后不写when和thenReturn去指定,即便是mock调用任何方法,什么也不会做,也看不到什么效果. 划重点的时候来了,本身mock出来的对象 ...

  7. Tomcat连接器详解

    1.连接器等同于nginx中的引擎. 2.tomcat连接器有三种运行模式bio.nio.apr . (1)bio(blocking I/O,阻塞式I/O操作) 1)表示tomcat使用的是传统的ja ...

  8. c 程序之 最大公约数 和 最小公倍数

    1.最大公约数     30  10  -> 10 #include<stdio.h> /* 求最大公约数 辗转相减法 36 --16 4 */ int main(){ int a, ...

  9. python中字典数据类型常用操作

    创建字典 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示: ...

  10. 按照ID倒序查出某个字段不重复的集合

    一.需求 有如下一个表pp_test: id name 1 aa 2 bb 3 cc 4 aa 5 cc 6   要求查出name字段中不重复的值(不算空值),并且按照id的倒序排列(不必输出ID). ...