微服务架构入门:
核心知识点:
-
微服务架构诞生的背景:
软件即服务,将一个大型软件,拆成若干个小系统,然后分而治之
好比:北京一个火车站变到多个火车站 -
微服务架构解决方案:
大厂基本自研~自己研发各种组件,
常用:Spring Cloud Alibaba(sca),Spring Cloud Netfix,… -
微服务架构下创建Maven聚合工程的目的:
实现工程之间资源的的共享,简化工程管理 -
微服务架构入门聚合项目创建结构:
GitCGB2108IVProjects (工作区/空项目)
├── 01-sca //(微服务父工程)
├── sca-provider //服务提供方法
├── sca-consumer //服务消费方法
├── sca-gateway //网关服务
├── sca-common //公共服务
- 微服务中聚合工程之间的引用设计?
将一个工程作为依赖添加到其它工程~重点是坐标
<!--在sca-provider的pom文件中添加sca-common依赖-->
<dependency>
<groupId>com.jt</groupId>
<artifactId>sca-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
常见问题分析
-
为什么需要微服务?
实现对系统分而治之(实现松耦合)
解决因并发访问量过大带来的系统复杂性
例如:业务,开发,测试,升级,可靠性等 -
微服务设计的特点?
单一职责,独立进程,
开发测试效率高,
可靠性高,
升级难度小,
但会带来一定的维护成本 -
微服务解决方案有哪些?
大厂基本靠自研
中小企业采用开源Spring Cloud Alibaba(sca),Spring Cloud Netfix等 -
微服务设计中需要哪些关键组件?
服务的注册,发现,配置:基于Spring Cloud 服务注册与发现标准,借助Nacos进行实现,默认还集成了 Ribbon 的支持。
限流降级:默认支持OpenFeign、RestTemplate、Spring Cloud Gateway等限流降级功能的接入,可以在运行时通过sentinel控制台实时修改限流降级规则。
访问入口管理:gateway网关服务
分布式事务管理:基于Nacos支持分布式系统中的外部化配置,配置更改时自动刷新。 -
创建聚合工程的目的?
实现工程之间资源的的共享,简化工程管理 -
如何修改聚合工程中项目的编译和运行版本?
pom.xml:build->plugins->plugin->maven-compiler-plugin -
maven工程中build元素的作用?
定义项目的编译,打包方式 -
maven父工程的packaging元素内的值是什么?
是父工程的默认打包方式:pom方式 -
maven父工程中dependencyManagement元素的作用是什么?
指定项目依赖的版本,当前工程及子工程不再需要指定版本,仅限于此,别无它用 -
Maven父工程中如何统一定义JDK编译和运行版本?
配置maven编译插件:maven-compiler-plugin
常见Bug分析
-
依赖无法下载或加载?
原因:
本地库冲突
网络不好
maven镜像配置,指定版本在远程服务器不存在
清idea缓存后重启:File->invalidate caches and restart选项 -
项目的pom.xml文件有删除线?
idea/setting->build,Execution,Deployment->build Tools->maven->ignore Files选项去掉勾选
-
项目单元测试失败,提示找不到@SpringBootConfiguration,如下:
-
当项目中出现了多个启动类时,在项目启动或单元测试时会出现如下问题,如下:
-
单元测试依赖添加的有问题或者单元测试类写错了位置,如下(依赖出了问题):
- 方法调用错误,如下:
- 空指针异常:基本上是对象调用方法时,对象的值为空造成的,如下: