SpringCloud自学记录

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


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

 这么个玩意

简单些一个Controller 

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

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

在主类里面起动

页面上访问

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

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

 

 

生成项目的时候添加组件

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

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

在 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  查看是否有注册到

 

顺利的话能看到三个

表示你配置完成

接下来带测试代码

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

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

关键是在 Service 里

直接将 product 当实现类使用 

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

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

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

 

测试 先测试 7002 端口的 product

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

通过  至此 eureka 算是基本完了 

然后 在下一步  zuul 网关  

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

跟之前一样 创建项目  多添加一个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: "*"

添加配置文件  注册服务

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

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

成功 

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

我预期的路径应该是  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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值