欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringCloud自学记录

程序员文章站 2024-03-02 16:18:22
...

一, 创建SpringBoot项目  毕竟Cloud基础是这个嘛  
从  https://start.spring.io/ 可以快捷创建项目  直接用maven的  基础版的boot无需选择任何的插件默认就好 方便后面测试添加上web组件


SpringCloud自学记录

嘛默认的  然后 ctrl + 回车 下载  解压  导入  等待maven下载jar 你就会得到

SpringCloud自学记录

 这么个玩意

简单些一个Controller 

SpringCloud自学记录

配置基本的端口和项目名(我用的是yml格式需要将原本的application文件格式手动改一下)

server:
  servlet:
  #  定义项目的访问访问路径
    context-path: /consumer
    #定义端口号
  port: 7001

在主类里面起动

SpringCloud自学记录

页面*问

SpringCloud自学记录

 基本的SpringBoot 就好了  下面需要加上Cloud 了 SpringCloud 本质是一整套分布式的组合  其中包括了安全熔断等多种机制  先来熟悉Eureka  分布式的核心之一  多个项目可以相互调用 

Eureka  主要身份是生产者,消费者,服务中心 看名字就懂 一个提供服务一个使用服务一个给记录谁能干什么

 

 

生成项目的时候添加组件

SpringCloud自学记录

然后测试功能需要对应三个身份分别创建三个项目  eureka  服务中心  consumer 消费者   product  生产者

创建三次导入 然后得到三个项目 

SpringCloud自学记录

在 consumer 起动类上添加
@EnableEurekaClient
@EnableFeignClients

俩注释  一个是基本的分布式  另一个则是feign 代理本地接口给远程调用的


server:
  servlet:
  #  定义项目的访问访问路径
    context-path: /consumer
    #定义端口号
  port: 7001
spring:
  application:
  #定义应用名称,即服务名称
    name: consumer-server
eureka:
  instance:
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://localhost:5060/eureka/eureka

配置文件

product  的配置

@EnableEurekaClient
@EnableFeignClients

一样的两个注释

spring:
  application:
    name: product-server
server:
  port: 7002
  servlet:
    context-path: /product
eureka:
  instance:
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://localhost:5060/eureka/eureka

差不多的配置 

eureka  配置

这个不一样  

@EnableEurekaServer

表示自己是服务中心

server:
  port: 5060
  servlet:
    context-path: /eureka
spring:
  application:
    name: eureka-server
eureka:
  client:
    fetch-registry: false
    register-with-eureka: true
    service-url:
      defaultZone:  http://localhost:5060/eureka/eureka
  instance:
    prefer-ip-address: true
  server:
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 10000

 是否注册自己  心跳时间等  这里就不细说了

起动三个  然后访问eureka  查看是否有注册到

 

顺利的话能看到三个

SpringCloud自学记录

表示你配置完成

接下来带测试代码

先来 product 的 很简单 接口直接返回

SpringCloud自学记录

然后是consumer 先写接口 注入  调用Service 返回

SpringCloud自学记录

关键是在 Service 里

SpringCloud自学记录

直接将 product 当实现类使用 

使用 @FeignClient 指向服务中心中 product

name 写的是product 在服务中心注册的名字 对应配置文件中的name 
path 则是自己配的项目的路径 context-path

@RequestMapping 则是将名字为 xxxx的接口绑定到对应接口上

 

测试 先测试 7002 端口的 product

SpringCloud自学记录

没问题  在来用 consumer 调用 product  的接口

SpringCloud自学记录

通过  至此 eureka 算是基本完了 

然后 在下一步  zuul 网关  

网关嘛  所有请求都会先走这里  方便管理 验证过滤等一系列操作  但是额外消耗的资源和对网关服务器的高要求也是必要的优劣就不说了  开始配置

SpringCloud自学记录

跟之前一样 创建项目  多添加一个zuul
在起动类上添加 

@EnableZuulProxy

表示自己是一个网关

server:
  port: 6001
  servlet:
    context-path: /
#服务的名称
spring:
  application:
    name: zuul-gateway

#指定注册中心地址
eureka:
  instance:
    prefer-ip-address: true
  client:
    serviceUrl:
      defaultZone: http://localhost:5060/eureka/eureka
      stripPrefix: false

#自定义路由映射
zuul:
  routes:
    consumer-server: /consumer/**
    product-server: /product/**
  ignored-services: "*"

添加配置文件  注册服务

起动  然后你会发现有四个服务了

SpringCloud自学记录

然后直接在url里用zuul访问我们的consumer 的getaaa

SpringCloud自学记录

成功 

这里有个超级大的坑,踩的我欲仙欲死  到现在还没搞明白我到底是哪里有问题  

我预期的路径应该是  http://127.0.0.1:6001/consumer/getaaa

但是实际路径是 http://127.0.0.1:6001/consumer/consumer/getaaa
研究了半天 路径组成应该是  http://网址:端口/网关项目名/配置匹配路径/目标项目名/目标项目方法

将项目名 网关项目名配置为/后  得到 http://127.0.0.1:6001/consumer/getaaa

不知道有没有别的配置可以不讲目标项目名配置为/时还能达到目标效果的 研究中 希望有大佬能给个提示

-----------------------------------------------------------------------------------------2020-06-10

 

相关标签: 自习 分布式