微服务项目发布及调用等面试题

个人博客

欢迎访问个人博客: https://www.crystalblog.xyz/

备用地址: https://wang-qz.gitee.io/crystal-blog/

1. 为什么不选择dubbo? 却选择SpringCloud?

dubbo属于RPC框架, 底层是netty封装;

SpringCloud不属于RPC框架, 属于微服务全家桶框架, 提供了分布式微服务整套解决方案.

  • 服务治理: nacos, eureka, zookeeper, consule

  • 分布式配置中心 nacos, springcloud config, 携程阿波罗

  • 服务追踪 zipkin/skwalking

  • 服务保护 hystrix, sentinel

  • 微服务网关 zuul, gateway

SpringCloud中feign客户端就是RPC框架, 类似于Dubbo.

feign接口调用是使用http协议.

dubbox接口调用使用http协议, 是当当网提供.

开放平台(阿里, 腾讯…) http协议, 可以跨平台.

Doubbo与Feign都是面向接口调用, 底层思想原理都是相同的.

2. 服务正在发布中? 如何不影响用户使用?

服务正在发布中, 当前jar正在启动…, 客户端访问的时候, 一直阻塞等待.

方式1: 使用Nginx故障转移即可.

方式2: 灰度发布, 先发布一小部分(预发布), 如果没有问题, 再让所有用户都可以访问. nginx + gateway + nacos (推荐)

3. 对方调用你的接口响应比较慢, 你会怎么排查?

对方调用你接口响应比较慢, 多个维度思考.

(1) 带宽→服务处理(cpu)→数据库或Redis→网络IO操作(例如调用别人接口)

  • 走外网传输数据, 会有带宽的限制(比如128kb/s)

(2) 请求到达服务端, 服务没有足够线程处理该请求, 导致客户端阻塞等待.

解决办法:

  • 调整最大线程数
  • 调整最大线程数治标不治本, 对接口做服务熔断, 降级,限流处理(如果服务端没有足够线程处理)

(3) 服务cpu处理性能(多核cpu),体现多线程同时处理, 降低cpu上下文切换的次数.

  • 上下文切换会导致其他的线程短暂阻塞, 后面重新被cpu调度

(4) 判断sql语句查询是否比较慢, 做mysql调优, 快速响应结果

(5) 网络IO操作(例如调用别人接口), 代码优化还是比较慢, 将耗时的操作采用异步的形式处理. 例如多线程(消耗cpu资源), 建议使用MQ.

4. 你在开发过程中, 遇到哪些难题? 你是怎么解决的呢?

如果在面试中被问到这个问题, 不要答: 空指针异常, 常见错误异常.

可以从下面的方向答:

(1) 分布式事务

(2) 定时任务调度

例如:我们项目在生产环境中做定时任务, 如果集群的情况下, 定时任务重复执行.

解决该问题:

​ 在构建jar包的时候, 加上一个开关, 只让一个jar包执行定时任务.

整合分布式任务调度平台 xxl-job, 最终分片执行, 定时任务集群执行.

(3) 分布式幂等

例如: 我们公司提供了一个接口, 被其他公司进行调用. 其他公司在调用我们接口时, 我们接口响应超时了. 最终触发了客户端重试了, 导致我们接口会重复执行业务逻辑.

解决方法: 全局id业务上防重复, 在db层面去重复, 例如创建唯一约束.

(4) 数据同步延迟问题

我们公司使用canal解决mysql与redis+kafaka数据同步问题.

发现在并发的情况下,同步数据延迟, 我们整合kafaka分区模型, 根据每张表自己独立的topic主题

(5) 安全性问题

(6) 生产环境发生CPU飙高, 内存泄漏等

… 真实业务场景中遇到的问题, 如何分析问题→如何排查问题→如何解决问题

5. 开发者不小心删除了生产环境数据? 怎么恢复呢?

(1) 正常情况下,在生产环境中, 没有delete操作权限, 通过update隐藏的形式, 后期淘汰策略删除.

(2) 构建mysql主从集群环境, 可以通过备份节点恢复数据, 一主一从.

(3) 如果执行delete, 可以通过binlog快速恢复数据.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值