当前位置:网站首页 > 微服务架构 > 正文

springcloud微服务架构面试题

什么是微服务

微服务架构的基础是将的那个应用程序开发为一组小型独立服务,这些独立服务在自己的进程中运行,独立开发和部署。

SpringCloud Alibaba微服务:

Spring Cloud Alibaba 是Spring Cloud的一个子项目,致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。


核心组件

服务限流降级:

默认支持WebServlet、OpenFeign、RestTemplate、Spring Cloud GateWay、RocketMQ限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级Metrics监控

服务注册与发现:

基于Spring Cloud服务注册与发现标准,借助Nacos进行实现,默认还继集成了Ribbon支持

分布式配置管理:

基于Nacos支持分布式系统中的外部化配置,配置更改时自动刷新

消息驱动能力:

基于spring Cloud Stream为微服务应用构建消息驱动能力

分布式事务:

使用@GlobalTransactional注解,高效并且对业务零侵入地解决分布式事务问题

IVProjects (工作区/空项目)
├── 01-sca   //(微服务父工程)
     ├── sca-provider            //服务提供方法
     ├── sca-consumer         //服务消费方法
     ├── sca-gateway            //网关服务

相关配置:

一:配置JDK编译环境

聚合工程在编译时,需要对相关依赖的工程进行一起编译,所以要做一些配置

 指定JDK编译版本:

 配置工作区中项目编码方式

 第二步:配置项目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</artifactId> <version>1.0-SNAPSHOT</version> <dependencyManagement> <dependencies> <!--spring boot 核心依赖版本定义(spring官方定义)--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.3.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR9</version> <type>pom</type> <scope>import</scope><!--引入三方依赖的版本设计--> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.6.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> </dependency> <!--mybatis依赖包--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1.tmp</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!--lombok 依赖,子工程中假如需要lombok,不需要再引入--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope><!--provided 表示此依赖仅在编译阶段有效--> </dependency> <!--单元测试依赖,子工程中需要单元测试时,不需要再次引入此依赖了--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <!-- <scope>test</scope>&lt;!&ndash;test表示只能在test目录下使用此依赖&ndash;&gt;--> <exclusions> <exclusion><!--排除一些不需要的依赖--> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.60</version> <scope>compile</scope> </dependency> <!--其它依赖...--> </dependencies> <build> <plugins> <!--通过maven-compiler-plugin插件设置项目 的统一的jdk编译和运行版本--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <!--假如本地库没有这个版本,这里会出现红色字体错误--> <version>3.8.1</version> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> </build> </project>

Spring-Cloud一套完整的服务就需要以下部分中间件。

核心组件:

微服务指多个服务模块,而多个服务模块就需要一个服务注册中心,将多个模块融合在一起。并且可以进行模块相互之间互相调用。---Nacos

每个模块创建好后,需要统一的网关路径,设置路径跳转。所有的模块路径接口,都可以在网关服务中进行配置。 ---Gateway

登录安全认证框架:SpringCloud微服务架构


SpringCloud微服务架构

Nacos服务注册中心:SpringCloud微服务架构

Sentinel限流熔断:SpringCloud微服务架构

网关Gateway:

SpringCloud微服务架构

消息中间件:

SpringCloud微服务架构SpringCloud微服务架构

ES分析引擎实时搜索:

SpringCloud微服务架构

Redis缓存:

SpringCloud微服务架构

下面忽略:所有微服务相关中间件在上面都有对应文章

在vo包下编辑SysResult对象(SysResult.java)

说明: 该对象主要负责前端项目与后端项目的数据交互. 几乎所有的后台服务器的返回值都是SysResult对象.

package com.jt.vo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.io.Serializable; @Data @Accessors(chain = true) @NoArgsConstructor @AllArgsConstructor public class SysResult implements Serializable { private Integer status; //200业务执行成功 201业务执行失败 private String msg; //服务器的提示信息 private Object data; //封装后台返回值 public static SysResult fail(){ return new SysResult(201,"业务执行失败",null); } public static SysResult success(){ return new SysResult(200,"业务执行成功",null); } //服务器返回业务数据 public static SysResult success(Object data){ return new SysResult(200,"业务执行成功",data); } public static SysResult success(String msg,Object data){ return new SysResult(200,msg,data); } } 

lamda表达式遍历数组:

 List<String> datas = new ArrayList<>(); //遍历 datas.forEach(item->{ System.out.println(item); });

到此这篇springcloud微服务架构面试题的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

  • 上一篇: 服务管理关系包括
  • 下一篇: 互联网saas平台
  • 版权声明


    相关文章:

  • 服务管理关系包括2024-10-30 23:06:24
  • 【微服务架构】Spring Cloud入门概念讲解2024-10-30 23:06:24
  • 微服务架构详解_微服务架构设计2024-10-30 23:06:24
  • 微服务 可靠性2024-10-30 23:06:24
  • 微服务 集成2024-10-30 23:06:24
  • 互联网saas平台2024-10-30 23:06:24
  • 微服务架构风格_互联网saas平台2024-10-30 23:06:24
  • 搭建微服务架构2024-10-30 23:06:24
  • 论微服务架构及其应用 软考2024-10-30 23:06:24
  • 微服务架构教程2024-10-30 23:06:24
  • 全屏图片