TEN------Springboot+SpringCloud

157 阅读7分钟

前言概念

集群/分布式/微服务/SOA是什么?\color{green}{集群/分布式/微服务/SOA是什么?}

集群:同一个业务,部署在多个服务器上(不同的服务器运行同样的代码,干同一件事)

分布式:一个业务分拆多个子业务,部署在不同的服务器上(不同的服务器,运行不同的代码,为了同一个目的)

CAP理论\color{green}{CAP理论}

C:数据一致性(consistency) [kənˈsɪstənsi]

    所有节点拥有数据的最新版本

A:可用性(availability)  [əˌveɪlə'bɪləti]

    数据具备高可用性

P:分区容错性(partition-tolerance)  [pɑːˈtɪʃn] [ˈtɒlərəns]

    容忍网络出现分区,分区之间网络不可达。

1、什么是 Springboot?为什么使用Springboot?
springboot就是Spring开源框架下的子项目,主要是简化了spring的使用难度,降低了对配置文件的要求,使得开发人员能够更容易得上手。

SpringBoot有很多的优点:

简化了Spring配置文件
没有XML文件的生成
内置TomCat
能够独立运行
简化监控

2、SpringBoot的核心配置文件有哪些?

SpringBoot的核心配置文件有application和bootstarp配置文件。

application文件主要用于Springboot自动化配置文件,格式为.properties  
bootstarp文件的格式为.yml  

3、spring boot 有哪些方式可以实现热部署(所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用)?
使用spring-boot-devtools,在项目的pom文件中添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

** 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?**

可以使用 个开发工具(DevTools)来实现(热部署)。通过这种依赖关系,您可以节省任何更改,嵌入式Tomcat 将重新启动

5、Spring Boot 中的监视器是什么?

Spring boot actuator [ˈæktjʊeɪtə]是 spring 启动框架中的重要功能之一。Spring boot 监视 器可帮助您访问生产环境中正在运行的应用程序的当前状态。

6、如何在自定义端口上运行 Spring Boot 应用程序?

为了在自定义端口上运行 Spring Boot 应用程序,您可以在application.properties 中指定端口,比如
server.port = 8090

7、如何使用 Spring Boot 实现分页和排序?

使用 Spring Boot 实现分页非常简单。使用 Spring Data-JPA 可以实现将可分页 的传递给存储库方法。

8、如何使用 Spring Boot 实现异常处理?

Spring 提供了一种使用 ControllerAdvice 处理异常的非常有用的方法。 我们通 过实现一个 ControlerAdvice 类,来处理控制器类抛出的所有异常

9、如何实现 Spring Boot 应用程序的安全性

为了实现Spring Boot的安全性,我们使用 spring-boot-starter-security 依赖项,并且必须添加安全配置。

10、 什么是 spring cloud?为什么需要spring cloud

Spring cloud 基于 Spring Boot 的集成应用程序,它利用Spring Boot的开发便利性简化了分布式系统基础设施的开发。
一个项目,拆分出多个模块以后,就会出现各种各样的问题,而SpringCloud提供了一整套的解决方案: 如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。

11、什么是微服务

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。
微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合。

12、微服务之间是如何通讯的?

第一种:远程过程调用(Remote Procedure Invocation)

直接通过远程过程调用来访问别的service。示例:REST、gRPC、Apache、Thrift

第二种:消息

使用异步消息来做服务间通信。服务间通过消息管道来交换消息,从而通信。示例:Apache Kafka、RabbitMQ

**13、Spring Cloud核心功能 **

Eureka:服务注册和发现[juˈriːkə]
Ribbon:负载均衡[ˈrɪbən]
Hystrix:断路器[hɪst'rɪks] 
Feign:一个REST客户端,目的是为了简化Web Service客户端的开发 [feɪn]
Zuul:服务网关
Config:分布式配置

14、springcloud 与dubbo有哪些区别?

相同点:

SpringCloud 和Dubbo可以实现RPC远程调用框架,可以实现服务治理。

不同点:

SpringCloud是一套目前比较全面微服务框架了,整合了分布式常用解决方案、服务注册中心Eureka、
负载均衡Ribbon、客户端调用工具Rest和Feign、服务保护(断路器)Hystrix、分布式配置中心Config、
网关Zuul,消息总线Bus等。

Dubbo内部实现功能没有SpringCloud强大,只是实现服务治理

15、请谈谈对SpringBoot 和SpringCloud的理解

SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开SpringBoot,属于依赖的关系

16、什么是 Eureka服务注册与发现

Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定位服务。功能类似于dubbo的注册中心,比如Zookeeper。

(想要实现一个服务注册中心的功能非常简单,只需要在项目的启动类EurekaServerApplication上
使用@EnableEurekaServer注解即可)

17、Eureka的基本架构是什么?
Eureka包含两个组件:

Eureka Server [ˈsɜːvə(r)]和 Eureka Client  

Eureka Server用作服务注册服务器。
EurekaClient是一个java客户端,用来简化与(Eureka Server)服务器的交互,
客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

18、作为服务注册中心,Eureka比Zookeeper好在哪里?

著名的CAP原则指出,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)这三个要素最多只能同时实现两点,不可能三者兼顾。

因此,Zookeeper 保证的是CP,Eureka 则是AP。

19、什么是 Ribbon
Ribbon是Netflix发布的开源项目,主要功能是提供客户端的负载均衡算法。负载均衡简单的说就是将用户的请求平摊的分配到多个服务上。常见的负载均衡有软件Nginx,LVS

20、什么是 Hystrix
在分布式系统里,许多服务不可避免的会调用失败,比如超时、异常等, Hystrix能够保证在一个服务出问题的情况下,不会导致整体服务失败,以提高分布式系统的弹性。
Hystrix “断路器”本身是一种开关装置,当Hystrix Command请求后端服务失败数量超过一定比例(默认50%),通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的FallBack(降级操作),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

21、什么是 Feign
Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。 简而言之:

Feign 采用的是基于接口的注解
Feign 整合了ribbon、 Hystrix

22、什么是 zuul?
Zuul 包含了路由转发和过滤器两个最主要的功能

23、什么是SpringCloud Config
SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持。