当前位置: 首页 > news >正文

微服务面试问题小结( 微服务、分布式、MQ、网关、zookeeper、nginx)

什么是微服务,单体架构的优点和缺点,微服务架构的优点和缺点?

  • 单体架构
    • 优点:架构简单,维护成本低
    • 缺点:各个模块耦合度太高,当对一个模块进行更新修改时,会影响到其他模块,要一起进行修改。当存在性能瓶颈的时候,需要对整个服务进行扩容,不能有针对性的扩容,如一个程序的主要功能时其中某个服务,要对其增加机器,但因为是单体架构只有一个jar包,所以只能所有功能一起升级,哪怕某些服务所需的性能很低。
  • 微服务架构
    • 缺点:架构复杂,维护成本高,会带来很多微服务架构的问题,比如说事务问题、网络问题
    • 优点:性能高、服务之间耦合度低,服务可以并行开发,开发周期短

分布式和微服务的区别。  

  • 分布式:分散部署
    • 分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署,生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的,比如集群部署,它是把相同应用复制到不同服务器上,但是逻辑功能上还是单体应用。
  • 微服务:分散能力
    • 在做架构设计的时候,先做逻辑架构,再做物理架构,当你拿到需求后,估算过最大用户量和并发量后,计算单个应用服务器能否满足需求,如果用户量只有几百人的小应用,单体应用就能搞定,即所有应用部署在一个应用服务器里,如果是很大用户量,且某些功能会被频繁访问,或者某些功能计算量很大,建议将应用拆解为多个子系统,各自负责各自功能,这就是微服务架构。

微服务相比分布式服务来说,它的粒度更小,服务之间耦合度更低,由于每个微服务都由独立的小团队负责,因此它敏捷性更高,分布式服务最后都会向微服务架构演化,这是一种趋势, 不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难

微服务之间通讯的几种方式?有哪些优缺点?  

  • RPC:远程调用(doubbo协议)
    • 优点:相较于http调用,性能更高,RPC基于thrift实现高效的二进制传输,Http大部分通过json实现,字节大小和序列化耗时都比thrift更消耗性能。还有http协议太重了,它有请求头、请求体...
    • 缺点:架构复杂,需要引入注册中心。每个服务启动的时候都要将自己暴露的远程调用接口告诉注册中心。
  • MQ消息队列
    • 优点:解耦、异步、削峰
    • 缺点:分布式问题显得尤为突出。因为相比于同步调用方式,如果被调用服务报错了,调用方感知不到

微服务网关的几个重要的作用,网关和nginx的区别?

  • 统一鉴权,熔点限流,整个微服务后端所有的流量入口
  • nginx支持的并发量比网关要多很多。nginx能够保证到达网关的流量都是有用的流量

网关和zookeeper区别?

网关主要是负责微服务http接口的负载均衡(更侧重于客户端和后端之间的通信),而zookeeper主要负责远程调用的负载均衡(后端微服务之间的通信)

nginx几种常见的负载均衡策略。

  • 根据权重负载均衡:在轮询策略的基础上指定轮询的几率
  • 根据ip负载均衡:指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。
  • 轮询:每个请求会按时间顺序逐一分配到不同的后端服务器。
  • 随机:就是随机分配

赞👍!

相关文章:

微服务面试问题小结( 微服务、分布式、MQ、网关、zookeeper、nginx)

什么是微服务,单体架构的优点和缺点,微服务架构的优点和缺点? 单体架构 优点:架构简单,维护成本低缺点:各个模块耦合度太高,当对一个模块进行更新修改时,会影响到其他模块&#xff…...

Vue3全局变量使用

全局变量(函数等)可以在任意组件内访问,可以当组件间的传值使用。 main.js import ./assets/main.cssimport { createApp } from vue import App from ./App.vueconst app createApp(App); app.config.globalProperties.$global_id10; app.…...

拼多多海量商品数据接口API 商品详情接口 商品价格主图接口

拼多多,作为中国最大的社交电商之一,提供了丰富的商品信息和海量的用户数据。对于广大开发者而言,如何快速、准确地获取这些数据,进而开发出各种创新应用,是他们关心的问题。本文将详细介绍拼多多海量商品数据接口API的…...

结构化日志记录增强网络安全性

日志是一种宝贵的资产,在监视和分析应用程序或组织的 IT 基础结构的整体安全状况和性能方面发挥着至关重要的作用。它们提供系统事件、用户活动、网络流量和应用程序行为的详细记录,从而深入了解潜在威胁或未经授权的访问尝试。虽然组织历来依赖于传统的…...

企业架构LNMP学习笔记5

Nginx: 常见用法: 1)web服务器软件 httpd http协议 同类的web服务器软件:apache Nginx(俄罗斯)IIS(微软)lighttpd(德国) 2)代理服务器 反向代…...

Idea安装免注册版ChatGPT

文章目录 一、前期准备二、开始使用 一、前期准备 1.准备Idea开发软件并打开(VS Code同理)! 2.【CtrlAltS】快捷键调出Settings窗口,如图 3.找到NexChatGPT 此插件不需要注册,可以直接使用(高级一些的需要会员收费限…...

git操作

一、查看远程分支 使用如下git命令查看所有远程分支: git branch -r 查看远程和本地所有分支: git branch -a 查看本地分支: git branch 在输出结果中,前面带* 的是当前分支。 二、拉取远程分支并创建本地分支 方法一 使用如下…...

9 | 求出不同性别和不同科目的学生平均分数

需求描述:学生成绩分析 背景: 我们有一组学生的成绩数据,其中包括学生的姓名、性别和科目,我们需要分析不同性别和不同科目的学生平均分数。 功能要求: 从数据源中获取学生的成绩数据,包括学生姓名、性别和科目。使用Spark进行数据处理,将学生数据按性别和科目分组。计…...

Java如何发起http的get请求的实现

加哥最近做第三方接口开发,对方提供的是get方式的http请求,下面加哥给大家进行了总结如何用java代码去发送http请求并获取结果。 下面是发送get请求的工具类 1.不要求携带token的方式 public static String getUrl(String tempurl,String bm) {String…...

webRtc 示例

1、使用socket.io进行会话 2、为了方便&#xff0c;参数写死在前端了&#xff0c;前端界面1代码如下&#xff08;由界面1发起视频&#xff09;&#xff1a; <!DOCTYPE html> <html><head><title>Socket.IO chat</title><meta charset"…...

【RabbitMQ】服务启动成功,无法访问localhost:15672(RabbitMQ Management)

问题描述 RabbitMQ 服务已经启动成功&#xff0c;已经安装rabbitmq_management插件&#xff0c;无法访问RabbitMQ Management&#xff08;http://localhost:15672/&#xff09;。 原因分析 15672端口被Microsoft Edge占用。 解决方案 打开cmd终端&#xff0c;输入指令&#…...

【操作记录】pytorch_geometric安装方法

pytorch_geometric安装方法 github地址 主要不要直接pip install安装&#xff0c;会由于依赖无法安装而失败 点击here手动安装依赖 选择对应的pytorch版本&#xff0c;我的是Win10 Python3.8.3Pytorch1.8.1CUDA10.2 手动下载四个依赖包本地安装&#xff1a; 主要不要直接&am…...

EventSystem 事件系统

EventSystem 事件系统 事件系统在开发中必不可少事件系统使用观察者模式可以极大程度降低程序的耦合&#xff0c;之前的文章也讲过事件系统但是不够高效简洁&#xff0c;如何轻便高效优雅的实现一个事件呢&#xff1f;依然基于之前的AssemblyManager 程序集管理器和SingletonS…...

2.2 Vector<T> 动态数组(模板语法)

C数据结构与算法 目录 本文前驱课程 1 C自学精简教程 目录(必读) 2 动态数组 Vector&#xff08;难度1&#xff09; 其中&#xff0c;2 是 1 中的一个作业。2 中详细讲解了动态数组实现的基本原理。 本文目标 1 学会写基本的C类模板语法&#xff1b; 2 为以后熟练使用 S…...

dockerfile 例子(二)

Dockerfile由一行一行的命令语句组成&#xff0c;#开头的为注释行。Dockerfile文件内容分为四个部分&#xff1a;基础镜像信息、维护者信息、镜像操作指令以及容器启动执行指令。 接下来给大家列出Dockerfile中主要命令的说明。 FROM&#xff0c;指定所创建镜像的基础镜像。 …...

openssh---Windows下git安装配置gitlab

安装openssh 1. 专业版Win10/11默认自带&#xff0c;可以查看是否开启 1. Get-WindowsCapability -Online | Where-Object Name -like OpenSSH* 2. Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 3. Add-WindowsCapability -Online -Name OpenSSH.Serve…...

vscode宏键绑定

开发语言php 实现输入[ 得到 [];的效果 [win]ctrlp,[mac]superp 输入>keyboard 选择 在json文件里增加(目前有缺陷,sublime的设置是比较完美的.或者phpstorm默认不需要配置): {"key": "[","command": "editor.action.insertSnippet&…...

外贸企业如何借助CRM提升企业发展?

外贸企业竞争激烈&#xff0c;提高自身竞争力&#xff0c;扩大海外业务市场&#xff0c;是每个外贸企业的目标。为了实现这一目标&#xff0c;不少外贸企业借助CRM系统&#xff0c;优化业务流程&#xff0c;管理维护客户&#xff0c;从而实现可持续发展。那么&#xff0c;外贸企…...

初步了解ES

一、ES基础查询 1、es基础查询 1.1 准备数据 # 准备数据 PUT test_index/_doc/1 {"name":"顾老二","age":30,"from": "gu","desc": "皮肤黑、武器长、性格直","tags": ["黑", &…...

Linux基础(三)

一.系统基本优化 关闭selinux:getenforce 查看selinux状态setenforce 0 临时关闭vim /etc/sysconfig/selinux 永久关闭SELINUXdisabled 关闭防火墙&#xff1a;systemctl stop firewalld 临时关闭防火墙systemctl disable firewalld 永久关闭防火墙sys…...

告别文件传输烦恼:用aliyunpan快传链接实现秒级大文件分享

告别文件传输烦恼&#xff1a;用aliyunpan快传链接实现秒级大文件分享 【免费下载链接】aliyunpan 阿里云盘命令行客户端&#xff0c;支持JavaScript插件&#xff0c;支持同步备份功能。 项目地址: https://gitcode.com/GitHub_Trending/ali/aliyunpan 你是否也曾经历过…...

手把手教你用LVGL 8.x实现一个会变色的电池电量控件(附完整代码)

从零构建LVGL 8.x动态电池控件&#xff1a;变色逻辑与分辨率适配实战 在智能手表、医疗设备等嵌入式场景中&#xff0c;电池电量的可视化展示从来都不只是简单的数字堆砌。想象一下&#xff0c;当用户瞥见设备屏幕时&#xff0c;一个会随着电量降低逐渐由绿转红的电池图标&…...

保姆级教程:在Windows上用Cherry Studio和Grafana MCP服务打通本地监控数据(STDIO模式详解)

保姆级教程&#xff1a;在Windows上用Cherry Studio和Grafana MCP服务打通本地监控数据&#xff08;STDIO模式详解&#xff09; 你是否曾在调试大模型时&#xff0c;需要反复切换窗口查看服务器监控数据&#xff1f;或是苦恼于无法将Grafana的实时监控直接整合到AI对话流程中&a…...

S32K144 LPUART中断接收丢字节?手把手教你用模拟空闲中断搞定Modbus RTU

S32K144 LPUART通信优化&#xff1a;模拟空闲中断实现Modbus RTU稳定传输 工业控制系统中&#xff0c;RS485总线上的Modbus RTU通信对时序和稳定性有着严苛要求。当使用NXP S32K144这类汽车级MCU时&#xff0c;开发者常会遇到一个典型问题&#xff1a;LPUART模块在连续接收多字…...

深入RISC-V调试模块:从硬件设计视角看DM、DTM与抽象命令的实现

RISC-V调试模块硬件架构深度解析&#xff1a;从状态机到抽象命令的工程实现 1. RISC-V调试系统的硬件架构全景 在RISC-V生态系统中&#xff0c;调试模块(Debug Module, DM)作为连接外部调试器与处理器核心的关键枢纽&#xff0c;其硬件设计直接决定了芯片的可调试性。与传统的…...

GUI智能体MAI-UI-8B API调用全攻略:从基础到进阶实战

GUI智能体MAI-UI-8B API调用全攻略&#xff1a;从基础到进阶实战 1. 认识MAI-UI-8B&#xff1a;你的GUI自动化助手 MAI-UI-8B是一款专为图形用户界面(GUI)操作设计的智能体&#xff0c;它能像人类一样"看"屏幕、"理解"界面元素并执行操作。想象一下&…...

2026年程序员必看:AI Agent全面爆发,国产算力突围,这波技术红利别错过

&#x1f525;个人主页&#xff1a;北极的代码&#xff08;欢迎来访&#xff09; &#x1f3ac;作者简介&#xff1a;java后端学习者 ❄️个人专栏&#xff1a;苍穹外卖日记&#xff0c;SSM框架深入&#xff0c;JavaWeb ✨命运的结局尽可永在&#xff0c;不屈的挑战却不可须臾或…...

提升输入效率:Qwerty Learner开源键盘训练工具的肌肉记忆训练方案

提升输入效率&#xff1a;Qwerty Learner开源键盘训练工具的肌肉记忆训练方案 【免费下载链接】qwerty-learner 项目地址: https://gitcode.com/GitHub_Trending/qw/qwerty-learner Qwerty Learner是一款开源键盘训练工具&#xff0c;通过将单词记忆与英语肌肉记忆训练…...

Gemini 3.1 Pro官网架构革新解析:MoE稀疏性、多模态统一表示与技术实现

对于追求前沿AI模型底层逻辑的研究者与工程师而言&#xff0c;2026年Google发布的Gemini 3.1 Pro不仅仅是一次性能迭代&#xff0c;更是在混合专家系统稀疏性、原生多模态统一表示及动态计算分配等核心架构上的一次深度演进。 要零门槛、高自由度地探究其技术本质&#xff0c;…...

SegFormer源码解读:从注意力机制到特征融合的实现细节

SegFormer源码解读&#xff1a;从注意力机制到特征融合的实现细节 【免费下载链接】SegFormer Official PyTorch implementation of SegFormer 项目地址: https://gitcode.com/gh_mirrors/se/SegFormer SegFormer是一个基于Transformer的语义分割模型&#xff0c;它通过…...