一、Spring Boot入门
Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用
背景:
J2EE笨重的开发,繁多的配置,低下的开发效率,复杂的部署流程,第三方技术集成难度大
解决:
“Spring全家桶”时代
Spring Boot–>J2EE一站式解决方案
Spring Cloud–>分布式整体解决方案
优点:
- 快速创建独立运行的Spring项目以及主流框架集成
- 使用嵌入式的Servlet容器,应用无需打成WAR包
- starters(启动器)自动依赖与版本控制,想用web功能就导入web功能的启动器starters,想用redis就导入redis的starters,所有的企业级开发场景都有相应的starters启动器,导入就可自动依赖。
- 大量的自动的配置,简化开发,也可修改默认值(通过spring boot的配置文件)
- 无需配置XML,无代码生成,开箱即用(都是用一些写好的API,自动配置好XML,SpringBoot应用创建出来就能用,并不是说有一些自动生成的XML工具)
- 准生产环境的运行时应用监控
- 与云计算的天然集成
- ps(shift+tab退出无序列表)
缺点:易学难精
1、Spring Boot简介
简化Spring应用开发的一个框架
整个Spring技术栈的一个大集合
J2EE开发的一站式解决方案
2、微服务
Microservices:a definition of this new architectural term
微服务:架构风格
the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.
一个应用应该是一组小型服务:可以通过HTTP的方式进行互通
单体应用:ALL IN ONE所有的东西都写在一个里面
Traditional web application architecture
OA,CRM,ERP系统,以前都是创建一个应用然后将所有的页面,代码都放在这个应用里,然后把整个应用打包打成WAR包,然后部署到Tomcat上,应用访问数据库,提供前端访问的页面,这个应用就跑起来了,这是传统的WEB应用架构模式,传统的优点:比如开发测试简单,develop test deploy scale,开发,测试,部署,扩展也都简单。
水平扩展也简单,当我们应用负载能力不行的时候,我们把相同的应用复制上十几份,放在十几个服务器里,十几个服务器都来跑我们这些应用程序,我们通过负载均衡机制,就可以来提高我们的并发能力。
单体应用的问题:
这是一个牵一发而动全身的问题,有可能因为我们一个小小的修改,导致我们整个应用重新打包部署运行。
更大的挑战是我们日益增长的软件需求,现在可能随便一个应用都有可能成为一个大的需求,大应用不可能全部ALL IN ONE写在一个里面,然后应用到底有多大,该如何维护,该如何分工合作,这是一个问题。
微服务
单体应用:
就是打破以前的传统方式,以前是将所有的功能单元放在一个应用里面。然后把整个应用部署到服务器上,如果服务器负载能力不行,把同一份应用水平复制,然后扩展到其他服务器。
微服务:
一个微服务架构把每个功能元素放进一个独立的服务中,把每个功能元素独立出来,通过功能元素的动态组合,比如A服务器需要某个功能元素多,就多放一点,B服务器需要某个功能元素少,就少放一点
并且通过跨服务器分发这些服务进行扩展,某些功能只在需要时才复制。也就是功能元素级别的复制,并不是整个应用的复制。1、节省了调用资源,把服务微化起来2、每一个服务都应该是一个可替换的,可独立升级的软件单元
每一个功能元素最终都是可独立替换,可独立升级的软件单元
SOA架构和微服务架构区别:
SOA(Service Oriented Architecture):面向服务的架构,一种设计方法,其中包含多个服务,服务之间通过相互依赖最终提供一系列的功能,一个服务通常以独立的形式存在于操作系统进程中,各个服务之间通过网络调用。
微服务架构:其实和SOA架构类似,微服务是在SOA上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的但各业务系统会拆分成多个可以独立开发,设计,运行的小应用
这些小应用之间通过服务完成交互和集成
主要区别:
功能 | SOA | 微服务 |
---|---|---|
组件大小 | 大块业务逻辑 | 单独任务或小块业务逻辑 |
耦合 | 通常松耦合 | 总是松耦合 |
公司架构 | 任何类型 | 小型,专注于功能交叉团队 |
管理 | 着重中央管理 | 着重分散管理 |
目标 | 确保应用能够交互操作 | 执行新功能,快速拓展开发团队 |
掌握内容:
- Spring框架
- 熟练使用Maven进行项目构建和依赖管理
- 熟练使用Eclipse、IDEA
环境约束:
- JDK1.8
- Maven3.x:Maven 3.3以上版本
- IntelliJ IDEA
- Spring Boot 1.5.9.RELEASE