SpringBoot简介
前言
SpringBoot来简化Spring应用开发,“约定大于配置”,去繁从简,之前我们做项目时,例如使用Spring、SpringMvc和Mybatis这三大框架时,创建一个应用,需要导入一大堆的jar包或者用Maven导入一堆依赖,还有写一堆的配置文件,然后测试开发业务逻辑,包括打包后还得配置服务器测试环境,然后再开发,在以前我们J2EE的开发是笨重、繁多的配置、底下的开发效率、复杂的部署流程、第三方技术集成难度大。
优点
- 快速创建独立运行的Spring项目以及与主流框架集成
- 使用嵌入式的Servlet容器,应用无需打成WAR包
- starters自动依赖与版本控制
- 大量的自动配置,简化开发,也可修改默认值
- 无需配置XML,无代码生成,开箱即用
- 准生产环境的运行时应用监控
- 与云计算天然集成
- 。。。
缺点
- 入门容易,精通难(感觉是最大缺点)
- 需要了解Spring框架,才能理解SpringBoot的封装机制
- 大量的自动配置,都需要了解Spring底层的API
微服务简介
前言
提到微服务需要先认识一个人:Martin Fowler
Martin Fowler是国际著名的OO专家,敏捷开发方法的创始人之一,现为ThoughtWorks公司的首席科学家.福勒(Martin Fowler),在面向对象分析设计、UML、模式、软件开发方法学、XP、重构等方面,都是世界顶级的专家,现为Thought Works公司的首席科学家。Thought Works是一家从事企业应用开发和集成的公司。早在20世纪80年代,Fowler就是使用对象技术构建多层企业应用的倡导者,他著有几本经典书籍: 《企业应用架构模式》、《UML精粹》和《重构》等。—— 百度百科。
详细讲解可以查看此篇文章:https://www.jianshu.com/p/b2b849a63668
听听Martin Fowler怎么说的:
微服务:架构风格
一个应用应该是一组小型服务,可以通过HTTP的方式进行互通;
Martin Fowler作者地址:https://martinfowler.com
区别
传统的单体应用
优点:
- develop、test 开发测试简单(因为只有一个应用,不牵涉到多个应用互联互调)
- deploy 部署简单(部署整个应用,只需要将应用打个WAR包就行了,然后放在Tomcat服务器上,不会给运维带来太大的困难)
- scale 扩展(包括水平扩展也比较容易,当应用的负载能力不行的时候,我们把相同的应用负载多份,也就是负载均衡机制)
缺点:
- 这是一个牵一发动全身问题
- 因为一个小小的修改,所有的应用需要从新部署
- 更大的问题是我们日益增长的软件需求(可能现在的一个应用,将来可能成为一个大型应用,一个大型应用,我们不可能全都写在里边,需问题是这个应用得多大,该怎么维护,该怎么分工协作,全都是考虑的问题)
微服务:
所谓的微服务就是打破以前的传统服务,以前是将所有的功能单元放在一个应用里,然后将这个应用部署到服务器上,如果负载能力不行,我们会将应用进行水平复制,而微服务提倡的是将每个功能单元独立出来, 我们可以通过功能元素的动态组合,只对功能元素进行复制,没有对应用复制。
优点:
- 节省了调用资源
- 将服务微化起来后,每一个服务都是可替换的,可独立升级的软件单元
缺点:
- 后期会对部署和运维来说,是相当不容易的
详细参照微服务文档:https://martinfowler.com/articles/microservices.html#MicroservicesAndSoa
最终架构起来的应用图:
将单元独立出来以后,单元跟单元之间的互调是通过HTTP方式轻量级通信,进行互联互调,这样我们每个功能单元不断微化,形成整个应用网,类似于我们人类大脑的神经元,使用神经纤维连接起来,其实就是大型的分布式应用。