JAVA面试——微服务(一)

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: JAVA面试——微服务

7.1.1. 服务注册发现

服务注册就是维护一个登记簿,它管理系统内所有的服务地址。当新的服务启动后,它会向登记

簿交待自己的地址信息。服务的依赖方直接向登记簿要 Service Provider 地址就行了。当下用于服

务注册的工具非常多 ZooKeeper,Consul,Etcd, 还有 Netflix 家的 eureka 等。服务注册有两种

形式:客户端注册和第三方注册。

7.1.1.1.

客户端注册(zookeeper

客户端注册是服务自身要负责注册与注销的工作。当服务启动后向注册中心注册自身,当服务下

线时注销自己。期间还需要和注册中心保持心跳。心跳不一定要客户端来做,也可以由注册中心

负责(这个过程叫探活)。这种方式的缺点是注册工作与服务耦合在一起,不同语言都要实现一

套注册逻辑

image.png

7.1.1.2.

第三方注册(独立的服务 Registrar

第三方注册由一个独立的服务Registrar负责注册与注销。当服务启动后以某种方式通知Registrar,

然后 Registrar 负责向注册中心发起注册工作。同时注册中心要维护与服务之间的心跳,当服务不

可用时,向注册中心注销服务。这种方式的缺点是 Registrar 必须是一个高可用的系统,否则注册

工作没法进展。

image.png


7.1.1.3.

客户端发现

客户端发现是指客户端负责查询可用服务地址,以及负载均衡的工作。这种方式最方便直接,而

且也方便做负载均衡。再者一旦发现某个服务不可用立即换另外一个,非常直接。缺点也在于多

语言时的重复工作,每个语言实现相同的逻辑。

image.png

7.1.1.4.

服务端发现

服务端发现需要额外的 Router 服务,请求先打到 Router,然后 Router 负责查询服务与负载均衡。

这种方式虽然没有客户端发现的缺点,但是它的缺点是保证 Router 的高可用。

image.png

7.1.1.5.

7.1.1.6.

7.1.1.7.

7.1.1.8.

Consul

Eureka

SmartStack

Etcd

7.1.2. API 网关

API Gateway 是一个服务器,也可以说是进入系统的唯一节点。这跟面向对象设计模式中的

Facade 模式很像。API Gateway 封装内部系统的架构,并且提供 API 给各个客户端。它还可能有

其他功能,如授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等。下图展示了一

个适应当前架构的 API Gateway。

image.png

API Gateway 负责请求转发、合成和协议转换。所有来自客户端的请求都要先经过 API Gateway,

然后路由这些请求到对应的微服务。API Gateway 将经常通过调用多个微服务来处理一个请求以

及聚合多个服务的结果。它可以在 web 协议与内部使用的非 Web 友好型协议间进行转换,如

HTTP 协议、WebSocket 协议。

7.1.2.1.

请求转发

服务转发主要是对客户端的请求安装微服务的负载转发到不同的服务上

7.1.2.2.

响应合并

把业务上需要调用多个服务接口才能完成的工作合并成一次调用对外统一提供服务。

7.1.2.3.

协议转换

重点是支持 SOAP,JMS,Rest 间的协议转换。

7.1.2.4.

数据转换

重点是支持 XML 和 Json 之间的报文格式转换能力(可选)

7.1.2.5.

安全认证

1. 基于 Token 的客户端访问控制和安全策略

2. 传输数据和报文加密,到服务端解密,需要在客户端有独立的 SDK 代理包

3. 基于 Https 的传输加密,客户端和服务端数字证书支持

4. 基于 OAuth2.0 的服务安全认证(授权码,客户端,密码模式等)

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
8天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
33 2
|
13天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
19天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
15天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
40 4
|
16天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
56 4
|
28天前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
54 5
|
27天前
|
存储 Java
[Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
本文介绍了Java中`try...catch...finally`语句的使用细节及返回值问题,并探讨了JDK1.7引入的`try...with...resources`新特性,强调了异常处理机制及资源自动关闭的优势。
21 1
|
1月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
28 3
|
1月前
|
负载均衡 算法 Java
微服务面试篇
微服务面试篇
54 2
|
26天前
|
算法 Java
JAVA 二叉树面试题
JAVA 二叉树面试题
16 0