基本springboot 2.0版本 spring-cloud的使用

基本springboot 2.0版本 spring-cloud的使用
Spring Cloud与Spring Boot版本匹配关系
Spring Cloud
Spring Boot
Finchley
兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x
Dalston和Edgware
兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x
Camden
兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x
Brixton
兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x
Angel
兼容Spring Boot 1.2.x
 
从Spring Cloud与Spring Boot版本匹配关系能够看出,若是项目使用的spring boot 版本在 2.0以上,那么必须使用spring cloud 版本 为
Finchley.RELEASE版本 这个版本与之前的D版本有一些区别,下面主要讲的就是spring cloud F版本的简单使用
我这里也本身搭了一套关于spring-cloud的基本使用的demo,下面我来详细介绍下该项目
其中gitHub地址为: https://github.com/yihec/springCloud

 

 

 
首先介绍下各个module的用途:
1.首先是eureka-server 这是一个服务注册中心,全部的服务都会在此上面管理,在Application 上增长@EnableEurekaServer注解便可, Eureka服务端能够部署成为高可用,每个服务器都会复制注册的服务状态到其余服务器,而后打开网址http://localhost:1001/能够看到各个注册的服务信息
 
2.config-server 配置中心,将各个服务配置保存在git,用于统一话管理配置文件,在 Application 上增长@EnableConfigServer注解便可。
3.server-1 和 server-2 这两个都是服务生产者,里面除了本地服务外,另外在server-1中使用Feign 调用了server-2的接口,Feign封装了HTTP调用服务方法,使得客户端像调用本地方法那样直接调用方法,相似Dubbo中暴露远程服务的方式,区别在于Dubbo是基于私有二进制协议,而Feign本质上仍是个HTTP客户端。 另外还使用了一个Spring Cloud 断路器 Hystrix, 如下是关于Hystrix的详细介绍:
<1>服务降级:
在调用接口的时候,能够实现一个fallback方法, 当请求后端服务出现异常的时候, 可使用fallback
方法返回的值.fallback方法的返回值通常是设置的默认值或者来自缓存.
<2>断路器:
当Hystrix Command请求后端服务失败数量超过必定比例(默认50%), 断路器会切换到开路状态(Open).
这时全部请求会直接失败而不会发送到后端服务. 断路器保持在开路状态一段时间后(默认5秒),
自动切换到半开路状态(HALF-OPEN). 这时会判断下一次请求的返回状况, 若是请求成功, 断路器切回闭路
状态(CLOSED),不然从新切换到开路状态(OPEN). 即有自我检测并恢复的能力.
<3> 资源隔离:
在Hystrix中, 主要经过线程池来实现资源隔离. 一般在使用的时候咱们会根据调用的远程服务划分出多个线
程池. 例如调用产品服务的Command放入A线程池, 调用帐户服务的Command放入B线程池. 这样作的主要
优势是运行环境被隔离开了. 这样就算调用服务的代码存在bug或者因为其余缘由致使本身所在线程池被耗
尽时, 不会对系统的其余服务形成影响. 可是带来的代价就是维护多个线程池会对系统带来额外的性能开
销. 若是是对性能有严格要求并且确信本身调用服务的客户端代码不会出问题的话, 可使用Hystrix的信号
模式(Semaphores)来隔离资源.
 
另外当服务愈来愈多的时候,这时候就须要用到服务链路追踪(Spring Cloud Sleuth)
在spring Cloud为F版本的时候,已经不须要本身构建Zipkin Server了,只须要下载jar便可,下载地址:
https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/ 而后使用java -jar启动,
再打开http://localhost:9411/的界面,我在server-1 中调用了server-2的接口,而后点击依赖分析,能够看到详细的调用状况
 
 
4:service-zuul 路由网关 (zuul)服务,zuul 是微服务架构的不可或缺的一部分,提供动态路由,监控,安全,权限认证等服务。能够在这里面进行统一的好比异常处理,权限认证等等。其实跟spring中的uri 过滤器有点像,首先全部的请求第一时间通过这里,而后经过 过滤处理,跳转不一样的页面
 

5.消息总线(Spring Cloud Bus) Spring Cloud Bus 将分布式的节点用轻量的消息代理链接起来。它能够用于广播配置文件的更改或者服务之间的通信,也能够用于监控。主要就是说,当修改了配置中心的配置以后,之前通常来讲须要从新启动项目,而如今不须要进行重启就能够实现配置刷新。java

1.引入spring-cloud-starter-bus-amqp
2.配置rabbitmq信息
3.项目中引入@RefreshScope 注解,而后启动项目
此时rabbitmq管理页面,会自动建立一个 topic 类型的 Exchange
 

 

接着修改配置中心,也就是git仓库里面的配置信息,而后调用http://localhost:2001/actuator/bus-refresh/ 记得要使用POST方式,最好在postman里面调用,浏览器中是不行的,而后页面自动刷新配置信息,具体实现能够参考 server-1 中的代码git

6:hystrix-dashboard 断路器监控(Hystrix Dashboard) 在微服务架构中为例保证程序的可用性,防止程序出错致使网络阻塞,出现了断路器模型。断路器的情况反应了一个程序的可用性和健壮性,它是一个重要指标。Hystrix Dashboard是做为断路器状态的一个组件,提供了数据监控和友好的图形化界面。
启动server-1项目,输入网址http://localhost:2001/hystrix,
 
在SpringBoot 2.0版本中会出现Unable to connect to Command Metric Stream.异常信息,此时须要配置 servlet
 
 
 
而后 在界面依次输入:http://localhost:2001/hystrix.stream 、2000 、aa(标题,随便取);点肯定。而后调用接口输入网址 http://localhost:2001/HelloServer2 ,会出现下面页面,这个就是服务调用错误的提示
最后启动server-2,接口调用成功
以上就是关于spring-cloud的一些简单使用,其中有疑问或者不对的地方,但愿你们留言指出,感谢!
参考资料:https://blog.csdn.net/forezp/article/details/70148833/
https://gitee.com/didispace/SpringCloud-Learning
相关文章
相关标签/搜索