微服务&Dubbo

一、微服务相关

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

可以说 rpc包含 http
http:一种应用层协议,主要强调网络通信
rpc:远程调用过程,是一种分布式系統之间的通信协议,强调的是服务与服务间的远程调用。一些rpc框架,如 grpc底层用的就是 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 就可以在一个’通道’上传输多个独立的数据流,实现了多路复用。

6、 dubbo和feign的对比?

看了很多,这篇博客总结的更好,就不自己总结了 dubbo和feign的对比

总结:feign属于spring cloud的产物,spring cloud整机,dubbo需要自己组装;整机的性能有保证,组装的机子更自由。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值