1.什么是微服务
- 微服务架构(MSA)的基础是将单个应用程序开发为一组小型独立服务,这些独立服务在自己的进程中运行,独立开发和部署.
- 这些服务使用轻量级API通过明确定义的接口进行通信.这些服务是围绕业务功能构建的,每项服务执行一项功能,由于他们是独立运行的,因此可以针对各项服务进行更新,部署可扩展,以满足对应用程序特定功能的需求.
- 将一个大型软件拆分为多个小的系统(按照业务拆分),分而治之
- 微服务是一个架构设计方式,此架构中每个服务(service)都是针对一组功能而设计的,并专注于解决特定的问题.如果开发人员逐渐将更多代码增加到一项服务中并且这项服务变得复杂,那么可以将其拆分为多项更小的服务,接下来进行独立的开发,测试,部署,运行,维护.进而更灵活的处理客户端的请求并提高相同的可靠性,可扩展性.
- 微服务架构解决方案(大厂自研–自己研发各种组件,Spring Cloud ~Netfix,Alibaba,…)
- 微服务架构下Maven聚合项目的创建方式(Maven聚合项目~资源复用:extends,import,可以简化编译,打包,部署方式)
- 微服务架构入门聚合项目创建(01-sca,sca-consumer,sca-privader,sca-gateway,sca-common)
- 微服务中聚合工程之间的引用设计(将一个工程作为依赖添加到其他工程~重点是坐标)
2.SpringCloud Alibaba
2.1 概述
SpringCloud Alibaba是Spring Cloud的一个子项目,致力于提供微服务开发的一站式解决方案.
依托SpringCloud Alibaba ,只需要添加一些注解和少量的配置,就可以将SpringCloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统
2.2 核心组件分析
- 服务限流降级
- 服务注册与发现
- 分布式配置管理
- 消息驱动能力
- 分布式事务
- 分布式任务调度
3.常见问题分析
- 为什么使用微服务?(对系统分而治之,解决因并发访问过大带来的系统的复杂性–例如:业务,开发,测试,升级,可靠性)
- 微服务设计的特点?(单一职责,独立进程,开发测试效率高,可靠性高,升级难度小,但会带来一定的维护成本)
- 微服务设计中需要哪些关键组件(服务的注册,发现,配置,限流降级,访问入口管理,分布式事务管理等)
- 创建聚合工程的目的(实现工程之间资源的共享,简化工程管理)
- maven工程中build元素的作用?(定义项目的编译,打包方式)
- maven父工程的packing元素内的值是什么?(父工程默认的打包方式为pom方式)
- maven父工程中dependencyManagement元素的作用是什么?(项目依赖的版本,当前工程或子工程不需要再指定版本)
- maven父工程中如何统一定义JDK编译和运行版本?(配置maven编译插件:maven-compile-plugin)
4.构建SpringCloud聚合项目并进行环境初始化
- 微服务项目一般都会采用聚合工程架构,可通过聚合工程结构实现共享资源的复用,简化项目的管理方式.
- 微服务架构方案中的maven聚合工程的基本结构:
4.1 项目初始化配置
4.1.1 配置maven环境
(只要是新的工作区,都需要重新配置)之一本地苦苦选择新的为宗旨不要与其他的项目共用本地库,因为多个项目所需要的依赖版本不同时,可能会有一些依赖版本冲突
4.1.2 配置JDK编译环境
集合工程在编译时,需要对相关依赖的工程进行一起编译,进行以下配置:
4.1.3 指定一下当前工作区的jdk编译版本
4.1.2 配置工作区中项目的编码方式
4.2 创建聚合父工程
4.2.1 创建父工程
4.2.2 删除工程中的src目录
4.1.1 修改项目pom.xml文件中的内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jt</groupId>
<artifactId>01-sca