更新时间:2019年7月17日
复制代码
springCloud走到了如今,已经初步在国内有了必定的市场,固然,2018年出了新闻,springCloud的配套技术,Hystrix和Eureka已经中止更新了,理由是说现有的技术已经足够支持当前的开发需求,因此再也不继续更新,只进行维护。web
这实在是让我感受有点伤,感受SpringCloud都没有学好,太多的组件都不是很了解,忽然之间关键的好几个组件都不更新了是什么鬼。spring
可是,虽然Hystrix和Eureka已经中止更新了,虽然springCloud有被影响到,可是你们彻底能够转向到Consul、ZooKeeper、Etcd等开源中间件上去嘛,由于涉及到的是springCloud自己来讲,使用的是什么组件它其实也并不关心,组件的使用权力全权操控在用户的手里。后端
所以,虽然springCloud遭受了惊天巨变,可是咱们仍然不能够放弃它,由于它是嫡传的是纯正的spring家族的新兴表明,血统纯正表明的就是能够无缝融合spring阵营中的全部的开发工具和传统习惯。设计模式
接下来,让咱们开始学习springCloud吧。springboot
Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。bash
它利用 Spring Boot 的开发便利性简化了分布式系统的开发,好比服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减小了各模块的开发成本。网络
springCloud在最初的时候,在国内的市场占有率并不高,固然到如今为止也不是很高,恰巧在springCloud兴起的时候,dubbo也中止了更新,因此springCloud有了容身之地,可是在前年dubbo开始恢复了更新,并且在三个月内疯狂的发布了四个维护版本,而springCloud紧接着在不久以后,NetFlix的Eureka和Hystrix中止了更新,更加对当前很差的形势雪上加霜,很多的小厂都投入到了dubbo的怀抱。架构
固然dubbo也是能够和springCloud一块儿使用,由于Dubbo关注于服务治理这块而且之后也会继续往这个方向去发展。Spring Cloud关注的是微服务治理的生态。由于微服务治理的方方面面都是它所关注的内容,服务治理也只是微服务生态的一部分而已。所以能够大胆的判定,Dubbo将来会在服务治理方面更为出色,而 Spring Cloud 在微服务生态上面无人能敌。mvc
固然这只是网络上一部分人的设想,在实际状况中是市面上同时使用springCloud和dubbo的状况仍是少,阿里出身的大量的创业者都选择直接使用dubbo。负载均衡
在网络上看见一篇博文,感受对springCloud的优缺点介绍的很是仔细,我就不作总结了,直接转载过来。
1.集大成者,Spring Cloud 包含了微服务架构的方方面面。
2.约定优于配置,基于注解,没有配置文件。
3.轻量级组件,Spring Cloud 整合的组件大多比较轻量级,且都是各自领域的佼佼者。
4.开发简便,Spring Cloud 对各个组件进行了大量的封装,从而简化了开发。
5.开发灵活,Spring Cloud 的组件都是解耦的,开发人员能够灵活按需选择组件。
复制代码
1.项目结构复杂,每个组件或者每个服务都须要建立一个项目。
2.部署门槛高,项目部署须要配合 Docker 等容器技术进行集群部署,而要想深刻了解 Docker,
学习成本高。
复制代码
很多的朋友,在学习springCloud的时候,都在思索,在spring这个你们庭里面,srpingCloud和springMVC以及springboot的关系。
让咱们先来总结一下这四者的定义。
一个轻量级的控制反转(IoC)和面向切面(AOP)的容器,Java 开发框架。
是基于Servlet 的一个MVC框架主要解决WEB开发的问题。
SpringMVC是等同于咱们所说的spring+MVC。MVC是什么呢,是C(controller控制器)将V(view视图、用户客户端)与M(model模块,业务)三者分开。
业内常见的mvc模式的开发框架有Struts1,Struts2等。spring做为专业的开发web项目的开源框架,springMvc为内部的一个模块环节,一样采起mvc设计模式。
在spring你们族中,由于spring发展的愈来愈好,而后到了开发项目的时候,发现须要配置的东西也愈来愈多,甚至有的时候,开发的实际业务所花费的时间尚未配置花费的时间多,这个时候,springboot应运而生。
springboot主要就是把一些以前须要开发人员手动配置的东西直接封装好了,提供了默认的配置,减小了大量的xml配置文件,并且对第三方的技术进行了很好的封装和整合,提供了大量第三方接口。
Spring Boot的核心思想就是约定大于配置,这一样也是springCloud的核心思想。
Spring Cloud为分布式系统快速构建行业统一特征模式的应用提供了一个行之有效的解决工具箱,诸如配置管理、服务发现、熔断器、智能路由、微服务代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话以及集群状态等,经过各分布式微服务组件的实现以及协调使用,开发者可以快速构建出运行良好的服务。
springCloud就是在以springboot开发为基础的时候,提供的一套成熟的可靠的,简单易维护的微服务分布式开发方案。 (拆分业务,微服务整合)
SpringCloud既然是一套分布式服务治理的框架,那么它自己不会提供具体功能性的操做,更专一于服务之间的通信、熔断、监控等。所以就须要不少的组件来支持一套功能,至关于管理多个springBoot框架的单体微服务。
固然,以上内容的目的是为了让你们更加了解这四者之间的联系,因此并无详细的介绍这四者。实际状况固然要比我说的要更加复杂。
先给你们看一张图片,图片来自:@王璐-Louise
服务发现——Netflix Eureka
客服端负载均衡——Netflix Ribbon
断路器——Netflix Hystrix
服务网关——Netflix Zuul
分布式配置——Spring Cloud Config
复制代码
主要流程:
一、外部或者内部的非 Spring Cloud目都统一经过API网关(Zuul)来访可内部服务.
二、网关接收到请求后,从注册中心( Eureka)获取可用服务
三、由 Ribbon进行均负载后,分发到后端的具体实例
四、徹服务之间经过 Feign进行通讯处理业务
五、 Hystrix负责处理服务超时熔断
六、 Turbine监控服务间的调用和焠断相关指标
复制代码
今天的学习就到此为止,明天咱们继续学习springCloud。