面試就业题库-06

本文详细介绍了Spring Cloud的各个核心组件,包括Eureka服务发现、Ribbon负载均衡、Feign服务调用、Hystrix熔断限流和Spring Cloud Gateway网关。此外,讨论了Ribbon与Feign的区别,强调了Spring Cloud版本管理和与Spring Boot的兼容性。还探讨了分布式缓存Redis的高可用策略及其数据类型和应用场景。文章还涵盖了企业开发中如SPU和SKU的概念,前后端分离的实现,以及Shiro和Spring Security权限校验框架的对比。最后,提到了如何实现微信支付接入,数据库分库分表的原因,处理超时无效订单的方法,以及秒杀系统的实现技术与流程。
摘要由CSDN通过智能技术生成

文章目录

1. java基础(1)

2. javaweb(1)

3. ssm+springboot+springCloud(1.5)

9.1 Spring Cloud 你们在项目中如何使用?

  • SpringCloud概述
    Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
  • SpringCloud(SpringBoot)如何构建微服务项目
  1. 创建一个父级项目:
    统一springboot, springcloud的版本
  2. 创建一个子级项目:公共类的子级项目
    统一维护其它自己项目要用到类
  3. 创建一个子级项目: 数据源的子级项目
  4. 创建一个网关的子级项目: GateWay
  5. 创建一个业务的子级项目: service
    比如:
    ==商品业务的子级项目
    ==订单业务的子级项目
    ==秒杀业务的子级项目
  6. 创建一个业务接口的子级项目: openFeign
    比如:
    ==商品业务接口的子级项目
    ==订单业务接口的子级项目
    ==秒杀业务接口的子级项目
  7. 创建一个用户访问入口的子级项目: web
  • SpringCloud构建的微服务项目之间的调用关系(执行流程)
    用户通过客户端访问—>web入口---->GateWay子级项目 ---->openFeign子级项目—>service子级项目—>数据库

9.2 Spring Cloud 的各个组件说明

9.2.1 Eureka组件: SpringCloud的服务发现和注册的组件(作用阿里的Nacos)

  1. 注册中心 : Eureka server, 负责"保存"的服务(服务指的service子级项目的controller配置路径)
  2. 生产者: Eureka Client, 负责将服务发送到注册中心,由注册中心负责保存.
  3. 消费者: Eureka Client, 作用: 用户就是消费者,在客户端输入访问地址(地址服务),如果在注册中心由服务,就去访问,
    如果在注册中心没有改服务,就报404
    总结: 注册中心, 生产者, 消费者 三者之间的关系,以及通过心跳机制来管理服务
    在这里插入图片描述

9.2.2 Ribbon:负载均衡客户端,需要结合RestTemplate(HttpClient)进行服务的调用

  • 默认的负载均衡:轮询
  • 服务器启动时,先从Eureka server获取服务列表,然后在请求微服务时,通过RestTemplate进行http调用
  • 自定义访问策略
    实现步骤: 自定义一个类, 实现Rule接口,那么我们自定义的类就是一个策略类(代码里面就是算法,确定访问方式)
    方式一: 在定义的类上面加上@Configuration这个注解(注意: 该配置类不能被springboot扫描到)
    方式二:在全局配置文件application.yml配置 策略类.

9.2.3 Feign:Feign默认集成了Ribbon,用它来管理服务(管理controller配置的路径)

Feign可以通过@FeignClient 注解标识一个接口,通过该接口生成一个代理类来进行远程的微服务调用

9.2.4 Hystrix : 熔断限流的组件

为了防止微服务直接调用时,由于某一个微服务宕机导致整个项目无法访问(雪崩现象),这里采用Hystrix来阻断对存在宕机,异常情况的请求,直接本地返回

  • 1)Ribbon集成,首先引入相关的依赖,接着开启@EnableHystrix
    接着在调用微服务方法上添加 @HystrixCommand(fallbackMethod = “hiError”)指定服务异常的之后本地执行的方法
  • 2)Feign集成,在微服务绑定的接口@FeignClient(value = “service-hi”,fallback = SchedualServiceHiHystric.class)中指定异常时调用本地接口实现
  • 判定失败:Hystrix会在某个服务连续调用N次不响应的情况下,立即通知调用端调用失败,避免调用端持续等待而影响了整体服务,执行本地业务。
  • 恢复服务:Hystrix间隔时间会再次检查此服务,如果服务恢复将继续提供服务。Hystrix间隔几秒会让其中一个请求去调用远程微服务,如果调用成功,就表示服务正常,后面就重新链接
  • 开路 断路

9.2.5 GateWay :网关组件

GateWay (网关):
GateWay的主要功能是路由转发和过滤器。路由功能是微服务的一部分,
比如/api/user转发到到user服务,/api/shop转发到到shop服务。GateWay默认和Ribbon结合实现了负载均衡的功能。
作用:限流处理,认证和授权,单点登录,日志管理等等
GateWay的位置:
客户端发送请求---------所有请求------->GateWay网关: 路由分发----------->openFeign: 远程调用-------->service业务

9.3 Ribbon和Feign区别

  • Ribbon添加maven依赖 spring-starter-ribbon 使用@RibbonClient(value=“服务名称”) 使用RestTemplate调用远程服务对应的方法

  • feign添加maven依赖 spring-starter-feign 服务提供方提供对外接口 调用方使用 在接口上使用@FeignClient(“指定服务名”)

  • Ribbon和Feign的区别: Ribbon和Feign都是用于调用其他服务的,不过方式不同。

    • 启动类使用的注解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。
    • 服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。
    • 调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可,不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。

9.4 Spring Cloud 注意的细节

注意: 配置Feign,以及Rabbion的配置类上, 一定不能被springboot的引导类扫描到.

9.5 springCloud版本号更新的方式

  • 采用版本名+版本号,其中版本名采用伦敦地铁站命名,其中按照地铁首字母A-Z依次命令如Hoxton.SR9。但是现在已更改为主版本号.次版本号.修订号如2020.0.0

  • 旧版本命名方式中,开发的快照版本(BUILD-SNAPSHOT)到里程碑版本(M),开发的差不多到会发布的候选发布版(RELEASE),最后到正式版(SR)版本。

  • 新版本命名是YYYY.MINOR.MICRO[-MODIFIER],拿2020.0.1-SNAPSHOT 这个版本来说,其中YYYY为年份全称、MINOR为辅助版本号、MICRO为补丁版本号。MODIFIER同上述修饰关键节点,BUILD-SNAPSHOT、里程碑M,正式发行版本RELEASE等

    当前已发布SpringCloud稳定版本见下图,在线查看地址:https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies

9.6 SpringCloud和SpringBoot有版本兼容的

浏览器访问https://start.spring.io/actuator/info,在返回的数据中找到spring-cloud即可以查看SpringCloud与SpringBoot版本对应关系。
在这里插入图片描述

4. 企业开发的项目: 技术说明(1.5)

4.1 针对电商项目来说: SPU和SKU是什么, 用来表示什么?

==SPU: strand product unit 标准产品单位(并不是一个具体的商品)

​ 比如: 华为 P40 (商品详情页,规格和包装介绍)

​ 华为P40产品标准: cpu高通870, 尺寸6.7

==sku: strored keeping unit 进入库存储单位(表示的就是一个具体的商品)

​ 比如: 华为P40 红色,内存8G+256,表示一个具体的商品

4.2 前后端分离

前后端分离的目的: 实现前端和后台的数据不耦合,最终的效果是前后端都能够独立存在
前端人员开发: 独立开发前端代码
对于前端工程师:调用接口地址,接收json,解析json
后端人员开发: 独立开发后端代码
对于后端java工程师:提供业务的具体接口,响应json数据
后端人员通过swagger自动生成接口地址文档,
swagger使用参考地址: 点击访问swagger
在这里插入图片描述

4.3 Shiro和SpringSecurity权限校验框架的区别

相同点:
1:认证功能: 判断当前用户登录是否正确
2:授权功能: 如果用户登录成功,根据用户的角色把角色对应的权限数据(用户能够方位的资源)查询出来,赋值给当前用户.
3:加密功能
4:会话管理
5:缓存支持
6:rememberMe功能…
不同点:
优点:
1:Spring Security基于Spring开发,项目中如果使用Spring(SpringBoot)作为基础࿰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值