Spring Cloud学习总结--Spring Cloud的介绍 (一)

作为spring全家桶的一员,spring cloud既可以整合各种微服务,又能兼容Spring Boot框架,所以作为一个不甘于继续当咸鱼的菜鸟,一定是要接受spring cloud的一波洗礼了。

什么是Spring Cloud

要先介绍什么是spring cloud,就要先介绍微服务的概念。首先微服务第一次出现在一位叫Martin Fowler攻城狮的 Microservices的博文当中,作为一个受够了单体机开发的年轻人,他用了几个晚上苦思冥想,提出了一种去中心化开发的全新思路,即所有的服务不用全部集中在一个单体机上,而是分功能的集中在不同的服务器上。

他认为一个网站分为客户端界面(一般是由前端Html,JavaScript 或者前端框架 Vue,React组成)、数据库(oracle,mysql等数据库或者单纯excel存储数据也可以)以及服务端,一个大型的项目在版本迭代的过程中,势必要重新部署服务器,而重新部署服务器会带来很多风险,总结来说

1.新服务中的配置有可能更改老服务的配置而导致老服务器的失效。
2.越来越臃肿的代码会直接冲击原来的体系架构。
3. 臃肿的代码导致重构越来越难,加新功能所花费的时间也是指数级增加
4.一个臃肿的应用,势必会消耗更多的程序员以及投资方的资金。

所以一个主导去中心化的微服务架构就诞生了,Martin他设想每一个微服务都部署在一个单独的服务器上,服务器之间由 HTTP API或者由轻量级的消息总线交换信息,当客户传递业务给后端的时候,客户端通过解析业务的逻辑从而得知哪一个服务器可以处理这种业务,从而将业务发给特定的微服务服务器。但是如何管理和维持这些微服务,就变成了了一个让人头疼的问题,

Spring Cloud 的优点

Spring Cloud的出现就是解决了这些让人头疼的问题,他做为一个微服务的框架,他支持HTTP的 RESTful API 维持微服务之间的通信,同时他也支持利用轻量级消息总线,如RedditMQ维持微服务之间的信息传递, 这样他就避免了RPC的频繁调用,RPC虽然被应用在许多语言中作为一个远程调用函数的方式,但是他的调用时会存在频繁调用的问题,这样会大大加重微服务之间的通信任务。

同时Spring cloud 为了实现微服务中的分布式应用,他通过路由的方式管理了微服务之间的通行模式,从而能凭借路由算法在最快的时间或者消耗最少资源的情况下找到系统所需要的微服务。

他也采用eureka实现弱数据一致性实现微服务分布式架构,在介绍弱数据一致性之前,我们需要了解在分布式系统的CAP理论,CAP理论首次被Brewer提出,他是三个英文词组的缩写,即英文 consistency, availablity 和 partition tolerance,一致性,可用性和分区容忍性。一致性是指数据在每一个服务器上一致,不会存在数据更新不及时导致服务器的数据不一样的情况。可用性是指快速,能够跟得上客户的请求。分区容忍性是指发生通信故障时,集群被分割为多个无法通信的分区时,集群仍然可用。CAP理论指出这三种理想情况一个系统最多只能同时实现其中的两个。而spring cloud为了追求服务的快速反应和可持续化扩展,他采用了弱一致性的原则,在处理过程中spring cloud可以允许数据不一致。spring cloud既然牺牲了数据一致性,其在数据可用性和数据集群性则大放光彩,这点也赋予了spring cloud 特性,即他适合对数据不怎么严谨的系统。
在这里插入图片描述
spring cloud 作为一个分布式系统,他有自己的容错机制,即Hystrix,首先我们来介绍什么是容错机制,容错机制是指当故障发生时,分布式系统可以通过某种方式继续工作,也就是说,在有错误的情况下,不影响分布式系统的大部分功能。我们常常用ARSM来形容一个系统的健壮性,即availability,reliability, safty 和 maintainability, 即可用性,可靠性,安全性和可维护性,可用性是指在一定的时间范围内或在一定的系统条件下,系统出错后任然可以运行,可靠性是指系统的健壮性,即他的连续不出错运行时间,安全性是指系统的核心功能不能出错,而可维护性是指出错后系统可被恢复的难易程度。

Hystrix 它采用了断路器来实现了这一个功能,提高程序的健壮性。断路器是一种随时监听微服务之间的通信质量的装置,如果通信质量不满足系统需求,断路器则需求断开链路,所有后续请求均立即返回错误, 而不是向运行状况不佳的服务发出请求。Hystrix通过断路器实现了系统的高可用性和安全性。Hystrix采用command命令对一个服务进行多次的探寻,从而得出其错误率,在服务器断开重连后,command机制可以持续不断的测试服务器的性能,使得系统的可维护性大大提高。

Spring Cloud 常用组件介绍

Sping Netflix:由Netflix所做的开源组件,是spring cloud 的核心功能,其中有Eureka,Hystrix, Ribbon,Zuul和Archaius
spring cloud configure: 配置管理工具,实现配置文件的云存储。
Spring cloud Bus:组播工具,各个微服务的协调器
Spring Cloud Cluster: 针对 zooKeeper,Redis等的分布式系统中的选举算法的实现,通过算法我们可以得到第一个接受到信息的结点
Spring cloud consul: 服务发现与配置管理的工具
等等组件
将会在后面的学习总结中一一介绍这些组件的基本功能和实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值