这篇文章主要讲解了“spring-cloud有哪些作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“spring-cloud有哪些作用”吧!
Spring cloud沿用了spring boot的启动方式
普通服务用
@EnableDiscoveryClient
@SpringBootApplication
注册中心
Spring cloud微服务,需要有一个注册环境eureka-server,每个服务都将注册到该服务中去。
配置如下,
eureka-server的maven引入
application.properties配置文件
在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为(单点注册中心,后集群部署会有不同)
生产者需要将服务发布到注册中心
注册到注册中心:
eureka.client.serviceUrl.defaultZone=http://localhost:7070/eureka/
消费者调用服务
定义接口,将service-B以接口的形式定义好,这个service-B就是微服务在注册中心定义的服务名称
相同的服务,以同一个id,不同端口,注册到注册中心,在调用时,spring-cloud通过ribbon实现服务调度。Ribbon会通过服务的负荷,优先调用负荷底的服务。
注册中心通过相互注册的形式,spring cloud拥有服务传递的能力,从而能够实现,注册中心,集群配置
配置一:
假设我们有3个注册中心,我们将peer1、peer2、peer3各自都将serviceUrl指向另外两个节点。换言之,peer1、peer2、peer3是两两互相注册的。启动三个服务注册中心,并将compute-service的serviceUrl指向peer1并启动,可以获得如下图所示的集群效果。
配置二
依然假设我们有3个注册中心,我们将peer1的serviceUrl指向peer2,peer2的指向peer3,peer3的指向peer1,此时peer1、peer2、peer3通过单向边形成环。分别启动peer1、peer2、peer3,并访问信息页面,我们可以找到下面的规律,peer1成为了peer2的分片节点,peer2成为了peer3的分片节点,peer3则成为了peer1的分片节点,再将compute-service的serviceUrl指向peer1并启动。放别访问peer1、peer2、peer3的信息页面,可以发现compute-service均被peer2和peer3同步过去了,所以单向边也能进行服务的传播与同步。此时,我们断开peer2,可以看到peer3中的compute-service消失了。重新开启peer2并断开peer3,可以看到peer2依然能同步到compute-service。所以我们可以得出结论,Eureka Server的传播与同步是具备方向性的。
两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现Eureka Server具备单方面有指向的服务传播与同步机制,在一些对服务发现有限制的情况下,可以利用这样的机制进行服务注册与发现的的单向控制
1.断路器机制
断路器很好理解, 当Hystrix Command请求后端服务失败数量超过一定比例(默认50%), 断路器会切换到开路状态(Open). 这时所有请求会直接失败而不会发送到后端服务. 断路器保持在开路状态一段时间后(默认5秒), 自动切换到半开路状态(HALF-OPEN). 这时会判断下一次请求的返回情况, 如果请求成功, 断路器切回闭路状态(CLOSED), 否则重新切换到开路状态(OPEN). Hystrix的断路器就像我们家庭电路中的保险丝, 一旦后端服务不可用, 断路器会直接切断请求链, 避免发送大量无效请求影响系统吞吐量, 并且断路器有自我检测并恢复的能力.
2.Fallback
Fallback相当于是降级操作. 对于查询操作, 我们可以实现一个fallback方法, 当请求后端服务出现异常的时候, 可以使用fallback方法返回的值. fallback方法的返回值一般是设置的默认值或者来自缓存.
3.资源隔离
在Hystrix中, 主要通过线程池来实现资源隔离. 通常在使用的时候我们会根据调用的远程服务划分出多个线程池. 例如调用产品服务的Command放入A线程池, 调用账户服务的Command放入B线程池. 这样做的主要优点是运行环境被隔离开了. 这样就算调用服务的代码存在bug或者由于其他原因导致自己所在线程池被耗尽时, 不会对系统的其他服务造成影响. 但是带来的代价就是维护多个线程池会对系统带来额外的性能开销. 如果是对性能有严格要求而且确信自己调用服务的客户端代码不会出问题的话, 可以使用Hystrix的信号模式(Semaphores)来隔离资源.
异步调用调用消息,无需等待消息返回。
1.定义消费者服务为可异步调用服务
定义方法为异步方法
满足以上两点,在消费者服务调用时候,就实现了异步操作。
当微服务越来越多时,系统的配置文件就会越来越多,通过spring cloud提供的config-server来集中管理配置文件信息。Config -server默认的将配置文件通过git存放。支持远程获取,以远程git配置仓库为例
1.在oschina创建一个git配置仓库,里面包含各种配置文件,包括,lovnx-dev.properties,lovnx-test.properties。
2.创建config-server服务
设置远程仓库信息
普通服务调用配置服务
这样就获取到了lovnx-dev.properties配置文件信息
应用的监控功能,对于分布式系统非常重要。如果把分布式系统比作整个社会系统。那么各个服务对应社会中具体服务机构,比如银行、学校、超市等,那么监控就类似于警察局和医院,所以其重要性显而易见。这里说的,监控服务的部署及运行情况,和断路器监控不一样,这里主要是监控服务及服务器的各项指标
感谢各位的阅读,以上就是“spring-cloud有哪些作用”的内容了,经过本文的学习后,相信大家对spring-cloud有哪些作用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。