zoukankan      html  css  js  c++  java
  • spring boot和spring cloud

    什么是微服务

            以前的模式是 所有的代码在同一个工程中 部署在同一个服务器中 同一个项目的不同模块不同功能互相抢占资源

            微服务 将工程根据不同的业务规则拆分成微服务 微服务部署在不同的机器上 服务之间进行相互调用

            Java微服务的框架有 dubbo(只能用来做微服务),spring cloud(提供了服务的发现,断路器等)

    Spring Boot 的自动配置是如何实现的?

    这个是因为@SpringBootApplication 注解的原因,我们知道 @SpringBootApplication 看作是 @SpringBootConfiguration@EnableAutoConfiguration@ComponentScan 注解的集合。

    • @EnableAutoConfiguration:启用 SpringBoot 的自动配置机制
    • @ComponentScan: 扫描被@Component (@Service,@Controller)注解的bean,注解默认会扫描该类所在的包下所有的类。
    • @SpringBootConfiguration:允许在上下文中注册额外的bean或导入其他配置类

    @EnableAutoConfiguration是启动自动配置的关键

    1.https://github.com/Snailclimb/springboot-guide/blob/master/docs/interview/springboot-questions.md

    springboot+springcloud相关

    https://blog.csdn.net/panhaigang123/article/details/79587612

    https://blog.csdn.net/qq_40117549/article/details/84944840

    什么是springboot

            用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 

                    创建独立的spring引用程序 main方法运行

                    嵌入的Tomcat 无需部署war文件

                    简化maven配置

                    自动配置spring添加对应功能starter自动化配置

                    

    springboot常用的starter有哪些

            spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持

            spring-boot-starter-data-jpa 数据库支持

            spring-boot-starter-data-redis redis数据库支持

            spring-boot-starter-data-solr solr支持

            mybatis-spring-boot-starter 第三方的mybatis集成starter

            

    springboot自动配置的原理

            在spring程序main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration

            会自动去maven中读取每个starter中的spring.factories文件  该文件里配置了所有需要被创建spring容器中的bean

    springboot读取配置文件的方式

            springboot默认读取配置文件为application.properties或者是application.yml

            

    springboot集成mybatis的过程

            添加mybatis的starter maven依赖

                    <dependency>

                            <groupId>org.mybatis.spring.boot</groupId>

                            <artifactId>mybatis-spring-boot-starter</artifactId>

                            <version>1.2.0</version>

                    </dependency>

            在mybatis的接口中 添加@Mapper注解

            在application.yml配置数据源信息

    springboot如何添加【修改代码】自动重启功能

            添加开发者工具集=====spring-boot-devtools

    springcloud如何实现服务的注册和发现

            服务在发布时 指定对应的服务名(服务名包括了IP地址和端口) 将服务注册到注册中心(eureka或者zookeeper)

            这一过程是springcloud自动实现 只需要在main方法添加@EnableDisscoveryClient  同一个服务修改端口就可以启动多个实例

            调用方法:传递服务名称通过注册中心获取所有的可用实例 通过负载均衡策略调用(ribbon和feign)对应的服务

    ribbon和feign区别

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

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

    Ribbon和Feign的区别:

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

            1.启动类使用的注解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。

            2.服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。

            3.调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。

            Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可,

            不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。

            

    springcloud断路器的作用

            当一个服务调用另一个服务由于网络原因或者自身原因出现问题时 调用者就会等待被调用者的响应 当更多的服务请求到这些资源时

                    导致更多的请求等待 这样就会发生连锁效应(雪崩效应) 断路器就是解决这一问题

                    断路器有完全打开状态

                            一定时间内 达到一定的次数无法调用 并且多次检测没有恢复的迹象 断路器完全打开,那么下次请求就不会请求到该服务

                    半开

                            短时间内 有恢复迹象 断路器会将部分请求发给该服务 当能正常调用时 断路器关闭

                    关闭

                            当服务一直处于正常状态 能正常调用 断路器关闭

     https://blog.csdn.net/zl1zl2zl3/article/details/83715633  大体概括的

    https://blog.csdn.net/Kevin_Gu6/article/details/88547424  内容详细有代码示例

    spring cloud 主要组件介绍和应用场景(很不错)

    https://www.jianshu.com/p/8d68455d4a00 

    spring cloud 的主要组件

    服务发现——Netflix Eureka
    服务间的负载均衡——Netflix Ribbon
    断路器——Netflix Hystrix
    服务网关——Netflix Zuul
    分布式配置——Spring Cloud Config

    • Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里

    • Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台

    • Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求

    • Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题

    • Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务

    启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:

    @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。

    @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:             @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })

    @ComponentScan:Spring组件扫描。

  • 相关阅读:
    SoapUI 使用笔记
    git 使用笔记(二)
    git 使用笔记(一)
    jquery 拓展
    hdu 1024 Max Sum Plus Plus (DP)
    hdu 2602 Bone Collector (01背包)
    hdu 1688 Sightseeing (最短路径)
    hdu 3191 How Many Paths Are There (次短路径数)
    hdu 2722 Here We Go(relians) Again (最短路径)
    hdu 1596 find the safest road (最短路径)
  • 原文地址:https://www.cnblogs.com/flgg/p/12158683.html
Copyright © 2011-2022 走看看