springcloud中有很多组件,第一步先引入springcloud的版本控制依赖,之后再进行各个组件的配置与测试,springcloud的版本为:Finchley.SR2。
注意:由于springcloud构建于springboot之上,因此使用springcloud的组件时需要结合springboot的版本,springboot版本与springcloud的版本对应关系如下:
上图中第一列为springcloud的版本,第二列为springboot的版本,请根据自己的springboot版本进行搭建。
由于版本在不断更新,因此请前往查看最新版本对应详情,官网传送门:https://spring.io/projects/spring-cloud,进入后查看页面最下方内容就可看到。
在父pom中引入springCloud的版本约束依赖,如下:
org.springframework.cloud
spring-cloud-dependencies
Finchley.SR2
pom
import
这样的目的在于在引入springCloud的各组件的时候,将会有统一版本的约束,无需我们自己进行版本的依赖,同时要注意springCloud版本是在springboot之上构建的,引入springCloud时需考虑版本的依赖关系。
1.2配置eureka服务端
创建新的eureka的moudle,在pom中引入eureka服务端依赖,如下所示:
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
编写application.yml,配置eureka服务端,如下所示:
eureka:
client:
registerWithEureka: false #是否将自己注册到Eureka服务中,本身就是所有无需注册
fetchRegistry: false #是否从Eureka中获取注册信息
serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址
defaultZone: http://127.0.0.1:${server.port}/eureka/
启动类加注解:@EnableEurekaServer
1.3配置eureka客户端
子模块引入依赖:
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
启动类加注解:
@EnableEurekaClient
@EnableDiscoveryClient
aplication.yml添加如下信息,用户服务注册与发现:
spring:
application:
name: roleDemo-userRolePermission
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:6666/eureka
1.4feign的远程服务调用
在要调用的模块中添加依赖:
org.springframework.cloud
spring-cloud-starter-openfeign
启动类添加服务调用注解:
@SpringBootApplication
@EnableDiscoveryClient
@EnableEurekaClient
@EnableFeignClients
public class FeignApplication {
public static void main(String[] args) {
SpringApplication.run(FeignApplication.class);
}
}
application配置:
#eureka注册
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:6666/eureka
spring:
#配置微服务名称,用户服务注册与发现
application:
name: roleDemo-feign
server:
port: 8081
编写要调用的接口:
@FeignClient("roleDemo-userRolePermission")
public interface UserClient {
@RequestMapping(value = "user/findAll", method = RequestMethod.GET)
List findAll();
}
编写要调用该接口的类:
@RestController
@RequestMapping("/feign")
public class FeignController {
@Autowired
private UserClient userClient;
@RequestMapping("/feignUserFindAll")
public List feignUserFindAll(){
return userClient.findAll();
}
}
测试访问编写的调用类,返回调用的接口的提供的数据。
1.5feign自带的hystrix熔断器
在要调用的模块中的application中开启熔断器:
#开启熔断器
feign:
hystrix:
enabled: true
创建写好的调用接口类的实现类
在写好的调用接口上添加,fallback = UserClientImpl.class ,意思是当调用失败时执行熔断操作,走该实现类的方法。
1.6网关
这里的常见网管有两种spring自己的gateway,还有Netflix的开源网关,微服务网关将解决一下问题;
# 客户端会多次请求不同微服务,增加客户端的复杂性
# 存在跨域请求,在一定场景下处理相对复杂
# 认证复杂,每一个服务都需要独立认证
# 难以重构,随着项目的迭代,可能需要重新划分微服务,如果客户端直接和微服务通
信,那么重构会难以实施
# 某些微服务可能使用了其他协议,直接访问有一定困难
1.7配置中心服务端
添加依赖
org.springframework.cloud
spring-cloud-config-server
配置文件
#eureka注册
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:6666/eureka
spring:
#配置微服务名称,用户服务注册与发现
application:
name: roleDemo_config
#配置中心连接码云
cloud:
config:
server:
git:
uri: 自己配置中心的地址,可以为码云,github
server:
port: 12000
#开启熔断器
feign:
hystrix:
enabled: true
启动类添加注解
@EnableConfigServer //开启配置服务
启动成功,http://localhost:12000/文件名称,即可查看。
1.8配置中心客户端
添加依赖
org.springframework.cloud
spring-cloud-config-client
或者
org.springframework.cloud
spring-cloud-starter-config
修改配置文件application.yml为bootstrap.yml,修改内容为:
spring:
cloud:
config:
name: base
profile: dev
label: master
uri: http://127.0.0.1:12000
将application.yml内容复制粘贴到码云仓库
重新启动,即可正常访问。
1.9消息总线
1.9.1配置中心服务端
添加依赖
org.springframework.cloud
spring‐cloud‐bus
org.springframework.cloud
spring‐cloud‐stream‐binder‐rabbit
修改application.yml文件,添加如下内容:
rabbitmq:
host: 192.168.184.135
management: #暴露触发消息总线的地址
endpoints:
web:
exposure:
include: bus‐refresh
1.9.2配置客户端
添加依赖
org.springframework.cloud
spring‐cloud‐bus
org.springframework.cloud
spring‐cloud‐stream‐binder‐rabbit
org.springframework.boot
spring‐boot‐starter‐actuator
码云配置文件添加内容
rabbitmq:
host: 192.168.184.135
postman测试 Url: http://127.0.0.1:12000/actuator/bus-refresh Method:
post