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)等等),但是缺点就是如果某些功能想⽤其他框架代替,开发者可能要去研究⼀下其他框架与SpringCould 的整合(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
因篇幅问题不能全部显示,请点此查看更多更全内容