SpringBoot和SpringCloud简介
简要概述
1、SpringBoot:是一个快速开发框架,通过用MAVEN依赖的继承方式,帮助我们快速整合第三方常用框架,完全采用注解化(使用注解方式启动SpringMVC),简化XML配置,内置HTTP服务器(Tomcat,Jetty),最终以Java应用程序进行执行。
2、SpringCloud: 是一套目前完整的微服务框架,它是是一系列框架的有序集合。它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署。
什么是微服务
1. 以前的模式是 所有的代码在同一个工程中 部署在同一个服务器中 同一个项目的不同模块不同功能互相抢占资源
2. 微服务 将工程根据不同的业务规则拆分成微服务 微服务部署在不同的机器上 服务之间进行相互调用
3. Java微服务的框架有 dubbo(只能用来做微服务),spring cloud(提供了服务的发现,断路器等)
SpringBoot和SpringCloud的关系
1、SpringBoot只是一个快速开发框架,使用注解简化了xml配置,内置了Servlet容器,以Java应用程序进行执行。
2、SpringCloud是一系列框架的集合,可以包含SpringBoot。
SpringBoot使用了默认大于配置的理念,集成了快速开发的Spring多个插件,同时自动过滤不需要配置的多余的插件,简化了项目的开发配置流程,一定程度上取消xml配置,是一套快速配置开发的脚手架,能快速开发单个微服务;
SpringCloud大部分的功能插件都是基于SpringBoot去实现的,SpringCloud关注于全局的微服务整合和管理,将多个SpringBoot单体微服务进行整合以及管理;SpringCloud依赖于SpringBoot开发,而SpringBoot可以独立开发;
SpringBoot是微服务框架吗?
1、SpringBoot只是一个快速开发框架,算不上微服务框架。
2、SpringCloud+SpringBoot 实现微服务开发。具体的来说是,SpringCloud具备微服务开发的核心技术:RPC远程调用技术;SpringBoot的web组件默认集成了SpringMVC,可以实现HTTP+JSON的轻量级传输,编写微服务接口,所以SpringCloud依赖SpringBoot框架实现微服务开发。
Springboot:
简介:
1. 简化spring应用开发的一个框架
2. 整个spring技术栈的一个大整合
3. J2EE开发的一站式解决方案
优点:
1、 快速创建独立运行的spring项目以及主流框架集成
2、 使用嵌入式的Servlet容器,应用无需打成war包
3、 Starters自动依赖与版本控制
4、 大量的自动配置,简化开发,也可以修改默认值
5、 无需配置xml,无代码生成,开箱即用
6、 准生产环境的运行时应用监控
SpringBoot与Spring的区别:
Spring Boot可以建立独立的Spring应用程序;
1. 内嵌了Tomcat,Jetty等容器,直接热部署后就可以直接跑起来,不用再做部署工作了;
2. 无需配置一堆繁琐的xml文件;
3. 可以自动配置Spring。SpringBoot将原有的XML配置改为Java配置,将bean注入改为使用注解注入的方式(@Autowire),并将多个xml、properties配置浓缩在一个appliaction.yml配置文件中。
4. 提供了一些现有的功能,如量度工具,表单数据验证以及一些外部配置这样的一些第三方功能;
5. 整合常用依赖(开发库,例如spring-webmvc、jackson-json、validation-api和tomcat等),提供的POM可以简化Maven的配置。当我们引入核心依赖时,SpringBoot会自引入其他依赖。
Springboot中的配置解释:
启动器:
spring-boot-starter;场景启动器:帮我们导入了web模块正常运行所依赖的组件
springBoot将所有的功能场景都抽取出来,做成一个个的starter(启动器),只需要在项目里面引入这个starter相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器。
springboot常用的starter有哪些:
spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持
spring-boot-starter-data-jpa 数据库支持
spring-boot-starter-data-redis redis数据库支持
spring-boot-starter-data-solr solr支持
mybatis-spring-boot-starter 第三方的mybatis集成starter
springboot自动配置的原理:
在spring程序main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration
会自动去maven中读取每个starter中的spring.factories文件 该文件里配置了所有需要被创建spring容器中的bean
Spring Boot视频学习记录
Spring Boot介绍
利用springboot可以自动配置spring的各种组件,简化配置,同时提供了常见场景的推荐组件配置。其设计的目的是用来简化新spring应用的初始搭建以及开发过程,创建出独立运行和产品级别的基于spring框架的应用。该框架使用了特定的方式来配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,大大提升使用spring框架时的开发效率。
Spring包含如下特性
1.可以将应用打包成独立可运行的JAR或WAR,使用java-jar命令来启动应用
2.内嵌Tomcat或者Jetty服务器,无需独立的应用服务器
3.提供基础的POM文件来简化Apache Maven配置
4.根据项目依赖自动配置
5.没有Java Config代码和XML配置文件
创建Spring Boot项目
1有两种方式:
1.1spring官网:http://start.Spring.io站点,在线生成压缩包下载解压导入STS后进行开发。
1.2直接使用STS创建Spring Boot项目
2.项目结构分析:
.mvn目录是maven包装器,是一个小脚本,它能够确保其它人使用相同版本的maven来构建这个应用
Src/main/java存放的是java源代码
Src/main/resources存放的是应用配置,静态文件(css,js,图片)和模板文件(HTML模板)
Src/test/java存放测试用例java代码
3.Spring Boot应用启动:
1.Springboot应用可以有多种启动方式来应对不同的使用场景:
1.1 main方法启动
1.2Run as Spring boot APP
1.3使用maven插件运行
1.4 java-jar命令启动
4.Spring Boot自动配置
微服务springCloud
详情传送门:https://blog.csdn.net/qq_35906921/article/details/84032874
互联网发展软件开发的三个阶段
- 单机版:把要做的所有应用程序放置在一个项目中,最后将之后的war或者jar部署在服务器上。这种模式随着发展终将会被淘汰 是因为出现的问题 将随之而来并发耦合等问题 刻不容缓。
- 分布式:专业的事情交给专业的人去做,尽量降低耦合度,每个模块不受影响,一个模块你只做一件事。
- 微服务:微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个微服务,彻底去耦合,每个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看,就是一个小而独立的过程,类似于进程,能够自行单独启动和销毁,拥有自己的独立数据库。
微服务架构是一种架构模式,他提倡将单一应用程序拆分成一组服务,每个服务独立运行在自己的进程中,服务之间相互协调,相互配合,为用户提供最终价值。
对微服务的理解 什么是服务熔断?
spring boot 是一个快速整合第三方框架 关注的是 微观 具体关注快速方便的开发单个个体的 服务
spring cloud 关注的是 宏观 具体关注全局的微服务协调整理治理框架 将spring boot 开发的一个个单体服务整合 并管理起来
它为各个微服务之间提供 配置管理 服务发现 断路器路由 微代理 全局锁 分布式会话 等 集成服务
服务熔断:指的是由于某些原因使得服务出现过载的现象,为了防止造成整个系统故障,采取的一种保护措施。因此也被称为过载保护。
什么是服务降级 微服务的优缺点
服务降级:指的是整体资源不够时,忍痛将某些服务关掉,等度过难关,再将服务开启。
微服务优点:
- 微服务足够内聚,足够小,代码容易理解。能够聚焦一个指定的业务功能或业务需求。
- 开发简单,开发效率高,一个微服务专一的只干一件事。
- 微服务能够被小团队单独开发,这个小团队可以是2-5人的开发人员组成。
- 微服务是松耦合的,是有功能意义的服务,无论是开发阶段或部署阶段都是独立的。
- 微服务能使用不同语言开发。
- 微服务易于被开发人员理解,修改和维护。这样小团队更能关注自己的工作成果,无需通过合作才能体现价值。
- 微服务允许你利用和融合最新技术。
- 微服务只是业务逻辑的代码,不会和Html、CSS或其他界面组件混合。
- 每个微服务可以有自己的存储能力,可以有自己的数据库,也可以统一数据库。
微服务缺点:
- 开发人员要处理分布式系统的复杂性。
- 多服务运维难度,随着服务的增加,运维的压力也增大。
- 系统部署依赖。
- 服务间通信成本。
- 数据一致性。
- 系统集成测试。
- 性能监控。
分布式、集群与微服务
理解:
分布式:多个人在一起做不同的事。
集群:多个人在一起做同样的事 。
区别概述:分布式是指将不同的业务分布在多个服务器上。而集群指的是将几台服务器集中在一起,实现同一业务。
微服务:是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
简单的说,微服务是架构设计方式,分布式是系统部署方式
详情参考:传送门