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
上一篇: (Java)IO流(字节流+字符流)
下一篇: Go 语言 数组的使用