目录
SpringCloud核心组件
SpringCloud优势
SpringCloud和Dubbo区别
SpringCloud和SpringBoot区别
SpringCloud核心组件
Eureka: 服务启动时,EurekaClient会将服务注册到EurekaService,EurakeClient从EurekaService拉取注册表,获取服务地址信息.
Feign:接口定义了@FeignClient注解,Feign就会针对这个接口创建一个动态代理,要是调用哪个服务的接口,通过动态代理根据你在接口上的@RequestMapping等注解,来动态构造出你要请求的服务的地址,最后针对这个地址,发起请求、解析响应。如果被调用的接口注册在了多个机器上,怎么确定调用哪台机器?所有的请求都落在一台机器了上怎么办?考虑如何把请求均摊在多台机器上,做到负载均衡,并获取其中一台机器的地址信息,Ribbon组件解决了这个问题。
Ribbon:发起请求的时候,Ribbon会从Eureka Client里面获取到对应的服务注册表,知道服务都部署在了那些机器上,监听哪些端口,基于Ribbon做到负载均衡,使用默认的Round Robin算法从多个机器中选择一台。同一时间大量请求积压在某一个服务上,然后服务就挂掉了怎么办?Hystrix组件来解决啊
Hystrix: Hystrix是隔离、熔断以及降级的一个框架.发起的请求是通过Hystrix的线程池来走,不同的服务走不同的线程池,实现了不同的服务调度隔离,避免服务雪崩的问题 比如在5分钟内请求某个服务直接就返回了,不要去走网络请求卡住几秒钟,这个过程,就是所谓的熔断。降级:每次调用某个服务,你就在数据库里记录一条消息,说给某某用户增加了多少金额等等相关数据,因为支付服务挂了,导致没操作成功!这样等服务恢复了,可以根据这些记录人工或者写个定时任务操作一下。这个过程,就是所谓的降级。
Zuul:微服务网关,负责网络路由。
什么事网络路由?
一般微服务架构中都必然会设计一个网关在里面,像android、ios、pc前端、微信小程序、H5等等,不用去关心后端有几百个服务,就知道有一个网关,所有请求都往网关走,网关会根据请求中的一些特征,将请求转发给后端的各个服务。而且有一个网关之后,还有很多好处,比如可以做统一的降级、限流、认证授权、安全,等等。
SpringCloud优势
来源于Spring开源框架,Spring在企业级开发框架已经很成熟了,可以保证后续的更新、完善。
微服务治理框架,各种组件很全面,开发更方便。集成了熔断、均衡负载、服务中心的各种平台功能
SpringCloud活跃度高,教程丰富,遇到问题容易找到解决方案。
SpringCloud对于中小型互联网公司来说是一种福音,因为这类公司往往没有实力或者没有足够的资金投入去开发自己的分布式系统基础设施,使用SpringCloud一站式解决方案能在从容应对业务发展的同时大大减少开发成本。同时,随着近几年微服务架构和Docker容器概念的火爆,也会让SpringCloud在未来越来越“云”化的软件开发风格中立有一席之地,尤其是在目前五花八门的分布式解决方案中提供了标准化的、全站式的技术方案, 意义可能会堪比当前Servlet规范的诞生,有效推进服务端软件系统技术水平的进步。
SpringCloud和Dubbo区别
SpringCloud:底层是REST调用(HTTP),能够为项目架构直接提供一整套解决方案。Dubbo:底层是RPC调用,只能作为项目架构的核心和基石,完整的项目架构解决方案还需要借助其他技术。
SpringCloud和SpringBoot区别
SpringBoot适合于快速开发单个微服务,SpringCloud是一个基于SpringBoot实现的云应用开发框架;SpringBoot专注于快速、方便集成的单个个体,SpringCloud是关注全局的服务治理框架。 SpringCloud从技术架构上降低了对大型系统构建的要求,使我们以非常低的成本(技术或者硬件)搭建一套高效、分布式、容错的平台,但SpringCloud也不是没有缺点,小型独立的项目不适合使用。



