1.SpringBoot简介学习

1.SpringBoot简介

1.1 什么是SpringBoot?

  • Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程
  • 该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置

SpringBoot所具备的特征有:

  • 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
  • 直接嵌入TomcatJettyUndertow(无需部署WAR文件)(内嵌
  • 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;(提供各种场景启动器来简化配置
  • 尽可能自动配置Spring容器;
  • 提供可用于生产的功能,例如指标,运行状况检查和外部化配置
  • 完全没有代码生成,也不需要XML配置

​ SpringBoot两大重要策略

  • 开箱即用

    • 箱即用,Outofbox,是指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。
    • 这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑
  • 约定优于配置

    • 定优于配置,Convention over configuration,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。
    • 这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。

​ SpringBoot前端后端分工

  • 前端常使用模板引擎,主要有FreeMarkerThymeleaf,它们都是用Java语言编写的,渲染模板并输出相应文本,使得界面的设计与应用的逻辑分离,同时前端开发还会使用到BootstrapAngularJSJQuery等;
  • 浏览器的数据传输格式上采用Json,非xml,同时提供RESTfulAPI
  • SpringMVC框架用于数据到达服务器后处理请求;到数据访问层主要有Hibernate、MyBatis、JPA等持久层框架;

1.2 什么是微服务?

  • 所谓的微服务是SOA架构(面向服务架构)下的最终产物,该架构的设计目标是为了肢解业务,使得服务能够独立运行

  • 微服务(是一个架构样式):相对于传统的单体应用(所谓单体应用就是我们以前做的项目将项目打成war包放到服务器tomcat上运行 服务器运行不过来就通过负载均衡的方式放到多个服务器中运行)相对来说,微服务侧重将每一个模块化,拆分细小化,再通过(HTTP进行连接)功能元素的动态组合实现优化。

​ 微服务设计原则

  • 各司其职:每一个拆分出来的服务都只需要完成自己的本职工作
  • 服务高可用和可扩展性:具有某个特定功能的服务可以高可用,用于各个模块进行组合,也可以添加具体的功能具有可扩展性

​ 微服务的优点

  • 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源。这是因为它们通过扩展组件来处理性能瓶颈问题。这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个完整的应用程序的全新迭代。最终的结果是有更多的资源可以提供给其它任务。
  • 微服务应用程序的另一个好处是,它们**更快且更容易更新。**当开发者对一个传统的单体应用程序进行变更时,他们必须做详细的QA测试,以确保变更不会影响其他特性或功能。但有了微服务,开发者可以更新应用程序的单个组件,而不会影响其他的部分。测试微服务应用程序仍然是必需的,但它更容易识别和隔离问题,从而加快开发速度并支持DevOps和持续应用程序开发。
  • 第三个好处是,微服务架构有助于新兴的云服务,如事件驱动计算。类似AWS Lambda这样的功能让开发人员能够编写代码处于休眠状态,直到应用程序事件触发。事件处理时才需要使用计算资源,而企业只需要为每次事件,而不是固定数目的计算实例支付。

​ Martin Flower 微服务

  • 微服务侧重将每一个模块化,拆分细小化,再通过(HTTP进行连接、RPC)功能元素的动态组合实现优化。

1.SpringBoot简介学习

1.3 什么是微服务架构?

  • 微服务架构是一项在云中部署应用和服务的新技术
  • 大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说API应该是重点。
  • 微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。
  • 通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程的架构。

​ 微服务特点

  • 微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台,使部署、管理和服务功能交付变得更加简单。

  • 微服务是利用组织的服务投资组合,然后基于业务领域功能分解它们,在看到服务投资组合之前,它还是一个业务领域。

  • 微服务这一概念出现于2012年,是因软件作者Martin Fowler而流行,他承认这并没有精确地定义出这一架构形式,虽然围绕业务能力、自动化部署、终端智能以及语言和数据的分散控制有一些常见的特性。