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

文章目录

  • Day01~微服务架构入门
    • 常见问题分析
    • 常见Bug分析
    • 课后作业
    • 作业答案
  • Day02~Nacos 注册中心入门
    • 常见问题分析
    • 常见Bug分析
    • 课后作业

Day01~微服务架构入门

常见问题分析

  • 为什么需要微服务?(对系统分而治,解决因并发访问过大带来的系统复杂性(例如:业务,开发,测试,升级,可靠性等)
  • 微服务设计的特点?(单一职责,独立进程,开发测试效率高,可靠性高,升级难度小,但会带来一定的维护成本)
  • 微服务解决方案有哪些?(大厂自研,中小企业采用开源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 工程创建,例如:
    12-2107课上问题分析及总结_第1张图片
  • sca-provider 工程引入sca-common工程依赖
   <dependencies>
        
        <dependency>
            <groupId>com.jtgroupId>
            <artifactId>sca-commonartifactId>
            <version>1.0-SNAPSHOTversion>
        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.bootgroupId>
    <artifactId>spring-boot-starterartifactId>
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 指令,例如:
    12-2107课上问题分析及总结_第2张图片
    方式2:假如是window平台还可以通过,如下方式进行检查,例如:
    12-2107课上问题分析及总结_第3张图片

  • 检查自己电脑环境中的JVM虚拟机是否为64位的,例如:
    12-2107课上问题分析及总结_第4张图片

  • 登录mysq,检查mysql或maridb的版本,例如:
    12-2107课上问题分析及总结_第5张图片

Day02~Nacos 注册中心入门

常见问题分析

  • 注册中心诞生的背景? (服务多了,需要对服务进行更好管理)
  • 市场上常用的注册中心?(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 服务注册失败,例如
    12-2107课上问题分析及总结_第6张图片

  • 客户端500异常,例如
    12-2107课上问题分析及总结_第7张图片

  • 服务调用时,连接异常,例如:
    12-2107课上问题分析及总结_第8张图片

  • 服务调用时底层404问题,例如:
    12-2107课上问题分析及总结_第9张图片

课后作业

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

你可能感兴趣的:(java)