spring cloud&Alibaba面试题

本文详细探讨了微服务架构的理解、微服务组件如Spring Cloud与Alibaba的关系,重点介绍了Nacos作为注册中心和配置中心的原理与使用,服务间通信的Feign框架及其常见问题,以及服务网关Gateway和Sentinel服务容错机制,帮助读者掌握微服务面试中的关键知识点。
摘要由CSDN通过智能技术生成

1. 微服务个人理解

1、将微服务划分为外部服务和内部服务

外部服务:以终端划分的外部服务,如api-admin、api-pc、api-applets、api-app、api-h5,提供对外(用户)的API 接口数据 。

外部服务提供Feign服务通信调用内部服务获取数据。

内部服务:如订单服务、用户服务、商品服务、内容服务等内部服务,提供增删改查(搜索)等基本数据库操作

2. 什么是微服务?什么是服务治理(SOA governance)?

一:什么是微服务?
微服务是一种分布式系统架构风格,它的核心理念是将传统的单一应用开发为一组微型服务,每个服务运行在独立的进程中,服务之间采用轻量级通信机制进行相互调用。

3. 什么是Spring Cloud&&Alibaba?

Spring Cloud是Spring开源组织下的一个子项目,提供了一系列用于实现分布式微服务系统的工具集,帮助开发者快速构建微服务应用。

Spring Cloud Alibaba是Spring Cloud的子项目;包含微服务开发必备组件;基于和符合Spring Cloud标准的阿里的微服务解决方案。

4. 注册中心-Nacos(client端)和配置中心(server端)

参考:https://www.jianshu.com/p/39ade28c150d

4.1 什么是Nacos?

英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心。
​​在这里插入图片描述

4.2 Nacos注册中心原理

在这里插入图片描述
服务提供者、服务消费者、服务发现组件这三者之间的关系大致如下

1、微服务在启动时,将自己的网络地址等信息注册到服务发现组件(nacos server)中,服务发现组件会存储这些信息。

2、各个微服务与服务发现组件使用一定机制通信(例如在一定的时间内发送心跳包)。服务发现组件若发现与某微服务实例通信正常则保持注册状态(up在线状态)、若长时间无法与某微服务实例通信,就会自动注销(即:删除)该实例。

3、服务消费者可从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口。

4、当微服务网络地址发生变更(例如实例增减或者IP端口发生变化等)时,会重新注册到服务发现组件。

4.3 Nacos注册中心使用【Nacos-Client客户端】

(1)pom文件加依赖:alibaba-nacos-discovery

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

(2)启动类加注解

//Nacos服务端【早期版本需要加注解,现在0.0.9版本后已不是必须的】
@EnableDiscoveryClient

(3)在对应的微服务的yml配置文件【服务名称和nacos server 地址】

spring:
  cloud:
    nacos:
      discovery:
        #指定nacos server的地址,不需要写http
        server-addr: localhost:8848 

4.4 Nacos配置中心使用【Nacos-Server服务端】

(1)在服务上配置 nacos-server 配置中心

1。加依赖–alibaba-nacos-config

<!--nacos-config nacos管理配置的依赖-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2。无注解

3。加配置,新增bootstrap.yml文件配置,配置属性如下

spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848 #这里的server-addr用作配置管理
        file-extension: yaml
  application:
    name: user-server
  profiles: # profiles区分多环境配置
    active: dev #切换配置文件,如dev、test、pro等环境

(2)配置中心包含:配置管理、服务管理(微服务管理)、命名空间、集群管理

在这里插入图片描述

4.5 通过配置更改动态刷新参数–@RefreshScope注解

普通application参数在配置中心直接配置皆可,如果需要可以动态刷新的配置,需要在相应类上加上@RefreshScope注解,示例如下,当在nacos配置中心更改配置后,方法getId的值也会刷新。

@RefreshScope
public class IdEntity {
   
    @Value("${id}")
    private int id
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值