今天,小喵来和小伙伴们聊聊 SpringBoot 和 SpringCloud 两个框架.前端
一 . SpringBoot web
1.简介面试
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员再也不须要定义样板化的配置。经过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。spring
SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不只继承了Spring框架原有的优秀特性,并且还经过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot经过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题获得了很好的解决。数据库
Spring框架是Java平台上的一种开源应用框架,提供具备控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以致于后来让它做为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,好比利用控制反转的核心特性,并经过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具备控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种经过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器能够经过扫描XML文件或类上特定Java注解来配置对象,开发者能够经过依赖查找或依赖注入来得到对象。Spring框架具备面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽没法与AspectJ框架相比,但经过与AspectJ的集成,也能够知足基本需求。Spring框架下的事务管理、远程访问等功能都可以经过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务可以与保存点一块儿工做,而且几乎能够在Java平台的任何环境中工做。Spring集成多种事务模板,系统能够经过事务模板、XML或Java注解进行事务配置,而且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不只对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等全部流行的数据访问框架中提供支持,同时还能够与Spring的事务管理一块儿使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个本身的WebMVC框架,其开发人员在开发过程当中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,因而建立了SpringMVC。编程
2.特色api
1.简介浏览器
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,均可以用Spring Boot的开发风格作到一键启动和部署。Spring Cloud并无重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,经过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。缓存
SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、等集成服务tomcat
SpringBoot不依赖于SpringCloud,SpringCloud依赖于SpringBoot,属于依赖关系
2.特色
优势:
1) 服务拆分粒度更细,有利于资源重复利用,有利于提升开发效率
2) 能够更精准的制定优化服务方案,提升系统的可维护性
3) 微服务架构采用去中心化思想,服务之间采用Restful等轻量级通信,比ESB更轻量
4) 适于互联网时代,产品迭代周期更短
缺点:
1) 微服务过多,治理成本高,不利于维护系统
2) 分布式系统开发的成本高(容错,分布式事务等)对团队挑战大
总的来讲优势大过于缺点,目前看来SpringCloud是一套很是完善的分布式框架,目前不少企业开始用微服务
3. 经常使用组件
SpringCloud 主要涉及的组件包括 :
1) Eureka : 服务注册中心,用于管理服务(服务的注册、发现)
2)Ribbon : 负载均衡,用于搭建集群环境.(同一个功能配置多个tomcat,负载均衡会选择多个tomcat其中一个)
3)Hystrix : 熔断器,与正主断了联系,使用备选方案.可以防止服务的雪崩效应.
4)Feign : 服务调用/远程调用 , 服务与服务之间进行调用,相似于HttpClient
5)Zuul : 服务网关,用于统一程序入口,方便进行管理,提供路由转发、请求过滤等功能
4.核心原理
想了解更多关于SpringCloud的详细信息的话能够访问如下内容
三 . 区别
SpringBoot 和 SpringCloud 有如下区别 :
1) SpringBoot专一于快速方便的开发单个个体微服务。
2) SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合而且管理起来,为各个服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、精选决策、分布式会话等集成服务。
3) SpringBoot能够离开SpringCloud独立开发项目,可是SpringCloud离不开SpringBoot,属于依赖关系。
4) SpringBoot专一于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。
这就是小喵今天所要分享的知识,
结尾再附上一个小小的面试题 :
什么是SpringBoot ? 什么是SpringCloud ?二者之间有什么区别?
1) springboot是一个快速开发框架,专一于快速方便的开发单个个体的微服务,
为何是快速开发框架: 它是一个服务于spring框架的框架,它简化了配置文件,能够快速构建web应用,内置tomcat,无需打包部署,直接运行。
核心原理:是基于SpringMVC无配置文件彻底注解化+内置tomcat实现SpringBoot框架,使用Main函数启动.
2) SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、等集成服务
3) SpringBoot不依赖于SpringCloud,SpringCloud依赖于SpringBoot,属于依赖关系
你Get到了吗?
(^_^)~喵~!!