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