目录

一. 微服务框架

1. 微服务架构概念

2. 微服务的利与弊(为什么要用微服务)

二. SpringBoot

1. SpringBoot是什么?

2. SpringBoot核心注解是什么?

3. 什么是SpringBoot的自动配置?原理是什么?

4. springboot监视器了解吗?

5. SpringBoot怎么保证程序安全性?

6. 微服务如何实现session共享?

7. springboot如何实现定时任务?

三. SpringCloud 和 SpringCloud Alibaba

1. SpringCloud是什么?

2. Spring、SpringBoot、SpringCloud 区别?

3. SpringCloud 和 SpringCloud Alibaba (前五行 微服务五大件)

(一)Spring Cloud

1. Eureka(服务注册与发现)

2. Ribbon(客户端负载均衡)

3. Feign(http服务调用)

4.Hystrix(服务容错)

5. Zuul(网关)

(二)Spring Cloud Alibaba

1. Nacos(服务注册发现)

2. Dubbo(rpc服务调用)

3. Ribbon(客户端负载均衡)

4. Sentinel(服务容错)

5. Zuul、Getway(网关)

6. SchedulerX(分布式调度)

7. Diamond(配置中心)


一. 微服务框架

1. 微服务架构概念

单体架构 ——> 集群 ——> 垂直化 ——> 服务化(SOA:面向服务的架构) ——> 微服务化(SOA的细粒度化)

SOA和微服务的区别?

  • SOA是面向服务的架构:解耦,解决信息孤岛问题,数据之间要互联互通
  • 微服务是SOA的细粒度化:比如把用户服务拆成账户服务、积分服务等

服务注册中心的作用?

  • 服务的动态感知:服务上线下线
  • 服务地址的高效管理:不需要每个客户端都去管理服务地址,而是可以通过服务名直接调用服务

注:服务注册中心有Zookeeper、Eureka、Nacos、consul

网关的作用?

路由、权限认证、日志记录、限流、熔断

限流、降级、熔断?

  • 限流:限流算法有令牌桶、漏桶、滑动窗口,限流框架有阿里的sentinel(滑动窗口)、springcloud的hystrix(信号量)
  • 降级:关闭某些服务接口或者页面,以保证核心服务可用。被动降级是限流或熔断导致的降级,主动降级指的是关闭评论、广告等不重要功能保证核心服务可用。
  • 熔断:当某些服务异常,则及时熔断此微服务的调用,快速返回错误响应信息。防止雪崩的发生。(Hystrix默认5秒内20次错误调用,会启动熔断机制)

2. 微服务的利与弊(为什么要用微服务)

利:

高度模块化,边界清晰。高内聚、低耦合。

可独立部署,互不影响

弊:

分布式带来的高度复杂性,比较难看清楚整个大系统是如何运作的

数据一致性问题

运维复杂,可靠性、稳定性、监控、容量规划方面都有很高的要求

二. SpringBoot

1. SpringBoot是什么?

SpringBoot是Spring组件一站式使用框架,简化了spring的使用,提供了各种start,让开发者能快速上手。

2. SpringBoot核心注解是什么?

@SpringBootApplication。主要包含三个注解:

  • @SpringBootConfiguration:该注解表明这SpringBoot的一个配置类
  • @EnableAutoConfiguration:开启自动配置功能
  • @ComponentScan:Spring组件扫描

3. 什么是SpringBoot的自动配置?原理是什么?

SpringBoot采用 “约定大于配置” 的思想,把所有可能需要的配置提前写好,写在自动配置的jar包中。基本每个start都有对应的自动配置。

原理就是把spring.factory里的xxxAutoConfiguration都加载到Spring容器中。

xxxAutoConfiguration:自动配置类

xxxProperties:封装配置文件中的相关属性

配置文件的加载顺序?

xxx.properties、yaml

SpringBoot核心配置文件是什么?

application(.yml或.properties) 或 bootstrap(.yml或.properties)。application常用于springboot项目,bootstrap常用于springcloud项目加载远程配置文件。

4. springboot监视器了解吗?

springboot actuator用于服务监测和管理。可以通过 http://localhost:8080/actuator/{端点} 的方式访问端点。常见的端点有:

  • /health:检查应用健康状况。健康为UP,不健康为DOWN;
  • /info:应用基础信息。比如名字,jdk版本,编码规则等;
  • /metrics:应用各类度量指标。比如内存信息,线程信息,垃圾回收信息,数据库连接池;
  • /threaddump:线程信息。比如线程id,线程状态,线程堆栈,是否等待锁资源等;
  • /heapdump:会自动生成JVM堆文件;
  • /beans:Spring容器中所有的bean;
  • /loggers:应用程序配置的日志信息。比如日志级别,也可以修改日志级别;
  • /shutdown:关闭SpringBoot应用。

5. SpringBoot怎么保证程序安全性?

使用spring-boot-starter-security依赖项,security主要核心功能有:

  • 认证(你是谁)
  • 授权(你能干什么)
  • 攻击防护(防止伪造身份)

6. 微服务如何实现session共享?

一个完整的项目被拆分成微服务后,session就被物理隔离开了。这时候可以使用Spring Session + redis的方案,操作redis上的session,就能解决这个问题。

7. springboot如何实现定时任务?

使用Spring的@scheduled注解,或者使用第三方框架quartz或者xxl-job。

三. SpringCloud 和 SpringCloud Alibaba

1. SpringCloud是什么?

Springcloud是一个微服务全家桶,是基于SpringBoot提供的一整套微服务解决方案

2. Spring、SpringBoot、SpringCloud 区别?

  • Spring是以 Bean(对象)为中心 ,提供IOC、AOP等功能
  • Spring是以 Application(单个微服务应用)为中心,提供各种start,提供自动配置、监控等功能
  • SpringCloud是以 Service(整个微服务治理框架)为中心,提供 服务注册与发现、服务调用、负载均衡、服务容错、网关等功能

3. SpringCloud 和 SpringCloud Alibaba (前五行 微服务五大件)

服务治理 Spring Cloud落地技术 Spring Cloud Alibaba落地技术
服务注册与发现 Eureka、Zookeeper Nacos
服务调用 Feign、OpenFeign Dubbo(HSF)
负载均衡 Ribbon Ribbon
服务容错 Hystrix Sentinel
网关 Zuul Zuul、Getway
分布式调度 --(替代方案:xxl-job) ScheduleX
配置中心 Spring Cloud Config Diamond
消息 RabbitMQ、Kafka RocketMQ
服务部署 Docker、Kubernetes、OpenStack Docker
分布式事务 --(替代方案:2pc) Senta
服务监控 待补充 AliMonitor(应用监控)、Arthas(在线诊断)
链路追踪

Spring Cloud Sleuth

待补充

(一)Spring Cloud

1. Eureka(服务注册与发现)

服务启动的时候,服务上的Eureka客户端会把自身注册到Eureka服务端,并且可以通过Eureka服务端的注册表知道其他注册的服务

2. Ribbon(客户端负载均衡)

服务间发起请求的时候,服务消费者方基于Ribbon服务做到负载均衡,从服务提供者的多台机器中选择一台。常见的负载均衡算法:轮询、随机、权重。

3. Feign(http服务调用)

Feign使用的时候会集成Ribbon,Ribbon去Eureka服务端找到服务提供者所在的服务器信息(比如服务名、ip、端口等),然后根据负载均衡策略选择一个,拼接url后发出清楚

4.Hystrix(服务容错)

发起的请求是通过Hystrix的线程池去访问服务,不同的服务通过不同的线程池,实现不同的服务调度隔离。如果服务出现故障,通过服务熔断,避免服务雪崩问题;并且通过服务降级,保证服务核心功能正常提供。

  • 隔离:服务之间请求用线程池隔离,防止所有线程都卡在某一个异常的下游节点
  • 熔断:服务异常及时熔断,返回错误响应信息,防止服务雪崩(下游节点异常从而超时影响到上游节点,从而影响到整个链路),Hystrix默认5秒20次异常请求则熔断。
  • 降级:需要有降级逻辑,请求走熔断器过程中,需要把该请求记录到故障数据库,方便后续回补数据

5. Zuul(网关)

前端调用后端的时候,统一走Zull网关进入,通过Zull网关转发请求给对应的服务。公有域名转ip,鉴权。

服务启动和请求全过程:
1. 服务启动的时候Eureka客户端会把自身注册到Eureka服务端,并且也能通过Eureka服务端发现其他服务。
2. 当前端发起请求时,先进入Zuul网关,网关通过Eureka服务端拿到服务提供者信息,通过路由策略转发请求给相应的服务,服务收到请求会先过Hystrix做服务容错(限流、熔断、降级),然后再根据业务逻辑处理请求。
3. 当后端服务之间相互请求时,Feign每5秒会从Eureka服务端同步一次服务器信息缓存到本服务器,ribbon直接从缓存中的服务器信息中选择一个,转发请求到相应服务器,依然是先到Hystrix,再做业务逻辑处理。使用Eureka有服务安全下线问题
Eureka会跟服务器之间保持心跳,三次心跳失败,就会把服务器节点拿掉。但是就有一个问题,服务下线和Eureka知晓之间的时间请求都会失败。
如何解决这个问题?
这个需要服务提供方来保证。Eureka服务端提供了一个接口,可以调用接口把服务器节点信息拿掉,服务下线前有一个回调钩子,可以在这个回调里边调用Eureka,先把节点信息拿到再shutdown服务,就可以保证服务安全下线。

(二)Spring Cloud Alibaba

1. Nacos(服务注册发现)

Nacos是注册中心+配置中心的组合(Nacos = Eureka + Config),就不用多部署一套配置中心的集群

2. Dubbo(rpc服务调用)

Dubbo是分布式系统中常用的RPC框架,可以帮我们做服务地址的管理、服务的注册与发现、服务监控等。Dubbo一般配合Zookeeper使用。

Dubbo工作流程:

角色:Container-容器、Provider-服务提供方、Consumer-服务消费方、Register-注册中心、Monitor-监控器

  • Provider在Container上启动服务;
  • Provider在Register上注册服务,Dubbo一般使用Zookeeper作为注册中心;
  • Consumer在Register上订阅服务,注册中心返回服务器列表,如果列表有变更就通知Consumer;
  • Conusmer根据负载均衡算法调用Provider;
  • Monitor实时监控服务调用次数和时间。

3. Ribbon(客户端负载均衡)

服务间发起请求的时候,服务消费者方基于Ribbon服务做到负载均衡,从服务提供者的多台机器中选择一台。常见的负载均衡算法:轮询、随机、权重。

4. Sentinel(服务容错)

Sentinel是阿里开源的高可用流量管理框架,提供了 限流、熔断、降级、系统负载保护等多个维度来保障服务稳定性。

降级策略:

  • 平均响应时间超过阈值
  • 每秒异常比例超过阈值
  • 一分钟内异常数目超过阈值

5. Zuul、Getway(网关)

6. SchedulerX(分布式调度)

xxl-job 是一个分布式调度平台,有调度中心和执行器两大部分组成。

  • 调度中心:负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。支持可视化界面,可以在调度中心对人任务进行新增、修改、删除,可以查看日志,失败告警等。
  • 执行器:负责接受调度请求,执行业务逻辑。接收调度中心发出的执行请求,终止请求,日志请求等。

xxl-job工作原理:

  • 任务执行器根据配置的调度中心地址,自动注册到调度中心
  • 达到任务触发条件,调度中心下发任务
  • 执行器基于线程池执行任务,并把执行结果放入内存队列,执行日志写入日志文件
  • 执行器回调线程消费内存队列里的执行结果,并主动上报给调度中心
  • 当用户在调度中心查看任务日志,调度中心请求任务执行器,查询日志结果并返回

7. Diamond(配置中心)

第六篇:微服务框架(SpringBoot、SpringCloud)相关推荐

  1. 微服务架构 与 Dubbo 微服务框架、SpringCloud 微服务框架 详解

    微服务架构 与 Dubbo 微服务框架.SpringCloud 微服务框架 详解 什么是微服务架构? 微服务架构就是将单体的应用程序分成多个应用程序,这一个应用程序就组成一个服务,这多个应用程序就组成 ...

  2. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)......

    手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 原文: 手把手0基础项目实战(一)--教你搭建一套可自动化构 ...

  3. 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...

    本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 项目完整源码下载 https://github ...

  4. 0基础教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)

    2019独角兽企业重金招聘Python工程师标准>>> 本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你 ...

  5. 【微服务框架】SpringCloud之最全篇,java并发编程电子书

    当然这个只是个题外话. Spring Cloud 的版本号并不是我们通常见的数字版本号,而是一些很奇怪的单词.这些单词均为英国伦敦地铁站的站名.同时根据字母表的顺序来对应版本时间顺序,比如:最早 的 ...

  6. 微服务框架 SpringCloud微服务架构 27 自动补全 27.2 自定义分词器

    微服务框架 [SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务] SpringCloud微服务 ...

  7. 微服务框架 SpringCloud微服务架构 服务异步通讯 51 死信交换机 51.3 延迟队列 51.3.1 延迟队列 51.3.2 延迟队列插件

    微服务框架 [SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务] 服务异步通讯 文章目录 微服 ...

  8. 微服务框架 SpringCloud微服务架构 25 黑马旅游案例 25.5 排序和搜索关键字高亮

    微服务框架 [SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务] SpringCloud微服务 ...

  9. 微服务框架 SpringCloud微服务架构 25 黑马旅游案例 25.4 广告置顶

    微服务框架 [SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务] SpringCloud微服务 ...

  10. 微服务框架 SpringCloud微服务架构 26 数据聚合 26.5 多条件聚合

    微服务框架 [SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务] SpringCloud微服务 ...

最新文章

  1. 2021.09 电子学会 - 软件编程(图形化)试题讲解
  2. zabbix监控多台站点服务器
  3. C和C++线性表基本概念
  4. 用html5播放两个视频,HTML5视频 - 如何进行无缝播放和/或几个视频循环?
  5. 超 8 成软件存已知高危开源漏洞,奇安信发布《2021 中国软件供应链安全分析报告》
  6. unity3d 虚拟博物馆_基于Unity3D的虚拟博物馆信息可视化系统①
  7. careyshop-商城框架系统
  8. three.js两个点给线条加宽度_2020湘乡线条立体逼真方兴装饰诚信服务
  9. python 近期用到的基础知识汇总(五)
  10. 计算机械效率的公式怎么读,机械效率公式总结
  11. Java Web编程实战1~3章笔记
  12. poj 2560 Freckles
  13. 宏基aspire拆机触摸_(图) 宏基 Acer 4741G 完全拆解
  14. ArcGIS批量使用以表格显示分区统计工具
  15. 小学生十大计算机专业书排行,小学教辅十大排行榜2018 小学教辅书那些比较好...
  16. java反射机制和运用
  17. cad重新加载php命令,cad撤回命令是什么
  18. 第13课:构建神经网络模型的实用建议
  19. 安装应用提示安装失败或不能安装,报INSTALL_FAILED_DUPLICATE_PERMISSION错误
  20. USB gadget(1)----gadget driver

热门文章

  1. 使用计算机能播放音乐也能观看视频,win10用groove播放音乐提示“请确保你额计算机的声卡和视频卡可以使用”怎么办...
  2. python-pandas安装-读入数据-添加索引-美国小孩英文名
  3. 【css实现table斜线表头】
  4. 1355 巧克力 (线段树点+区间)
  5. cmake 学习笔记之相对路径编译动态链接库
  6. 用python绘制一个乌龟
  7. 发布订阅模式与观察者模式
  8. 2D手机游戏的即时阴影效果
  9. Python接口自动化函数调用TypeError: seperate_data() missing 1 required positional argument:‘self’
  10. 如何选择高品质的企业邮箱