首页 > 编程语言 > 详细

SpringCloud

时间:2020-04-28 23:48:13      阅读:66      评论:0      收藏:0      [点我收藏+]

什么是SpringCloud?

  SpringCloud是一系列框架的有序集合,简单来说就是一套分布式解决方案

SpringCloud主要组件

  一·服务发现组件——Eureka

    Ⅰ.引入依赖父工程pom.xml定义SpringCloud版本 

 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.M9</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

   Ⅱ.eureka服务端模块pom.xml引入依赖

 <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
  </dependencies>

   Ⅲ.eureka服务端模块编写配置文件

server:
  port: 6868 #服务端口
eureka:
  client:
    registerWithEureka: false #是否将自己注册到Eureka服务中,本身就是所有无需注册
    fetchRegistry: false #是否从Eureka中获取注册信息
    serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址
      defaultZone: http://127.0.0.1:${server.port}/eureka/
  server:
    enable-self-preservation: false # 关闭Eureka保护机制

    Ⅳ.编写启动类

      在启动类中加入 @EnableEurekaServer 注解即可

    Ⅴ.eureka客户端模块

      1.添加依赖

<dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

        2.编写配置文件

server: 
  port: 9003
spring: 
  application:  
    name: tensquare-qa #指定服务名
eureka:
  client:
    service‐url:
      defaultZone: http://localhost:6868/eureka  # Eureka服务端地址
    fetch-registry: true  # 是否拉取服务列表
    register-with-eureka: true  # 是否将当前微服务注册到Eureka服务端
  instance:
    prefer‐ip‐address: true # 注册服务时,注册ip地址

      3.给启动类添加 @EnableEurekaClient 注解即可

 

  二·服务调用组件——Feign

       Ⅰ.在要调用其他模块的模块添加如下依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

      Ⅱ.添加 @EnableFeignClients@EnableDiscoveryClient 注解到引导类

      Ⅲ.在该模块中创建接口

        例子:远程调用tensquare-base模块中的 findById 方法

@FeignClient("tensquare-base")
public interface LabelClient {

    @RequestMapping(value = "/label/{labelId}",method = RequestMethod.GET)
    public Result findById(@PathVariable("labelId") String labelId);

}

 

  三·熔断器——Hystrix

    为什么使用熔断器?

      以免一个微服务的故障可能会导致许多微服务出问题,熔断器就是为解决此问题而生

     Hystrix熔断器原理

     技术分享图片

 

  四·服务网关Zuul

    什么是服务网关zuul?

     介于客户端和服务器端之间的中间层,所有的外部请求都会先经过的微服务网关,且使前端调用更方便,但简单来说就是过滤器。

       技术分享图片

       Ⅰ.网关客户端依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>

      Ⅱ.配置文件

server:
  port: 9011
spring:
  application:
    name: tensquare-web #指定服务名
eureka:
  client:
    serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址
      defaultZone: http://127.0.0.1:6868/eureka/
  instance:
    prefer-ip-address: true
zuul:
  routes:
    tensquare-base: # 项目名称,自由填写
      path: /base/** #配置请求URL的请求规则
      serviceId: tensquare-base #指定Eureka注册中心中的服务id
    tensquare-qa: # 项目名称,自由填写
      path: /qa/** #配置请求URL的请求规则
      serviceId: tensquare-qa #指定Eureka注册中心中的服务id
    tensquare-friend: # 项目名称,自由填写
      path: /friend/** #配置请求URL的请求规则
      serviceId: tensquare-friend #指定Eureka注册中心中的服务id
    tensquare-user: # 项目名称,自由填写
      path: /user/** #配置请求URL的请求规则
      serviceId: tensquare-user #指定Eureka注册中心中的服务id

 

 

 

    Ⅲ.引导类添加 @EnableZuulProxy 注解

      Ⅳ.继承ZuulFilter类

 

@Component
public class WebFilter extends ZuulFilter {

    @Override
    public String filterType() {
        return "pre";//前置过滤器
    }

    @Override
    public int filterOrder() {
        return 0;//优先级
    }

    @Override
    public boolean shouldFilter() {
        return true;//是否打开过滤器
    }

    @Override
    public Object run() throws ZuulException {
        //过滤器业务代码
        System.out.println("过滤器执行了");
 
        return null;
    }
}

 

  五.集中配置组件SpringCloudConfig

    为什么要集中管理配置文件?

      太多的配置文件不方便后期维护,所以要集中管理配置文件。

    Ⅰ.将配置文件提交到到git上

        文件命名规则: 

           {application}-{profile}.yml   或   {application}-{profile}.properties

            application为应用名称

            profile指的开发环境(用于区分开发环境,测试环境、生产环境等)

            例如:base-dev.yml

      Ⅱ.配置中心微服务引入依赖

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
</dependency>

       Ⅲ.配置文件

server:
  port: 12000
spring:
  application:
    name: tensquare-config
  cloud:
    config:
      server:
        git: # 指定从git仓库中加载配置
          uri: https://gitee.com/${路径}l/tensquare-config.git # 指定仓库所在路径

    .启动类加入 @EnableConfigServer 注解即可

     Ⅴ.配置客户端

        1.导入依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

        2.编写配置文件bootstrap.yml

spring:
  cloud:
    config:
      name: base  # 配置文件名称前缀
      profile: dev # 配置文件名称后缀
      label: master # 加载git仓库哪个分支中的配置
      uri: http://127.0.0.1:12000 # 指定从哪个微服务加载配置

 

  六.消息总线SpringCloudBus

    消息总线是什么?

       就是当更新git中的配置文件时,如果配置了消息总线就可以不重启微服务即自动更新

 

SpringCloud

原文:https://www.cnblogs.com/zddsl/p/12798143.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!