Spring Boot 入门以及对微服务的理解

1.Spring Boot 简介

Spring Boot 是简化 Spring 应用开发的一个框架,是整个Spring技术栈的一个大整合。它具有自动装配的功能,使用嵌入式的Servlet容器,应用无需打成war包,并且内嵌 Tomcat

1.1什么是自动装配

自动装配(Autowiring)是 Spring 框架中的一个特性,它允许 Spring 自动为依赖注入的字段、方法或构造函数匹配和注入合适的 bean。通过自动装配,开发者不需要手动配置依赖关系,Spring 会根据一定的规则自动寻找合适的依赖并注入到需要的地方。

1.2什么是内嵌Tomcat

内嵌 Tomcat 是指将 Apache Tomcat 服务器嵌入到 Java 应用程序中,使得应用程序可以独立运行,而不需要依赖外部的应用服务器。这种方式使得部署和运行 Java Web 应用变得更加方便和轻量化。

2.微服务

2.1单体应用系统

单体应用系统是一种软件架构风格,其中所有的功能模块和组件都打包在一个单一的部署单元中,通常是一个可执行文件或一个单一的应用程序包。在这种架构下,应用程序的所有部分,包括用户界面、业务逻辑、数据访问层等,都是紧密耦合在一起的,作为一个整体运行和部署。

这种架构有优点,例如它适合小型应用,易于开发、测试和部署;并且在本地开发和调试时,所有的代码都在一个地方,便于问题排查。

但是它的缺点很明显,它是紧耦合的结构,各个模块之间往往依赖性强,修改一个模块可能会影响其他模块的功能;难以水平扩展,不能单独扩展某个模块。

相比于微服务架构,单体应用更适合早期的、规模较小的项目,但随着业务需求的增长和复杂度的增加,可能需要考虑向微服务架构转型。

2.2分布式应用系统

分布式应用系统的各个组件分布在多个网络节点上,并通过网络进行通信和协作以完成任务。分布式系统通过协调多个独立的计算资源来实现更高的可扩展性、可靠性和容错性。

相较于单体应用系统,分布式系统中的多个组件可以并发执行任务,并且可能同时处理多个用户请求。并发性有助于提高系统的性能和响应速度,特别是在面对大量并发请求时。系统可以通过增加更多的节点或资源来水平扩展,以处理更大的工作负载。可扩展性使分布式系统能够应对需求的增长,而不需要对现有系统架构进行重大改动。

2.3微服务

2.3.1什么是微服务

微服务是指开发单个小型的但有业务功能的服务 ,每个服务都有自己处理和轻量通讯机制,可以部署在单个或多个服务器上。微服务也指一种松耦合的有一定有界上下文的面向服务架构。一个应用应该是一组小型服务,可以通过HTTP的方式进行互通。

微服务有哪些优点
  1. 每一个微服务都很小,这样能聚焦一个指定的业务功能或业务需求
  2. 微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。
  3. 微服务是松耦合的,是有功能意义的服务,无论是开发阶段或是部署阶段都是独立的。
  4. 微服务能够使用不同的语言开发。
  5. 微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,一个团队的新成员能够更快投入生产。
  6. 微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果,
  7. 微服务能够即时被要求扩展。
  8. 微服务能够部署中低端配置的服务。
  9. 微服务易于和第三方集成。
  10. 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库。
微服务有哪些缺点
  1. 微服务架构可能带来过多的操作
  2. 可能需要多倍的努力
  3. 分布式系统可能复杂难以管理
  4. 因为分布部署跟踪问题难
  5. 当服务量增加,管理复杂性增加

2.3.2为什么选择微服务

  1. 微服务架构将应用程序拆分为多个小的、独立的服务,每个服务专注于特定的业务功能。这些服务可以由不同的开发团队独立开发、部署和维护,而无需相互依赖。
  2. 分布式应用系统通常涉及多个组件或模块分布在不同的节点上,但这些组件可能仍然紧密耦合,更新和维护时需要考虑整体系统的兼容性和稳定性。
  3. 微服务架构使得团队可以更灵活地管理和迭代每个服务,特别是在大型项目中,不同团队可以并行开发,减少了协作中的瓶颈。
相关推荐
2301_811274312 分钟前
大数据基于Spring Boot的化妆品推荐系统的设计与实现
大数据·spring boot·后端
武子康13 分钟前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
武子康15 分钟前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
苏-言21 分钟前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
界面开发小八哥29 分钟前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
草莓base42 分钟前
【手写一个spring】spring源码的简单实现--容器启动
java·后端·spring
Allen Bright1 小时前
maven概述
java·maven
Ljw...1 小时前
表的增删改查(MySQL)
数据库·后端·mysql·表的增删查改
编程重生之路1 小时前
Springboot启动异常 错误: 找不到或无法加载主类 xxx.Application异常
java·spring boot·后端
薯条不要番茄酱1 小时前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea