微服务面试题之套路一

面试题

一、你的项目是从SpringBoot演进到微服务架构的,你在此过程中有调研过哪些技术,怎么调研落地的?

微服务通信框架:

需要选择适合项目的微服务通信框架,如Dubbo、Spring Cloud或gRPC Feign RestTemplate 等。调研方式可以是通过官方文档、技术交流社区和开源项目等途径了解各个框架的优缺点,并根据项目需求进行选型。

容器化技术:

为了更好地管理微服务,需要将每个服务打包成容器镜像,如Docker等。调研方式可以是通过官方文档、技术交流社区和实践案例等途径了解Docker的使用方法和最佳实践,并学习如何将Spring Boot应用打包成Docker镜像。

服务注册与发现:

微服务架构中的服务数量众多,需要通过服务注册与发现来定位和调用其他服务。调研方式可以是通过官方文档、技术交流社区和开源项目等途径了解ZooKeeper、Eureka或Nacos 等服务注册与发现框架的原理和使用方法。

分布式事务:

在微服务架构中,需要保证事务的一致性和可靠性。调研方式可以是通过官方文档、技术交流社区和开源项目等途径了解Seata、Atomikos或Spring Cloud Transaction等分布式事务框架的原理和使用方法。

监控和日志管理:

微服务架构中的系统复杂度较高,需要对各个服务的性能和异常情况进行监控和日志管理。调研方式可以是通过官方文档、技术交流社区和开源项目等途径了解Prometheus、Grafana、Logstash或Kibana等监控和日志管理工具的原理和使用方法。

Api网关

Api网关是微服务架构中的重要组件 Zuul \ Gateway 等 我会部署一个Api网关 所有的外部请求都会先经过API 网关 再由Api 网关路由到相应的服务器. 以上是将SpringBoot项目演进到微服务架构过程中需要调研和落地的一些技术,调研方式包括官方文档、技术交流社区和实践案例等途径。在调研过程中需要根据项目需求和项目人员进行选型,并结合实际情况进行实践和调整。

二、 如何通过啥工具来查看分析一个接口中每个部分的耗时

分布式追踪系统:

像Zipkin、Jaeger、SkyWalking等分布式追踪系统可以帮助你追踪一个请求在系统中流转的情况,包括每个部分的耗时。这些系统通常需要你在代码中集成相关的库,然后它们就可以自动收集和上报追踪数据。

APM工具:

应用性能管理(APM)工具,如New Relic、Dynatrace、AppDynamics等,可以提供全面的性能监控和分析,包括接口耗时、数据库查询耗时、外部服务调用耗时等。

Profiler工具:

像JProfiler、YourKit等Profiler工具可以帮助你分析Java应用的性能,包括方法调用的耗时。这些工具通常需要你在启动Java应用时加入相关的参数,然后它们就可以收集和展示性能数据。

Spring Boot Actuator:

如果你的应用是Spring Boot应用,那么你可以使用Spring Boot Actuator的/metrics端点来查看一些基本的性能数据,包括接口的请求次数、平均耗时等。

日志分析工具:

如果你的应用将详细的日志(包括接口调用的开始时间和结束时间)输出到文件或者发送到日志服务,那么你可以使用日志分析工具,如ELK(Elasticsearch、Logstash、Kibana)堆栈,来分析日志,从而得到接口的耗时

三、 如果一个接口性能比较差,你该如何进行优化,请说明思路以及实施路径

排查接口执行慢,可以从以下角度考虑:

  1. 看是否有慢sql,如果有慢sql ,可以根据情况选择合适的索引。如果已经有索引,看索引是否失效
  2. 看是否有使用缓存
  3. 看是否可以使用异步,异步的方式可以根据具体情况选择多线程或者消息队列
  4. 看是否有用到大事务,如果有,需要将事务进行拆分
  5. 看代码业务逻辑,是否可以进行预处理,比如某个数据在多个地方用到了,可以先提前算出来
  6. 串行改并行,比如有a,b,c三个子接口,c接口需要依赖a的结果,b接口完全独立。那么可以将a,c和b分为两组,并行执行
  7. 看设计是否合理,比如某个接口,数据可以直接查出来,产品却搞了一堆配置。这种情况可以和产品沟通,是否有必要改需求。

四、你有没有进行过架构设计,架构设计需要考虑哪些方面,你是如何去实施的?

  1. 需要考虑;从承接的需求开始,分析项目。
  2. 系统分解:将整个系统分解为可管理的部分,通常是服务或模块,以便于理解、开发和测试。
  3. 组件选择:选择合适的软件和硬件组件,包括数据库、中间件、服务框架、前端框架等。
  4. 技术栈选择:根据项目需求和团队技能选择合适的技术栈。
  5. 可扩展性:设计时要考虑系统未来的扩展,包括水平扩展(增加更多的节点)和垂直扩展(增强单个节点的能力)。 性能:确保系统设计能够满足性能要求,包括处理速度、响应时间、吞吐量等。
  6. 可靠性和容错性:系统应该能够处理各种错误情况,并且在出现部分故障时仍能保持运行。
  7. 安全性:保护系统免受未授权访问和攻击,确保数据的安全和隐私。
  8. 可维护性和可测试性:设计应该便于未来的维护和升级,同时也要便于测试。

五、 如果一个程序的内存占用过高你该如何去分析呢?

可以基于监控工具进行全链路排查,查看QPS、TPS、瞬时峰值,用户规模等。之后在针对性的分析具体的系统流程。之后结合工具 JProfiler(一般全链路监控工具是有集成的)之后就可以看到具体的内存高的代码片段,在做分析和验证处理

六、nacos 注册中心怎么判断服务端已经崩溃了?

Nacos作为注册中心,通过心跳机制来检测服务实例是否存活。每一个注册到Nacos的服务实例,都会定期向Nacos发送心跳包,表明它们的存在。默认情况下,这个心跳间隔是5秒,也就是说每5秒,服务实例就会向Nacos发送一次心跳。

如果Nacos在15秒(默认配置,也就是3个心跳周期)内没有收到某个服务实例的心跳,那么Nacos会认为这个服务实例已经下线或者崩溃,然后从服务列表中移除这个服务实例。

这个心跳间隔和超时时间都可以在Nacos的配置中修改。如果你的服务实例在高负载下运行,或者网络状况不稳定,可能需要增大这些值以避免误判。

需要注意的是,这个机制只能检测服务实例是否能够正常响应心跳,不能判断服务实例是否能够正常提供服务。如果一个服务实例虽然能够发送心跳,但是由于某种原因无法正常处理请求,那么这个服务实例仍然会被Nacos认为是存活的。在这种情况下,可能需要额外的健康检查机制来判断服务实例的状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/714800.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/714800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高性能通信之Netty

一, 同步IO(BIO)模型的架构 一般针对性能不高的情况下可以使用. 二,异步IO(NIO)模型的架构 多路复用(epoll模型):

【LeetCode:124. 二叉树中的最大路径和 + 二叉树+递归】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

前端开发人员如何做好SEO

前端开发人员如何做好SEO SEO工作不仅限于专业人员。前端开发者也可以在日常开发中实施一些代码层面的SEO优化。 以下是一些前端常用的SEO方法: 设置合理的title、keywords、description title、keywords、description对SEO至关重要,需贴合页面内容编…

Codeforces Round 931 (Div. 2) (A~B)

比赛:Codeforces Round 931 (Div. 2) (A~B) 目录:A B A题:Too Min Too Max 标签: 构造算法(constructive algorithms)贪心(greedy)数学(math) 题目大意 对数组 a 找到…

【力扣hot100】刷题笔记Day19

前言 回溯回溯回溯!早上整理档案竟然用了桶排序,不愧是算法狂魔们 79. 单词搜索 - 力扣(LeetCode) DFS class Solution:def exist(self, board: List[List[str]], word: str) -> bool:m, n len(board), len(board[0])# used…

mysql timestamp转换为datetime

MySQL timestamp转换为datetime的方法 1. 流程概述 在MySQL中,timestamp和datetime是两种不同的数据类型。timestamp存储了日期和时间,并且会自动更新,可以用于记录数据的创建和修改时间。datetime则是一个固定的日期和时间,不会自…

谈谈高并发系统的设计方法论

谈谈高并发系统的设计方法论 何为高并发系统?什么是并发(Conurrent)?什么是高并发(Hight Concurrnet)?高并发的衡量指标有哪些? 实现高并发系统的两大板块高并发系统应用程序侧的设计…

腾讯云学生服务器使用教程_申请腾讯云学生机详细流程

2024年腾讯云学生服务器优惠活动「云校园」,学生服务器优惠价格:轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年,轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年,CVM云服务器2核4G配置842.4元一年&…

还在用Jenkins?快来试试这款简而轻的自动部署软件!

最近发现了一个比 Jenkins 使用更简单的项目构建和部署工具,完全可以满足个人以及一些小企业的需求,分享一下。 Jpom 是一款 Java 开发的简单轻量的低侵入式在线构建、自动部署、日常运维、项目监控软件。 日常开发中,Jpom 可以解决下面这些…

Nginx的多线程支持探究

文章中心思想: Nginx本身并不直接支持多线程处理模型。它采用的是基于事件驱动的单线程或多进程架构,而非多线程模型。然而,通过Nginx的模块和第三方扩展,可以实现类似多线程的并发处理效果。 详细说明: Nginx,作为一款高性能的Web服务器和反向代理服务器,其架构和并发…

章节二、three.js开发入门与调试设置02;

一、轨道控制器查看物体; 1、基本概念 轨道控制器(OrbitControls)可以使得相机围绕目标进行轨道运动; 2、代码样例 // 七、创建轨道控制器(相机围绕着物体捕捉视角) const controls new OrbitControls(c…

吴恩达机器学习全课程笔记第五篇

目录 前言 P80-P85 添加数据 迁移学习 机器学习项目的完整周期 公平、偏见与伦理 P86-P95 倾斜数据集的误差指标 决策树模型 测量纯度 选择拆分方式增益 使用分类特征的一种独热编码 连续的有价值特征 回归树 前言 这是吴恩达机器学习笔记的第五篇&#xff0c…

《2023跨境电商投诉大数据报告》发布|亚马逊 天猫国际 考拉海购 敦煌网 阿里巴巴

2023年,跨境电商API接口天猫国际、京东国际和抖音全球购以其强大的品牌影响力和市场占有率,稳坐行业前三的位置。同时,各大跨境电商平台消费纠纷问题层出不穷。依据国内知名网络消费纠纷调解平台“电诉宝”(315.100EC.CN&#xff…

javaEE--后端环境变量配置

目录 pre 文件准备 最终运行成功结果 后端运行步骤 1.修改setenv文件 2.运行setenv,设置环境变量 3.查看jdk版本 4.修改mysql文件夹下的my文件 前端运行步骤 1.nodejs环境配置 2.查看node和npm版本 3.下载并运行npm 4.注册登录 pre 文件准备 最终运行…

VR转接器:破解虚拟与现实边界的革命性设备

VR转接器,这一革命性的设备,为虚拟现实体验带来了前所未有的自由度。它巧妙地连接了虚拟与现实,使得用户在享受VR眼镜带来的奇幻世界的同时,也能自由地在现实世界中活动。这一设计的诞生,不仅解决了VR眼镜续航的瓶颈问…

2、云原生安全之可视化界面rancher的部署

文章目录 1、rancher的部署1.1、安装rancher1.2、配置k8s2、部署helm3、容器安全工具neuvector此时已经部署好了k8s,使用rancher来管理 rancher简化了使用k8s的流程,可以图形化管理k8s。 参考: https://blog.51cto.com/u_15343792/5000311https://docs.rancher.cn/docs/ra…

你们团队是否有RocketMQ创建Topic、GID创建规范呢

这里是weihubeats,觉得文章不错可以关注公众号小奏技术 背景 早期在使用RocketMQ的时候,系统和开发人员不算多。所以topic的创建会非常随意,各种千奇百怪的topic 比如: order_topic、ORDER_TOPIC、order-topic 各种奇奇怪怪的风格,用_的&a…

GO结构体

1. 结构体 Go语言可以通过自定义的方式形成新的类型,结构体就是这些类型中的一种复合类型,结构体是由零个或多个任意类型的值聚合成的实体,每个值都可以称为结构体的成员。 结构体成员也可以称为“字段”,这些字段有以下特性&am…

JS清空数组方法

清空数组的方法有多种,以下是几种常见的方式: 1.使用 array.length 属性将数组的长度设为0,这样会移除数组中的所有元素: var arr [1, 3, 5]; arr.length 0; console.log(arr); // [] 2. 使用 array.splice() 方法,…

STM32 | 零基础 STM32 第一天

零基础 STM32 第一天 一、认知STM32 1、STM32概念 STM32:意法半导体基于ARM公司的Cortex-M内核开发的32位的高性能、低功耗单片机。 ST:意法半导体 M:基于ARM公司的Cortex-M内核的高性能、低功耗单片机 32:32位单片机 2、STM32开发的产品 STM32开发的产品&a…