12-2107课上问题分析及总结

Posted 雨田说码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12-2107课上问题分析及总结相关的知识,希望对你有一定的参考价值。

Day01~微服务架构入门

核心知识点

  • 微服务架构诞生的背景(分而治之~北京一个火车站到多个火车站)
  • 微服务架构解决方案(大厂自研,Spring Cloud ~Netflix,Alibaba,…)
  • 微服务架构下Maven项目的创建方式?(Maven聚合项目~资源复用,简化编译,打包,部署方式)
  • 微服务架构入门聚合项目创建?(01-sca,sca-consumer,sca-provider,sca-gateway,sca-common)

常见问题分析

  • 为什么需要微服务?(对系统分而治,解决因并发访问过大带来的系统复杂性(例如:业务,开发,测试,升级,可靠性等)
  • 微服务设计的特点?(单一职责,独立进程,开发测试效率高,可靠性高,升级难度小,但会带来一定的维护成本)
  • 微服务解决方案有哪些?(大厂自研,中小企业采用开源Spring Cloud Alibaba,Spring Cloud Netfix等 )
  • 微服务设计中需要哪些关键组件(服务的注册,发现,配置,限流降级,访问入口管理,分布式事务管理等)
  • 创建聚合工程的目的?(实现工程之间资源的的共享)
  • 如何修改聚合工程中项目的编译和运行版本?(build->plugins->plugin->maven-compiler-plugin)
  • maven工程中build元素的作用?(定义项目的编译,打包方式)
  • maven父工程的packaging元素内的值是什么?(pom)
  • maven父工程中dependencyManagement元素的作用是什么?(定义项目的版本)

常见Bug分析

  • 依赖或插件无法下载或加载?(本地库冲突,网络不好,maven镜像配置,指定版本在远程服务器不存在,清idea缓存后重启)
  • 项目的pom.xml文件有删除线?(idea/setting/build,Execution,Deployment/build Tools/maven/ignore Files)

课后作业

  • 基于原有工程结构,在01-sca工程下创建sca-common工程.
  • 在sca-provider工程中引入sca-common工程依赖.
  • 在sca-provider工程中使用sca-common工程中的一些公共类(例如StringUtils.java)
  • 检查自己电脑环境是否配置了JAVA_HOME环境变量?(set JAVA_HOME)
  • 检查自己电脑环境中的JVM虚拟机是否为64位的?(java -version)
  • 检查自己电脑环境中mysql的版本是否为5.7以上?(假如是MariaDB ,建议10.5以上)
  • 预习Nacos服务注册中心相关内容.

作业答案

  • sca-common 工程创建,例如:
  • sca-provider 工程引入sca-common工程依赖
   <dependencies>
        <!--引用sca-common工程中的资源-->
        <dependency>
            <groupId>com.jt</groupId>
            <artifactId>sca-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
  • sca-provider工程中使用sca-common工程公共类StringUtils.java
    第一步:在sca-common工程中创建StringUtil.java工具类,例如:
package com.jt.common.util;
/**
 * 自己定义一个操作字符串的工具类
 */
public class StringUtils {
    /**
     * 判断字符串的值是否为空
     * @param str 这个参数就是你要验证的字符串
     * @return true表示空
     */
    public static boolean isEmpty(String str){
        return str==null||"".equals(str);
    }
}

第二步:在sca-provider工程中添加spring-boot-start依赖,例如:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

第三步:在sca-provider工程中的test目录下定义单元测试类,并进行测试,例如:

package com.example;
import com.jt.common.util.StringUtils;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
/**
 * @SpringBootTest 注解描述的类为Spring工程的单元测试类
 */
@SpringBootConfiguration //(假如工程中有启动类,注解就不需要加了)
@SpringBootTest
public class StringTests {
    /**
     * 在当前测试类方法中,使用了sca-common项目中的StringUtils工具类
     */
    @Test
    void testStringEmpty(){
        String content="helloworld";
        boolean flag= StringUtils.isEmpty(content);
        System.out.println(flag);
    }
}
  • 检查自己电脑的JAVA_HOME环境变量?
    方式1:打开电脑的命令行窗口,输入set JAVA_HOME 指令,例如:

    方式2:假如是window平台还可以通过,如下方式进行检查,例如:

  • 检查自己电脑环境中的JVM虚拟机是否为64位的,例如:

  • 登录mysq,检查mysql或maridb的版本,例如:

Day02~Nacos 注册中心入门

核心知识点

  • 注册中心诞生的背景? (所有公司需要在工商局进行备案)
  • 注册中心的选型?(社区活跃度,稳定性,功能,性能,学习成本)
  • Nacos下载,安装,配置,启动,访问(http://ip:port/nacos)
  • 服务向Nacos的注册?(添加依赖,服务配置,启动服务并检查)
  • Nacos进行服务监控的方式?(心跳包)
  • 服务(进程)之间的调用?(借助RestTemplate.思考Spring中的JdbcTemplate,SqlSessionTemplate等对象的作用)

常见问题分析

  • 注册中心诞生的背景? (服务多了,需要对服务进行更好管理)
  • 市场上常用的注册中心?(Zookeeper,Eureka,Nacos,Consul)
  • 如何对注册中心进行选型?(社区活跃度,稳定性,功能,性能,学习成本)
  • Nacos 是什么?(是Alibaba公司基于SpringBoo技术t实现的一个注册中心,本质上也是一个服务)
  • Nacos 的基本架构?(Client/Server架构)
  • Nacos 主要提供了什么核心功能?(服务的注册,发现,配置)
  • Nacos 服务启动需要什么前置条件?(配置JDK的JAVA_HOME目录,安装MySQL5.7以上版本,配置连接的数据库)
  • Nacos 服务单机模式,window平台下启动时的指令是什么?(startup.cmd -m standalone)
  • 实现Nacos服务注册需要添加什么依赖?(两个)
  • 实现Nacos服务注册时,必须做哪些配置?(服务名,假如是本机服务注册可以省略服务地址)
  • Nacos如何检查服务状态?(通过心跳包实现)
  • 服务之间进行服务调用时,使用了什么API?(RestTemplate)

常见Bug分析

  • JAVA_HOME环境变量定义错误,例如:

    说明,这里一定要注意JAVA_HOME单词的拼写,JAVA_HOME中定义的JDK是存在的.

  • MySQL版本比较低,例如:
    当执行nacos-mysql.sql文件时,出现如下错误:

  • SQL文件应用错误,例如:

  • Nacos的application.properties配置文件中,连接数据库的配置错误.

  • 服务注册时,服务名不正确,例如:

  • Nacos 服务注册失败,例如

  • 客户端500异常,例如

  • 服务调用时,连接异常,例如:

  • 服务调用时底层404问题,例如:

课后作业

  • 重新创建新的聚合项目(例如10-sca)
  • 重新实现服务的注册和调用(ca-consumer调用ca-provider)
  • 尝试完成负载均衡方式的服务调用(参考博客文档)

Day03~服务发现及调用

核心知识点

  • 基于LoadBalancerClient 实现服务发现和负载均衡
  • @Loadbalanced注解的作用以及应用分析
  • Feign方式的服务调用实践

常见问题分析

  • 何为服务发现?(从nacos获取服务实例)
  • LoadBalancerClient的作用?(从nacos获取服务实例列表,然后本地基于负载均衡算法获取服务实例)
  • @Loadbalanced作用?(描述RestTemplate对象,让系统底层为RestTemplate对象赋能)
  • Feign是什么?(Spring Cloud微服务规范中的一组远程调用API)
  • 为什么使用Feign?(优化服务调用结构)
  • 如何使用Feign实现服务调用?(依赖,@EnableFeignClients,@FeignClient)

常见Bug分析

  • 服务启动时端口被占用,例如:

课后作业

以上是关于12-2107课上问题分析及总结的主要内容,如果未能解决你的问题,请参考以下文章

微服务课上问题总结

10-Redis课上问题总结(2107)

20165328 课上作业补交

Linux课程笔记 Day08 课上内容总结 Apache及Raid技术

《软件工程》课程总结

20155212 《信息安全系统设计基础》课程总结