2109-微服务课上问题分析及总结
Posted 雨田说码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2109-微服务课上问题分析及总结相关的知识,希望对你有一定的参考价值。
Day01~微服务架构入门
核心知识点
- 微服务架构诞生的背景(软件即服务,将一个大型软件,拆成若干个小系统;分而治之~北京一个火车站到多个火车站)
- 微服务架构解决方案(大厂基本自研~自己研发各种组件,中小公司用Spring Cloud Netflix,Alibaba,…)
- 微服务架构下Maven聚合项目的创建方式?(Maven聚合项目~资源复用:extends,import,简化编译,打包,部署方式)
- 微服务架构入门聚合项目创建?(01-sca,sca-consumer,sca-provider,sca-gateway,sca-common)
- 微服务中聚合工程之间的引用设计?(将一个工程作为依赖添加到其它工程~重点是坐标)
- 工程中单元测试案例分析及实践?
常见问题分析
- 为什么需要微服务?(对系统分而治,解决因并发访问过大带来的系统复杂性(例如:业务,开发,测试,升级,可靠性等)
- 微服务设计的特点?(单一职责,独立进程,开发测试效率高,可靠性高,升级难度小,但会带来一定的维护成本)
- 微服务解决方案有哪些?(大厂自研,中小企业采用开源Spring Cloud Alibaba,Spring Cloud Netfix等 )
- 微服务设计中需要哪些关键组件(服务的注册,发现,配置,限流降级,访问入口管理,分布式事务管理等)
- 创建聚合工程的目的?(实现工程之间资源的的共享,简化工程管理)
- 如何修改聚合工程中项目的编译和运行版本?(pom.xml:build->plugins->plugin->maven-compiler-plugin)
- maven工程中build元素的作用?(定义项目的编译,打包方式)
- maven父工程的packaging元素内的值是什么?(父工程默认打包方式为pom方式)
- maven父工程中dependencyManagement元素的作用是什么?(项目依赖的版本,当前工程或子工程不需要再指定版本)
- Maven父工程中如何统一定义JDK编译和运行版本?(配置maven编译插件:maven-compiler-plugin)
- Maven工程pom.xml文件有删除线怎么解决?(修改idea中maven的配置)
- @Autowired注解描述属性时,系统底层执行DI的过程是怎样?
常见Bug分析
- maven配置错误(idea中指定你本地库)
- maven依赖无法下载(首先要确保你的依赖的是正确,maven配置是正确,都正确就放大招)
- 单元测试@Test注解包引入错误(junit4,junit5)
- 单元测试类写错了位置。
课堂练习
- 构建01-sca的子工程,工程名为sca-common。
- 在sca-common工程中创建单元测试类IntegerTests,对整数池进行测试。
- 在sca-common工程中定义工具类StringUtils,并定义判断字符串是否为空的静态方法isEmpty(String str)。
- 在sca-gateway工程的单元测试方法中引用sca-common工程中的StringUtils类进行单元测试分析。
- 在sca-gateway工程中添加StringTemplate和SimpleStringTemplate类(此类继承StringTemplate)并交给spring管理,然后在单元测试类中获取这两个类的对象?(依赖,@Component,启动类,单元测试类)
课后作业
- 总结课上知识点(养成好习惯)
- 完成自己电脑中JAVA_HOME环境变量的配置。(JDK必须是8并且64Bit的)
- 确保自己电脑中的mysql为5.7以上或者mariadb10.5以上版本并基于这个版本执行课前资料中的nacos-mysql.sql
- 预习04-Nacos注册服务注册中心应用实践。
Day02~Nacos注册中心入门
核心知识点
- 服务注册中心诞生背景? (服务多了,需要统一管理,例如所有公司需要在工商局进行备案)
- 服务注册中心的选型?(社区活跃度,稳定性,功能,性能,学习成本)
- Nacos下载,安装(解压),配置(application.properties),启动(startup.cmd),访问(http://ip:port/nacos)
- 基于Nacos实现服务的注册?(添加依赖,服务配置,启动服务并检查)
- 基于RestTemplate实现服务的简易调用?(服务消费方调用服务提供方)
- 基于LoadBalancerClient对象实现服务发现,服务的负载均衡,服务实例(ServiceInstance)的获取.
常见问题分析
- 如何理解服务注册中心?(存储服务信息的一个服务)
- 服务注册中心诞生的背景? (服务多了,需要对服务进行更好管理)
- 市场上常用的注册中心?(Zookeeper,Eureka,Nacos,Consul)
- 如何对注册中心进行选型?(社区活跃度,稳定性,功能,性能,学习成本)
- Nacos 是什么?(是Alibaba公司基于SpringBoo技术实现的一个注册中心,本质上也是一个web服务)
- Nacos 的基本架构?(Client/Server架构)
- Nacos 主要提供了什么核心功能?(服务的注册,发现,配置)
- Nacos 服务启动需要什么前置条件?(配置JDK的JAVA_HOME目录,安装MySQL5.7以上版本,配置连接的数据库)
- Nacos 服务单机模式,window平台下启动时的指令是什么?(startup.cmd -m standalone)
- 实现Nacos服务注册需要添加什么依赖?(两个:web,discovery)
- 实现Nacos服务注册时,必须做哪些配置?(服务名,假如是本机服务注册可以省略服务地址)
- Nacos如何检查服务状态?(通过心跳包实现,服务启动时会定时向nacos发送心跳包-BeatInfo)
- 服务之间进行服务调用时,使用了什么API?(RestTemplate,用此对象之前要先创建这个对象并交给spring管理)
- LoadBalancerClient对象的作用是什么?(基于负载均衡算法获取服务实例)
常见Bug分析
-
JAVA_HOME环境变量定义错误,例如:
说明,这里一定要注意JAVA_HOME单词的拼写,JAVA_HOME中定义的JDK是存在的,还有后面的路径不能有分号“;”. -
MySQL版本比较低(建议mysql5.7或mariadb10.5及以上版本),例如:
当执行nacos-mysql.sql文件时,出现如下错误:
-
sql文件不存在,例如
-
SQL文件应用错误,例如:
-
Nacos的application.properties配置文件中,连接数据库的配置错误.
-
nacos配置文件application.properties配置错误,例如:
-
服务启动时,端口被占用了。例如:
-
服务注册时,服务名不正确,格式不正确,配置文件名字不正确,或者没有配置文件,例如:
-
磁盘写权限问题(nacos服务启动时会在当前磁盘目录写日志),例如:
-
基于Nacos实现服务注册失败,例如
-
客户端500异常,例如
-
服务调用时,连接异常,例如:
-
客户端404异常,例如:
-
服务调用时底层404问题,例如:
-
服务访问问题,例如:
-
依赖注入异常,例如:
-
客户端请求方式与服务端不匹配,例如:
-
依赖版本问题,例如:
-
服务配置读取问题,例如:
课堂小技巧
- 基于idea启动nacos,例如:
- 基于idea链接database数据库,例如:
第一步:打开DataSource,找到mysql,例如:
第二步:配置连接的数据库,例如:
课后作业
- 总结课堂知识点
- 完成基于nacos的服务注册
- 完成基于RestTemplate对象实现服务调用。
- 完成基于LoadBalancerClient方式的调用。
- 预习@LoadBalanced注解的应用并尝试进行实践。
以上是关于2109-微服务课上问题分析及总结的主要内容,如果未能解决你的问题,请参考以下文章