SpringCloud入门实战六

一:Springcloud之路由网关zuul

  1.  什么是zuul?
               

二:SpringCloud路由网关的基本配置

  1. 新建子模块microservicecloud-zuul-gateway-9527
                
  2. 在pom.xml中添加依赖
     
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>com.topcheer</groupId>
        <artifactId>microservicecloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
      </parent>
      <artifactId>microservicecloud-zuul-gateway-9527</artifactId>
      
      <dependencies>
      	 <!--添加zuul路由网关的依赖  -->
      	 <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency> 
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency> 
        <!--添加actuator依赖  -->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency> 
        <!--添加hystrix容错  -->
         <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-hystrix</artifactId>
        </dependency> 
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-config</artifactId>
        </dependency> 
        <!--这里我们引入自己自定义的api通用包,就可以使用Dept部门实体  --> 
         <dependency>
           <groupId>com.topcheer</groupId>
           <artifactId>microservicecloud-api</artifactId>
           <version>${project.version}</version>
    	</dependency>
    	<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-jetty</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-starter-test</artifactId>
    	</dependency>
    	<!--修改后立即热部署  -->
    	<dependency>
    	       <groupId>org.springframework</groupId>
    	       <artifactId>springloaded</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-devtools</artifactId>
    	</dependency>
      </dependencies>
    </project>

  3. 创建application.yml配置文件(注意:hosts文件中gateway-9527.com需要添加上)

    server:
      port: 9527 #设置端口为9527
      
    spring:
      application:
        name: microservicecloud-zuul-gateway
    
    eureka: #这个就是将8001服务端注册进入注册中心,下面的就是注册中心的注册地址
      client:
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
      instance: 
         instance-id: gateway-9527.com
         prefer-ip-address: true #访问路径可以显示IP地址     
     
    info:
      app.name: topcheer-microservicecloud
      company.name: com.topcheer
      build.artifactId: $project.artifactId$
      build.version: $project.version$   
       

  4. 创建启动类Zuul_9527_StartSpringCloudApp
     

  5. 测试
     a:首先启动3个Eureka集群,再启动一个服务提供类microservicecloud-provider-dept-8001,最后启动刚健的路由微服务
     b:效果
         
     c:不使用路由访问8001
         
     d:启用路由访问
           地址:http://myzuul.com:9527/microservicecloud-dept/dept/get/1
           http://域名反射:路由网关微服务端口/指定提供者微服务名称/提供者微服务接口路径
           

三:zuul路由访问映射规则

  1. 我们现在存在一个问题,我们现在通过网关访问提供者的微服务的路径是:
    http://myzuul.com:9527/microservicecloud-dept/dept/get/1,但是这个路径暴露了我们提供者微服务
    的名称,我们想要将这个路径包装一下。该如何操作了。
  2. 操作的步骤如下
     a:设置代理名称,修改路由网关微服务的application.yml
           
     b:效果
          
         但是我们发现原来的路径也能访问:
         
     c:我们现在需要将真实的路径忽略掉,只留代理的名称可以访问
          
     d:效果
          
         
     e:如果我们在实际项目中药忽略多个微服务名称可以使用下面的方式
          
     f:我们还可以为代理名称添加前缀
              
     效果:
        
           
                   

四:SpringCloud config之分布式配置中心

  1. 分布式系统面临的问题
         
  2. 简介config
         
        
     
  3. config可以做的事情
     
     

五:SpringCloud config服务端配置

  1. 首先我们需要使用自己的GitHub账户在GitHub上新建一个名为microservicecloud-config的新respository
               
  2. 由上一步获取SSH协议的git地址
     
  3. 本地硬盘目录上新建git仓库并clone
     我们的本地地址为:D:\Git-Springcloud
     
     我们使用命令将远程仓库克隆一份到本地:git clone GitHub - kangf897570/microservicecloud-config: microservicecloud-config demo
     
  4. 在本地仓库新建application.yml配置文件(注意:一定要以UTF-8的格式保存)
     
     内容:
      
  5. 将新建的这个application.yml文件推送到github上面
     
     
     
  6. 下面我们需要新建微服务,促使它可以连接GitHub并且获取配置文件信息
     ⑴创建子模块microservicecloud-config-3344
          
      ⑵在pom.xml中添加依赖
           
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>com.topcheer</groupId>
        <artifactId>microservicecloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
      </parent>
      <artifactId>microservicecloud-config-3344</artifactId>
      
      <dependencies>
         <!--config服务端依赖  -->
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
         </dependency>
         <!--避免Config的Git插件报错:org/eclipse/jgit/api/TransportConfigCallback  -->
          <dependency>
            <groupId>org.eclipse.jgit</groupId>
            <artifactId>org.eclipse.jgit</artifactId>
            <version>4.10.0.201712302008-r</version><!--$NO-MVN-MAN-VER$-->
         </dependency>
         <!--图形化监控  -->
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
         <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency> 
        <!--添加hystrix容错  -->
         <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-hystrix</artifactId>
        </dependency> 
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-config</artifactId>
        </dependency> 
        <dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-jetty</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-starter-test</artifactId>
    	</dependency>
    	<!--修改后立即热部署  -->
    	<dependency>
    	       <groupId>org.springframework</groupId>
    	       <artifactId>springloaded</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-devtools</artifactId>
    	</dependency>
      </dependencies>
    </project>

    ⑶创建application.yml文件
         

    ⑷创建启动类
         
    ⑸修改window下的hosts文件
       
    ⑹测试微服务是否可以获取GitHub下的配置文件
         a:启动3344微服务
         b:读取开发环境信息
               
         c:读取测试环境信息
               
        d:其他访问的路径方式
             
             

六:SpringCloud config客户端配置

  1. 在本地仓库新建microservicecloud-config-client.yml配置文件     
          
     内容:
      
  2. 将文件上传到GitHub上
     
  3. 新建子模块microservicecloud-config-client-3355客户端
     
  4. 在新建的子模块的pom.xml中添加依赖
     
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>com.topcheer</groupId>
        <artifactId>microservicecloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
      </parent>
      <artifactId>microservicecloud-config-client-3355</artifactId>
     <dependencies>
         <!--config客户端依赖  -->
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
         </dependency>
         <!--图形化监控  -->
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
         <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency> 
        <!--添加hystrix容错  -->
         <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-hystrix</artifactId>
        </dependency> 
        <dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-jetty</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-starter-test</artifactId>
    	</dependency>
    	<!--修改后立即热部署  -->
    	<dependency>
    	       <groupId>org.springframework</groupId>
    	       <artifactId>springloaded</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-devtools</artifactId>
    	</dependency>
      </dependencies>
    </project>

  5. 创建bootstrap.yml配置文件
     
     
     内容:
      

  6. 创建application.yml文件,注意:名称需要和bootstrap.yml中的一致(microservicecloud-config-client)
      

  7. 修改hosts文件
      

  8. 新建ConfigClientRest.java类,验证能否从GitHub上读取配置信息
     
     

  9. 创建我们的主启动类
     
     

  10. 测试,启动3344,和3355进行测试
     
     访问地址的组成:
     http://IP:从Github上读取指定环境的端口/controller方法路径
     
     GitHub上指定环境的内容:
     

七:SpringCloud Config之配置实战

  1.  需求
          
  2. 在git本地仓库创建microservicecloud-config-eureka-client.yml配置文件(这个是eureka注册中心的)
        
     内容:
     
  3. 在git本地仓库创建microservicecloud-config-dept-client.yml配置文件(这个是微服务提供者的)
     
     内容:(不同的环境,链接的数据库也不一样)
      
    spring: 
      profiles: 
        active: 
        - dev
    ---    
    server:
      port: 8001 #设置端口为8001
    spring:
      profiles: dev #开发环境
      application:
        name: microservicecloud-config-dept-client 
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource #设置当前数据源
        driver-class-name: org.gjt.mm.mysql.Driver #设置mysql驱动包
        url: jdbc:mysql://localhost:3306/cloudDB01 #设置数据库名称
        username: root
        password: 897570
        dbcp2:
          min-idle: 5 #设置数据库连接池的最小维持连接数
          initial-size: 5 #设置初始化链接数
          max-total: 5 #设置最大连接数
          max-wait-millis: 200 #设置链接获取的最大超时时间    
    mybatis:
      config-location: classpath:mybatis/mybatis.cfg.xml  #设置mybatis配置文件所在的路径
      type-aliases-package: com.topcheer.springcloud.entities #扫描所有实体类所在包
      mapper-locations:
      - classpath:mybatis/mapper/**/*.xml #扫描mybatis的映射文件  
    
    eureka: #这个就是将8001服务端注册进入注册中心,下面的就是注册中心的注册地址
      client:
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka/
      instance: 
        instance-id: dept-8001.com
        prefer-ip-address: true #访问路径可以显示IP地址     
     
    info:
      app.name: topcheer-microservicecloud
      company.name: com.topcheer
      build.artifactId: $project.artifactId$
      build.version: $project.version$ 
    ---
    server:
      port: 8001 #设置端口为8001
    spring:
      profiles: test #开发环境
      application:
        name: microservicecloud-config-dept-client 
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource #设置当前数据源
        driver-class-name: org.gjt.mm.mysql.Driver #设置mysql驱动包
        url: jdbc:mysql://localhost:3306/cloudDB02 #设置数据库名称
        username: root
        password: 897570
        dbcp2:
          min-idle: 5 #设置数据库连接池的最小维持连接数
          initial-size: 5 #设置初始化链接数
          max-total: 5 #设置最大连接数
          max-wait-millis: 200 #设置链接获取的最大超时时间    
    mybatis:
      config-location: classpath:mybatis/mybatis.cfg.xml  #设置mybatis配置文件所在的路径
      type-aliases-package: com.topcheer.springcloud.entities #扫描所有实体类所在包
      mapper-locations:
      - classpath:mybatis/mapper/**/*.xml #扫描mybatis的映射文件  
    
    eureka: #这个就是将8001服务端注册进入注册中心,下面的就是注册中心的注册地址
      client:
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka/
      instance: 
        instance-id: dept-8001.com
        prefer-ip-address: true #访问路径可以显示IP地址     
     
    info:
      app.name: topcheer-microservicecloud
      company.name: com.topcheer
      build.artifactId: $project.artifactId$
      build.version: $project.version$   
       
  4. 下面我们将这刚刚创建的两个文件上传到GitHub上
     
  5. 创建Config版的eureka服务端microservicecloud-config-eureka-client-7001
  6. 在pom.xml添加依赖
     
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>com.topcheer</groupId>
        <artifactId>microservicecloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
      </parent>
      <artifactId>microservicecloud-config-eureka-client-7001</artifactId>
     <dependencies>
     	<!--添加SpringCloudConfig配置  -->
     	<dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-config</artifactId>
        </dependency> 
        <!--添加eureka-server服务端依赖  -->
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency> 
        <!--修改后立即热部署  -->
    	<dependency>
    	       <groupId>org.springframework</groupId>
    	       <artifactId>springloaded</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-devtools</artifactId>
    	</dependency>
      </dependencies>
    </project>
  7. 创建主启动类Config_Git_EurekaServerApplication.java
     
     
  8. 创建bootstrap.yml文件
     
     内容:
     
  9. 创建application.yml文件
     
     内容:
      
  10. 下面我们把3344,以及刚建立的config版的7001注册中心启动起来,测试一下
     
       
  11. 创建Config版的dept微服务microservicecloud-config-dept-client-8001
     
     
  12. 在pom.xml中添加依赖
     
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>com.topcheer</groupId>
        <artifactId>microservicecloud</artifactId>
        <version>0.0.1-SNAPSHOT</version>
      </parent>
      <artifactId>microservicecloud-config-dept-client-8001</artifactId>
    <dependencies>
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-config</artifactId>
        </dependency> 
        <!--添加actuator监控信息完善  -->
        <dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-starter-actuator</artifactId>
    	</dependency>
    	<!--将微服务provider注册进eureka  -->
    	<dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency> 
    	  <!--这里我们引入自己自定义的api通用包,就可以使用Dept部门实体  --> 
         <dependency>
           <groupId>com.topcheer</groupId>
           <artifactId>microservicecloud-api</artifactId>
           <version>${project.version}</version>
    	</dependency>
    	<dependency>
    	       <groupId>junit</groupId>
    	       <artifactId>junit</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>mysql</groupId>
    	       <artifactId>mysql-connector-java</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>com.alibaba</groupId>
    	       <artifactId>druid</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>ch.qos.logback</groupId>
    	       <artifactId>logback-core</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.mybatis.spring.boot</groupId>
    	       <artifactId>mybatis-spring-boot-starter</artifactId>
    	</dependency>
    	<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-jetty</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-starter-test</artifactId>
    	</dependency>
    	<!--修改后立即热部署  -->
    	<dependency>
    	       <groupId>org.springframework</groupId>
    	       <artifactId>springloaded</artifactId>
    	</dependency>
    	<dependency>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-devtools</artifactId>
    	</dependency>
      </dependencies>
    </project>

  13. 创建bootstrap.yml文件
     
     

  14. 创建application.yml文件
      

  15. 将之前的8001业务代码拷贝过来,还有mybatis配置文件
     

  16. 好了,下面我们可以进行测试了,首先我们需要启动3344,7001,以及最后的8001

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值