1. springCloud框架
是springboot的升级框架,其中包含很多子项目
eureka注册中心, feign消费者,Hystrix熔断器,Zuul路由,
Config全局配置中心,Bus消息总线,负载均衡策略
底层基于httpClient实现,发布一个controller类
spring家族:
spring Framework5.0 --》 springboot2.0 --》springcloud Finchley.SR2
springboot(微服务)相对于spring 约定优于配置2.
创建springboot项目勾选cloud discovery --》Eureka Server 配置Eureka注册服务 Eureka Server
server:
port: 8761 #设置端口号 #配置eureka
eureka:
instance:
hostname: localhost #配置实例地址
client:
register-with-eureka: false
fetch-registry: false #阻止eureka自身项目注册到注册中心
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
server:
enable-self-preservation: false # 关闭自我保护机制 , 默认为true开启
2.1在启动类上加@EnableEurekaServer //启用eureka服务端 3.配置生产者 Eureka注册发现 Eureka Discover
server:
port: 8764 #可以配置多个每个服务不同的端口号 #配置实例名称
spring:
application:
name: springcloud-login #配置多个实例名称,springCloud集群 eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka #要和eureka注册服务的路径保持一致 3.1在启动类上加@EnableEurekaClient //启用eureka客户端
4.idea启动多个实例
Edit Configurations--> single instance only 只能启动单个实力 将勾去掉
Edit Configurations--> Allow running in parallel 允许并行启动 将勾选上 5.配置消费者Ribbon
spring
创建项目选择 Web Eureka Discover Ribbon
配置文件
server:
port: 8080 spring:
application:
name: springcluodribbon eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka 5.1 在启动类上加@EnableEurekaClient 注解
5.2 在启动类中将RestRestTemplate注入spring中
// 将RestTemplate注入到spring容器中
// LoadBalanced负载均衡默认为轮询
// 通过注入在controller中就可以使用调用生产者实例
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
5.3 在controller中注入RestTemplate
@Autowired
private RestTemplate restTemplate;
5.4 消费者调用生产者
restTemplate.getForObject("http://生产者实例名/请求生产者的Controller方法", 返回值类型.class);
5.5 @RequestBody可以将请求体中的JSON字符串绑定到相应的bean上
6. 配置Feign客户端
6.1 在配置文件中
server:
port: 8080 spring:
application:
name: springcloud-feign eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
6.2 在启动类上加注解
@EnableEurekaClient
@EnableFeignClients
如果启动类不在根目录则需要扫面包(basePackages = "com.jk.*")
6.3 创建service接口,并加上注解
@FeignClient("生产者实例名") //指定生产者实例名
6.4 在接口里面创建方法
// 定义抽象方法,抽象方法没有方法体
// 方法的定义和生产者controller中的方法保持一致
// 包括请求的方式,传入的参数,方法定义和返回参数
@GetMapping("/selectUser/{id}")
public User selectUser(@PathVariable("id") Integer userId);
7. 配置Hystrix熔断器
7.1 创建熔断器类实现FeignClient接口
7.2 添加注解@Compent 将熔断器类注入spring容器中
7.3 注意添加@RequestMapping("/error")保持唯一
7.4 开启熔断器机制
feign:
hystrix:
enabled: true
8. 配置SpringCloud Config 全局配置中心
8.1 在git上创建配置文件远程仓库
8.2 在将仓库目录克隆到本地,在目录中创建三个配置(环境名:dev开发(development environment)、test测试(testing environment)、pro正式(production environment))
配置文件名称定义:实例名称-环境名称.yml
配置信息如下:
# testing environment
server:
port: 8092 eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
8.3 创建config server项目选择Config Server 和 Eureka Discover
8.4 在配置中配置信息如下:
server:
port: 8081 spring:
application:
name: springcloud-config
cloud:
config:
server:
git:
# 配置git仓库路径,注意路径为HTTP
uri: https://github.com/liuc12580/springcloud-config.git
# 配置文件路径
search-paths: /
# git账号 当创建的仓库为private则需要账号密码
username:
# git密码
password:
# 分支
label: master
# 往eureka注册中心中注册config server实例
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
8.5 在启动上添加注解
@EnableEurekaClient
@EnableConfigServer
8.6 配置server client项目,以生产者项目为例
将配置文件的名称改为bootstrap.yml
8.7 配置bootstrap.yml文件
spring:
application:
name: springcloudprovider-login
cloud:
config:
# 分支
label: master
# 环境
profile: test
# config server 服务发现
discovery:
# 开启服务发现
enabled: true
# 配置config server 服务实例
service-id: springcloud-config 8.8 任务:
搭建springCloud框架(eureka注册中心、eureka注册发现生产者、feign+hystrix消费者、config全局配置中心)
配置全局配置中心自己为开发环境,组员1为测试环境,组员2为正式环境
整合redis、mongodb、rabbitmq
做一套增删改查
springcloud 父项目搭建 搭建springcloud架构
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【springCloud搭建】一、创建springCloud项目
记录一下近两年接触的微服务框架的知识,一是为了日后需要搭建框架时方便查阅,二是与大家分享下我所了解的知识,如有不对的或描述未清楚的地方欢迎大家在评论区进行留言接下来我会教大家如何搭建一个微服务框架和继承一些项目中常用到的组件先带大家看下我搭建的demo结构这些向大家介绍一下各个模块的分工api模块主要是服务与服务之间调用的接口外放包,service_one_api和service_two_api分别对应service_one和service_two服务的接口外放包,后面会在继承feign
spring cloud java spring maven xml