什么是Spring
Spring是一个开源框架,03年兴起的一个轻量级框架
Spring是为了解决企业级应用开发的复杂性而创建的,简化开发
Spring是如何简化Java开发的
为了降低Java开发的复杂性,Spring采用四种关键策略
- 基于POJO的轻量级和最小侵入性编成;
- 通过IOC,依赖注入(DI)和面向接口实现松耦合
- 基于切面(AOP)和惯例进行声明式编成
- 通过切面和模板减少样式代码
SpringBoot诞生
随着Spring不断的发展,涉及的领域越来越多,项目整合开发需要配合各种各样的文件,慢慢变得不是那么简单易用,一度被称为 “配置地狱”,SpringBoot即是在这种背景情况下被抽象出来的开发框架,其目的是为了大家更容易的使用Spring,更容易继承各种常用的中间件,开源软件。
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot其实就是一个整合很多可插拔的组件(框架),内嵌了使用工具(比如内嵌了Tomcat、Jetty等),方便开发人员快速搭建和开发的一个框架。
1、SpringBoot所具备特征
- 为所有Spring开发者更快入门
- 开箱即用(大量开箱即用(out-of-the-box)的依赖模块)。
- 内嵌Tomcat或Jetty等Servlet容器;
- 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
- 尽可能自动配置Spring容器;
- 提供准备好的特性,如指标、健康检查和外部化配置;
- 绝对没有代码生成,不需要XML配置。
SpringBoot用了过后你就能体会到下面这副图片了,配置是真他喵简单
微服务
1、什么是微服务
微服务是一种架构风格,它要求我们在开发一个应用时,这个应用必须构建成一系列小服务的组合,可以通过http的方式进行互通。
2、单体应用架构
单体应用架构(all in one)是指,我们在开发中所有的应用服务都要封装在一个应用中。
无论是ERP、CRM或是其他什么系统,web访问,数据库访问等功能都放置于一个war包内
优点:
- 好处易于开发和检测,方便部署,扩展时,将war包复制多份放置服务器,做上负载均衡即可/
缺点:
- 哪怕修改一个小小地方都需要停掉整个服务,重新打包进行部署。如何维护,分工合作都是问题。
3、微服务架构
all in one的架构方式,我们把所有的功能单元放在一个应用里面。然后我们把整个应用部署到服务器上。如果负载能力不行,我们将整个应用进行水平复制,进行扩展,然后在负载均衡。
所谓微服务架构,就是打破之前all in one的架构方式,把每个功能元素独立出来。把独立出来的功能元素的动态组合,需要的功能元素才去拿来组合,需要多一些时可以整合多个功能元素。所以微服务架构是对功能元素进行复制,而没有对整个应用进行复制。
这样做的好处是:
节省了调用资源。
每个功能元素的服务都是一个可替换的、可独立升级的软件代码。
Martin Flower 于 2014 年 3 月 25 日写的《Microservices》,详细的阐述了什么是微服务。
- 原文地址:http://martinfowler.com/articles/microservices.html
- 翻译:https://www.cnblogs.com/liuning8023/p/4493156.html
4、如何构建微服务
一个大型系统的微服务架构,就像一个复杂交织的神经网络,每一个神经元就是一个功能元素,它们各自完成自己的功能,然后通过http相互请求调用。比如一个电商系统,查缓存、连数据库、浏览页面、结账、支付等服务都是一个个独立的功能服务,都被微化了,它们作为一个个微服务共同构建了一个庞大的系统。如果修改其中的一个功能,只需要更新升级其中一个功能服务单元即可。
但是这种庞大的系统架构给部署和运维带来很大的难度。于是,spring为我们带来了构建大型分布式微服务的全套、全程产品:
- 构建一个个功能独立的微服务应用单元,可以使用springboot,可以帮我们快速构建一个应用;
- 大型分布式网络服务的调用,这部分由spring cloud来完成,实现分布式;
- 在分布式中间,进行流式数据计算、批处理,我们有spring cloud data flow。
- spring为我们想清楚了整个从开始构建应用到大型分布式应用全流程方案。