微服务&Dubbo

文章目录

      • 一、微服务相关
        • [1、能说下 http 和rpc 的区别?](#1、能说下 http 和rpc 的区别?)
        • 2、说说有哪些负载均衡算法?
        • [3、如何知道线上的 QPS?](#3、如何知道线上的 QPS?)
        • [4、 Sentinel 限流熔断降级核心源码剖析](#4、 Sentinel 限流熔断降级核心源码剖析)
        • [5、分布式事务 (seata)](#5、分布式事务 (seata))
        • 6.序列化与反序列化
      • [二、Dubbo 底层原理与源码](#二、Dubbo 底层原理与源码)
        • [1、 为什么不注入实现类而是接口?通过按口怎么找到具体的提供者实现方法?](#1、 为什么不注入实现类而是接口?通过按口怎么找到具体的提供者实现方法?)
        • 2、注册中心为什么是一个单独的服务?
        • [3、rpc 和 grpc有什么区别?](#3、rpc 和 grpc有什么区别?)
        • [4、http 和 http2 有什么区别?](#4、http 和 http2 有什么区别?)
        • [5、 tcp 为什么可以多路复用?](#5、 tcp 为什么可以多路复用?)

一、微服务相关

1、能说下 http 和rpc 的区别?

可以说 rPC包含 http

http:种应用层协议,主要强调网络通信

rpc:远程调用过程,是一种分布式系統之间的通信协议,强调的是服务与服务间的远程调用。一些PC 框架,如 gIRC, 底层用的就是 http2

2、说说有哪些负载均衡算法?

轮询、加权、随机、加权、最少链接、哈希(取模)

3、如何知道线上的 QPS?

微服务自动化监控 Prometheus&Grafana,每秒 3000 算是比较高的

4、 Sentinel 限流熔断降级核心源码剖析

核心:滑动时间窗口计数实现(每个时问段内统计事件数量,以滑动的方式将时间向后推进行统计)

5、分布式事务 (seata)

AT模式(默认)

前提:基于支持本地 ACID 事务的关系型数据库+java应用:通过jdbc 访问数据库

整体机制:两阶段提交协议的演变

一阶段:业务数据和回滚日志,记录在同一个事务中提交,释放锁和资源

二阶段:回漆通过一阶段的回滚日志进行反向补偿 (比如如果是新增了,就删除)

6.序列化与反序列化

serializable 是一个标记接口,实现该接口的类在 jvm 检查时进行标记该类可序列化,然后将该类转换为字节流。保证了对象在不同机

器、进程间的通信(因为转化为字节流不会乱码)推荐手动加一个序列化 id 可以提高安全性(避免黑容算改字节流),也能避免不同编泽器

jdk版本不同出现反序列化不兼容问题

二、Dubbo 底层原理与源码

1、 为什么不注入实现类而是接口?通过按口怎么找到具体的提供者实现方法?

实现类太稱合,里面代码太多,可能涉及数据库链接等问题。

通过本地注册表(map)将接口,版本号 (@Service (version=" 1.0")),实现类等进行存储,如果多个类实现一个接口,通过版本号来进行区分(如果不传版本号直接报错)

2、注册中心为什么是一个单独的服务?

因为要保证服务提供者和消费者部分数据的共享,注册中心将服务提供者的IP暴露到注册中心(如果是集群 List,具体选择哪个提供者,就用到了负载均衡)。注意:服务消费者会有本地缓存,从注册中心获取的 IP 会缓存一份到本地

3、rpc 和 grpc有什么区别?

grpc是基于 http2协议的高性能远程过程调用框架,比rpc具备更高效的序列化机制和网络传输速度,像K8s就是使用的 grpc (如 API Server、 Controller Manager 等之间就是使用的 grpc通信)

4、http 和 http2 有什么区别?

http2是http 协议的一个较新版本,与http 相比有显著的区别,并不是简单的 http 改进。

1) 多路复用:http2引入了多路复用机制,允许在同一个tpc链接上同时请求和接收多个响应,减少了因建立多个链接引起的延迟和资源占用,提供了效率。

2)二进制协议:http 使用的是文本传输,http2使用了更高效的二进制格式来传输数据。

3)服务器推送:http2允许服务器主动向容户端推送资源,减少了客户端端的额外请求。

4) 头部压缩:http2 使用了头部压缩算法,减少了头部信息,有利于降低延迟。

5、 tcp 为什么可以多路复用?

头部信息和数据的分段机制。使用 tcp传输数据时,tcp会将数据分成小块,并且在小块头部加入一些信息 (源端口、目标端口等)。这些信息告诉接收方怎么将小块组装成完整数据,这样 tcp 就可以在一个'通道'上传输多个独立的数据流,实现了多路复用。

相关推荐
晚安日记wanna5 分钟前
批量请求失败只弹一个 Toast面试官想听五层
前端·面试·架构
大模型码小白10 分钟前
告别造假数据,直接连数据库查真实时序数据喂给 TimechoAI 大模型
java·数据库·人工智能·microsoft·架构
晚安日记wanna14 分钟前
大表 DDL 面试翻车现场Online DDL 为什么还会锁死业务
数据库·面试·架构
晚安日记wanna16 分钟前
MySQL 主从延迟别只答并行复制
数据库·面试·架构
狼与自由40 分钟前
MCP协议理解
人工智能·架构
天远API3 小时前
零信任架构实战:基于天远单人婚姻查询构建自动化联合贷款审计网关
java·人工智能·架构·自动化
海宇AI3 小时前
零信任架构实战:基于海宇公安二要素认证即时版构建自动化灵活用工准入网关
运维·人工智能·架构·自动化
荆棘鸟智能3 小时前
AI算法持续学习与迭代怎么做?从数据闭环到灰度发布的MLOps工程实践
人工智能·算法·架构·边缘计算
️公子5 小时前
DeepSeek V4.1 Flash 今日接管 Pro 流量:552B MoE + 非对称架构,Agent 推理成本怎么砍?
架构·开源·大模型·api·agent·deepseek
这个DBA有点耶5 小时前
数据库数据同步解决方案怎么选?6款主流工具横向对比与信创选型指南
数据库·架构·dba