2022 年最新基于 Spring Cloud 的微服务架构分析,mysql 面试笔试题

Feign 的动态代理会根据在接口上的 @RequestMapping 等注解,来动态构造要请求的服务的地址

针对这个地址,发起请求、解析响应

Feign 是和 Ribbon 以及 Eureka 紧密协作的

首先 Ribbon 会从 Eureka Client 里获取到对应的服务注册表,也就知道了所有的服务都部署在了哪些机器上,在监听哪些端口

然后 Ribbon 就可以使用默认的 Round Rob
in 算法,从中选择一台机器

  • Feign 就会针对这台机器,构造并发起请求

6. Config(分布式配置)

=================

配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git 以及 Subversion。

注册中心与 API 网关的分析

=============

微服务网关更多是在前后端分离,或者说涉及到独立的类似手机 APP 等前端应用的时候使用的最多,即把内部各个微服务组件模块的 API 接口能力统一注册和接入到网关,对于 APP 也只需要访问网关暴露的接口即可,同时通过网关还可以进一步的实现安全隔离。

也就是说在这种场景下,网关更多的是实现了接口服务的代理和路由转发能力,更多的是向外的一种能力发布。

  1. 一个独立的开发团队,为保证独立自治,以及内部多个微服务模块间的交互集成,最好启用独立的服务注册中心实现服务注册,发现能力。即开发团队内部多个微服务模块间的集成,不需要通过网关,只需要通过服务注册中心进行集成即可。

  2. 开发团队需要暴露能力给外部,包括暴露能力给其它的开发团队,需要考虑将该 API 接口注册到外部的网关上。在这里建议是拆分两个独立网关,一个是内部 API 网关,一个是放置到 DMZ 区面对公网访问的 API 网关。对于服务如果同时涉及到内部和外部使用,则两边注册。建议不要通过两次网关去路由,一个是影响性能,一个是不方便后续问题排查。

  3. 构建在开发团队之外的 API 网关必须具备负载均衡能力,可以配置多个 IP 地址。通过该 API 网关也最好具备和 Docker 容器扩展后的服务自动注册和地址加入扩展能力。

2022 年最新基于 Spring Cloud 的微服务架构分析,mysql 面试笔试题_第1张图片


Eureka 的竞品分析:Nacos、ZooKeeper、Etcd

=================================

服务发现是一个古老的话题,当应用开始脱离单机运行和访问时,服务发现就诞生了。目前的网络架构是每个主机都有一个独立的 IP 地址,那么服务发现基本上都是通过某种方式获取到服务所部署的 IP 地址。DNS 协议是最早将一个网络名称翻译为网络 IP 的协议,在最初的架构选型中,DNS+LVS+Nginx 基本可以满足所有的 RESTful 服务的发现,此时服务的 IP 列表通常配置在 Nginx 或者 LVS。后来出现了 RPC 服务,服务的上下线更加频繁,人们开始寻求一种能够支持动态上下线并且推送 IP 列表变化的注册中心产品。

2022 年最新基于 Spring Cloud 的微服务架构分析,mysql 面试笔试题_第2张图片

Eureka

======

  • Spring Cloud Eureka 所选择的是 AP,采用的是去中心化结构,放弃了强一致性。也就是说 Eureka 集群中的各个结点都是平等的,没有主从的概念。通过互相注册的方式来进行消息同步和保证高可用。并且一个 Eureka Server 结点挂掉了,还有其他同等的结点来提供服务,并不会引发服务的中断

  • Eureka 只能当注册中心,想搞配置中心的话,还得搭配 Spring Cloud Config+Spring Cloud Bus。其中后者支持 Rabbiimq 和 Kafka 两种模式。

  • 使用 Java 语言来开发的,并且也是

你可能感兴趣的:(微服务,spring,cloud,架构,java,spring)