springcloud简介(⼀)
⼀、什么是spring cloud
百度百科的解释为,Spring Cloud是⼀系列框架的有序集合。它利⽤的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中⼼、消息总线、负载均衡、断路器、数据监控等,都可以⽤Spring Boot的开发风格做到⼀键启动和部署。Spring Cloud 并没有重复制造轮⼦,它只是将各家公司开发的⽐较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进⾏再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了⼀套简单易懂、易部署和易维护的分布式系统开发⼯具包。
简单来说,SpringCloud是官⽅封装好的⼀整套分布式微服务的技术解决⽅案,我们也称之为微服务全家桶。
⼆、什么是微服务架构
微服务架构风格是⼀种将⼀个单⼀应⽤程序开发为⼀组⼩型服务的⽅法,每个服务运⾏在⾃⼰的进程中,服务间通信采⽤轻量级通信机制(通常⽤HTTP资源API)。这些服务围绕业务能⼒构建并且可通过全⾃动部署机制独⽴部署。这些服务共⽤⼀个最⼩型的集中式的管理,服务可⽤不同的语⾔开发,使⽤不同的数据存储技术。
微服务架构应该具备以下特性:
每个微服务可独⽴运⾏在⾃⼰的进程⾥。
⼀系列独⽴运⾏的微服务共同构建起整个系统。
每个服务为独⽴的业务开发,⼀个微服务只关注某个特定的功能,例如订单管理,⽤户管理等。
微服务之间通过⼀些轻量的通信机制进⾏通信,例如通过RESTful API进⾏调⽤。
可以使⽤不同的语⾔与数据存储技术
全⾃动部署机制
三、微服务架构的优点
易于开发和维护
⼀个微服务只会关注⼀个特定的业务功能,所以它业务清晰,代码量较少。
单个微服务启动较快
单个微服务代码量较少,所以启动会⽐较快。
局部修改容易部署
单体应⽤只要有修改,就得重新部署整个应⽤,微服务解决了这样的问题。
技术栈不受限
在微服务架构中,可以结合项⽬业务及团队的特点,合理地选择技术栈。
按需伸缩
可根据需求,实现细粒度的扩展。
三、SpringCloud 和 SpringBoot的关系
SpringCloud选择SpringBoot作为技术底层,对⽬前各家公司开发的⽐较成熟、经得起实际考验的服务框架组合起来,进⾏⼆次封装,屏蔽掉了复杂的配置和实现原理。让我们使⽤SpringCloud像使⽤SpringBoot⼀样的简单。
SpringCloud和SpringBoot的版本选择
四、常⽤的组件
1.Netflix Eureka - 服务发现
微服务系统是由多个单⼀职责的服务单元组成,服务之间的相互依赖成⽹状,所以该系统需要注册中⼼来统⼀管理微服务实例,⽅便查看每个服务的健康状态。利⽤Eureka组件可以很轻松的实现服务的注册和发现的功能。
Spring Cloud Eureka是Spring Cloud Netflix项⽬下的服务治理模块。有两个组件组成:Eureka服务端和Eureka客户端。
Eureka服务端作⽤服务注册中⼼,⽀持集部署。
Eureka客户端是⼀个java客户端,⽤来处理服务注册和发现。springboot框架的作用
2.Netflix Ribbon - 客户端负载均衡
Ribbon 主要提供客户侧的软件负载均衡算法。
说明:Spring Cloud Ribbon是⼀个基于HTTP和TCP的客户端负载均衡⼯具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以轻松的将⾯向服务的REST模板请求⾃动转换成客户端负载均衡的服务调⽤。
3.Netflix Hystrix - 断路器
断路器,保护系统,控制故障范围。
说明:为了保证其⾼可⽤,单个服务通常会集部署。由于⽹络原因或者⾃⾝的原因,服务并不能保证100%可⽤,如果单个服务器出现问题,调⽤这个服务就会出现线程阻塞,此时若⼤量的请求涌⼊,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务于服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务器故障的“”“雪崩”效应。为解决这种雪崩效应,引进熔断组件Hystrix,当出现故障后会⾃动剔除服务实列。Hystrix除了⼀些基本的熔断器,还能实现服务降级、服务限流的功能,并提供了界⾯展⽰健康状态的功能。
4.Netflix Zuul - 服务⽹关
api⽹关,路由,负载均衡等多种作⽤
说明:微服务系统通过将资源以API接⼝的形式暴露给外界来提供服务,在微服务系统中,API接⼝资源通常是由服务⽹关统⼀暴露,内部服务不直接对外提供API资源的暴露。类似nginx,⽅向代理的功能,不过netflix⾃⼰增加了⼀些配合其他组件的特性。
5.Spring Cloud Config - 分布式配置
配置管理
说明:在实际的开发过程中,每个服务都有⼤量的配置⽂件,列如数据库配置、⽇志输出级别配置等,⽽往往这些配置在不同的环境中也是不⼀样的。随着服务的增加,配置⽂件的管理也是⼀件⾮常复杂的事。在微服务架构中,需要有统⼀管理配置⽂件的组件。Spring Cloud Config提供服务端和客户端。服务器存储后端的默认实现使⽤git,因此它轻松⽀持标签的配置环境,可以访问作⽤于管理内部的各种⼯具。这个是静态的,得配合Spring Cloud Bus实现动态的配置更新。
6.Feign
声明式远程调度组件。在微服务架构中,⼀个业务可能需要多个服务协同完成,这时候涉及到服务之间的内部调⽤。可以通过Feign来远程调度以他服务。
7.Spring Cloud Bus
事件、消息总线,⽤于在集(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
五、总结
到这⾥为⽌,spring cloud的⼀些基本知识相信读者已经差不多了解了,下⾯的系列博客,将会写⼀些简单的demo来实现上述组件的功能,不涉及原理,只展⽰简单使⽤,然后结合代码再来理解各个组件的作⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论