springCloud框架搭建详解
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
做一套增删改查
- LAMP 系统服务搭建过程详解
- 阿里云ESC(Windows Server 2012 40G系统盘+10G数据盘)搭建IIS+ASP.NET运行环境详解
- 搭建MVP+Retrofit+RxJava框架详解
- SSH2框架搭建 和 配置文件详解
- Angular2从搭建环境到开发步骤详解
- golang实战使用gin+xorm搭建go语言web框架restgo详解3 系统常用配置参数
- golang实战使用gin+xorm搭建go语言web框架restgo详解9 session、日志、鉴权、验证码等
- 详解Docker学习笔记之搭建一个JAVA Tomcat运行环境
- Maven搭建SSH的pom的代码详解
- centos7.2环境中kettle环境搭建及任务推送配置详解
- 搭建JavaWeb服务器步骤详解
- 八步详解Hibernate的搭建及使用
- Linux之samba服务器的搭建及详解
- vue2 项目开发详解-搭建健壮的项目环境
- Linux中搭建一个ftp服务器详解
- Struts2框架搭建详解
- Android socket实现原理详解 服务端和客户端如何搭建
- eclipse搭建SSH框架详解
- Windows 7中本地SVN搭建问题详解
- J2EE环境的搭建之三—数据源的发布与详解 推荐