02-SpringBoot和微服务概述
SpringBoot
什么是Spring
-
Spring是一个开源框架,2003年兴起的一个轻量级的java开发框架,作者Rod Johnson
-
Spring是为了解决企业级应用开发的复杂性而创建的,简化开发
Spring如何简化开发
为了降低java开发的复杂性,Spring采用了一下四种关键策略:
-
基于POJO的轻量级和最小侵入性编程
-
通过IOC,使用依赖注入(DI)和面向接口实现解耦合
-
基于切面编程(AOP)和惯例进行声明式编程
-
通过切面和模板减少样式代码
SpringBoot
最开始实现一个javaweb应用,需要自己创建Servlet对象,然后结合Tomcat,发布程序,实现一个简单的一个HelloWorld程序需要很多的步骤;后来使用了Struts框架,再然后使用了SpringMVC框架,都是为了简化开发所需要的步骤,到现在的Springboot,框架的出现和演变非常的频繁。Springboot框架跟SpringMVC框架类似,也是一个专注于javaweb开发的框架,,相较于其他javaweb框架,Springboot在其官网中说是更加简化Spring的使用,约定大于配置,你可以快速的开发web应用,只需要几行代码就可以开发一个http接口。约定大于配置,在maven中也出现过,就是说,开发这一类项目,这类项目所有的结构都已经帮你定义好了,你只需要往里面添加相应的内容就ok了,非常方便。我们要遵循这种约定,因为这种约定不仅方便开发,维护时也可以让其他维护人员看懂。
Springboot基于Spring开发,其本身并不提供Spring框架的核心特性及其扩展功能,它只是一个用于快速、敏捷地开发新一代基于Spring框架的应用程序的框架。就是说其并不是用来替代Spring的一种解决方案,只是和Spring框架紧密结合用于提升Spring框架使用者开发效率的工具。Springboot中的核心思想是约定大于配置,意思是Springboot框架内部已经默认帮我们设置和配置了使用Spring框架进行web开发的很多操作,用该框架进行应用开发只需要很少的Spring配置就行了。Springboot同时集成了 大量常用的第三方库配置(如Redis、MongoDB、Jpa、RabbitMQ、Quartz等等),使用Springboot开发应用,要使用这些第三方库几乎都不需要你配置,做到零配置的开箱即用。
一句话,Springboot不是什么新的框架,它只是默认配置了很多框架的使用方式,就如maven构建工具一样,帮你整合所有需要使用的jar包,Springboot就是帮你整合了所有框架。
优点:
- 为所有Spring开发者提供了更快的入门方式
- 做到开箱即用,提供了各种框架的默认配置来简化项目的配置
- 嵌入式容器简化Web项目
- 没有冗余代码的生成和xml配置文件的要求
从官方文档学习springboot
微服务
微服务是什么
微服务是一种架构的风格,就如Restful风格一样,只不过Restful风格是针对于接口来说的,微服务是针对于架构来说的。架构,我们学过MVC三层开发架构,MVVM前端架构,这里就是被称为微服务的架构。这种架构的风格要求我们在开发应用的时候,这个应用必须由一系列的小服务进行组合构建而成的,这些小服务可以是我们的一个个的业务,也可以说是模块;最后通过http的方式进行互通。我们可以再Dubbo的官网上查看具体的微服务架构。
单体应用架构回顾
单体应用架构(all in one)指的是,将一个应用中的所有应用服务都封装在一个应用中。即无论是ERP、CRM亦或是其他的什么系统,我们都把数据库访问、web访问等各个功能都放到一个war包内。
好处:易于开发和测试,方便部署。当需要进行业务扩展时,只需要将war包赋值多份,然后放到多个服务器上,在做个负载均衡就可以了。
缺点:当需要修改一个非常小的地方时,要把整个服务都停掉,然后重新打包、部署这个应用war包。特别是对于大型项目应用,我们不可能吧所有的内容都放进一个应用中,不然往后的维护等分工会出现问题
微服务架构
all in one的架构方式,把所有的功能单元都放到了一个应用中。当我们把整个应用部署到服务器上时,如果该服务其负载能力不行,需要我们将整个应用水平复制,进行扩展,再进行负载均衡。
而微服务架构,就是把项目中的每个功能元素独立出来。把独立出来的功能元素进行动态的组合,即把项目所需要的功能元素拿来进行组合,需要多少我们就拿多少功能元素。可以看出,微服务架构是对功能元素进行复制,并没有对整个应用进行复制。我们可以看一遍Martin Flower写的《Microservice》,其中详细讲解了声明是微服务。
好处:节省了调用的资源。每个功能元素的服务都是可替换的、可独立升级的软件代码
如何构建微服务
一个大型系统的微服务架构,就像一个复杂交织神经网络,每一个神经元就是一个功能元素,他们各自完成自己的功能,随后被我们使用http接口的请求相互调用。如一个电商系统,查缓存、连接数据库、浏览页面、结账、支付服务等都是一个独立的功能,都被微化了,他们作为一个个微服务共同构建了一个庞大的系统。如果修改其中的一个分支功能,只需要更新升级其中的一个功能服务单元即可。
然后庞大的系统架构给项目的部署和运维带来了很大的难度。于是Spring框架为我们带来了构建大型分布式微服务的全套、全程产品。
- 构建一个个功能独立的微服务应用单元,使用Springboot可以帮助我们快速构建一个应用;
- 而大型分布式网络服务调用,该部分就有Spring Cloud来完成,实现分布式;
- 在分布式中间,进行流式数据的计算、批处理等,我们使用Spring Cloud Data Flow
- Spring全家桶为我们想清楚并准备了从开始构建应用到大型分布式应用的整个方案