zoukankan      html  css  js  c++  java
  • spring cloud demo

    spring cloud

    Spring Cloud是建立在Spring Boot上面的


    spring cloud组件

    Eureka  注册中心 [juˈriːkə]
    Feign    调用 [feɪn]      声明式REST调用
    Hystrix  容错 [hɪst'rɪks]
    Ribbon  负载均衡
    Zuul    网关
    Config   远程配置
    Sleuth


    创建Eureka注册中心

    1、IDEA:new-->project-->Spring Initializr-->输入项目名-->Spring Cloud Discovery-->Eureka Server
    Discovery [dɪˈskʌvəri] 发现
    2、在启动类添加注解@EnableEurekaServer
    3、配置application.application

    # 自己的端口号
    server.port=9990
    # 自己是注册中心,发布自己的地址,让别人找到自己
    # 集群配置,http://127.0.0.1:9991/eureka,http://127.0.0.1:9992/eureka
    eureka.client.service-url.defaultZone=http://127.0.0.1:9990/eureka/
    # 是否把当前项目注册到注册中心,注册中心客户端项目设置为true,此项目是注册中心服务端
    eureka.client.register-with-eureka=false
    # 默认是true,注册中心集群同步数据,这里使用单机方式,所以关闭
    eureka.client.fetch-registry=false
    # 安全配置
    spring.security.user.name=root
    spring.security.user.password=root
    View Code

    4、springboot引入spring-boot-starter-security做安全校验后,自动开启CSRF安全认证,任何一次服务请求默认都需要CSRF 的token,而Eureka-client不会生成该token,故启动时会报如上错误。

    在启动类里添加如下内部类代码:

    @EnableWebSecurity
    static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().ignoringAntMatchers("/eureka/**");
            super.configure(http);
        }
    }
    View Code

    5、启动,测试

    这个地址 http://127.0.0.1:9990/eureka 是给注册中心客户端使用的
    浏览器直接访问http://127.0.0.1:9990


    创建服务提供者

    1、IDEA:new-->project-->Spring Initializr-->输入项目名-->Spring Cloud Discovery-->Eureka Discovery Client
    2、在启动类添加注解@EnableEurekaClient
    3、配置application.application

    # 自己的端口
    server.port=8800
    # 把自己注册到注册中心后,别人用这个名字引用我
    spring.application.name=user-provider
    # 注册到哪里,即注册中心地址
    eureka.client.service-url.defaultZone=http://root:root@127.0.0.1:9990/eureka/
    logging.level.root=trace
    View Code

    4、启动,测试

    浏览器访问http://127.0.0.1:9990以查看服务提供者


    创建服务消费者

    1、IDEA:new-->project-->Spring Initializr-->输入项目名-->Spring Cloud Discovery-->Eureka Discovery Client
    2、在启动类添加注解@EnableEurekaClient和@EnableFeignClients
    3、配置application.application

    # 自己的端口
    server.port=7770
    spring.application.name=user-consumer
    # 注册到哪里,即注册中心地址
    eureka.client.service-url.defaultZone=http://root:root@127.0.0.1:9990/eureka/
    # 开启容错
    feign.hystrix.enabled=true
    # 负载均衡,默认是轮询,不需要配置;这里配置的是随机策略
    user-provider.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
    logging.level.root=trace
    View Code

    4、启动,测试

    浏览器访问http://127.0.0.1:9990以查看服务提供者


    创建网关

    1、IDEA:new-->project-->Spring Initializr-->输入项目名-->Spring Cloud Routing-->Zuul
    2、在启动类添加注解@EnableZuulProxy
    3、配置application.application

    server.port=6660
    # spring.application.name=zuul 在bootstrap.properties文件里已经配置了
    # 注册中心配置
    eureka.client.service-url.defaultZone=http://root:root@127.0.0.1:9990/eureka/
    # 网关配置,拦截访问路径以/user/开头的
    zuul.routes.user-consumer=/user/**
    # 负载均衡默认就是开启的
    # ribbon.eureka.enable=true
    # 请求处理的超时时间
    ribbon.ReadTimeout=120000
    # 请求连接的超时时间
    ribbon.ConnectTimeout=30000
    View Code

    4、启动,测试

    a. 浏览器访问http://127.0.0.1:9990以查看服务提供者
    b. 浏览器访问http://127.0.0.1:6660/user/hello


    创建 config server

    1、在码云创建一个新项目,两个分支master和feature1,两个分支下建立一个文件夹,文件夹下建立一个demo.properties:
    2、IDEA:new-->project-->Spring Initializr-->输入项目名-->Spring Cloud Config-->Config Server
    3、在启动类添加注解@EnableConfigServer
    4、配置application.application

    server.port=5550
    spring.application.name=config-server
    # config server也可以不用注册到注册中心
    eureka.client.service-url.defaultZone=http://127.0.0.1:9990/eureka/
    spring.cloud.config.server.git.uri=https://gitee.com/zhangrunwei/spring-cloud-config-demo.git
    spring.cloud.config.server.git.username=码云手机号
    spring.cloud.config.server.git.password=码云密码
    spring.cloud.config.server.git.search-paths=码云上配置文件所在的文件夹名
    View Code

    5、启动测试

    一、浏览器测试
    1. config server项目启动后,浏览器访问方式:http://xxx:9090/文件名/版本(dev、pro)/分支
    2. 项目名、文件夹在配置文件里已经配置了,这里只需提供文件名、版本、分支名
    3. http://localhost:5550/demo/dev 没指定分支,那么默认就是master分支
    4. http://localhost:5550/demo/dev/feature1 访问feature1分支
    二、config client读取远程配置,此次使用网关模块做为config client
    1. 在config client的bootstrap.properties里配置
    bootstrap.properties比application.properties文件级别更高; bootstrap.properties文件可以给application.properties文件做准备配置

    spring.application.name=zuul
    # config server address + file name + profile(dev、pro) + feature
    # config server 地址 + 文件名 + 版本 + 分支
    spring.cloud.config.uri=http://localhost:5550
    spring.cloud.config.name=demo
    spring.cloud.config.profile=dev
    spring.cloud.config.label=master
    # spring.cloud.config.label=feature1
    View Code
  • 相关阅读:
    hdu 4107 Gangster 线段树(成段更新)
    hdu 3037 Saving Beans (lucas定理)
    hdu 3944 DP? (Lucas 定理)
    hdu 5038 Grade 水
    ASP.NET Core 配置 MVC
    ASP.NET Core 静态文件
    ASP.NET Core 异常和错误处理
    ASP.NET Core 中间件
    ASP.NET Core 项目配置 ( Startup )
    ASP.NET Core 基本项目目录结构
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/12926645.html
Copyright © 2011-2022 走看看