# 八股-微服务 | 问题 | 技术性回答(关键词) | 通俗解释 | | -------------------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | | **SOA和微服务的主要区别?** | SOA:ESB企业服务总线、重量级、SOAP/WSDL协议、粗粒度服务;微服务:轻量级、RESTful/gRPC、细粒度、独立部署、去中心化治理 | SOA像一个大型集中调度中心管理所有服务,微服务像各自独立运营的小店铺,每个店铺自己管自己 | | [[什么是DevOps?]] | Development + Operations、持续集成CI、持续交付CD、自动化流水线、监控告警、基础设施即代码IaC、文化转型 | 开发和运维不再互相甩锅,而是一个团队从写代码到上线运维全程负责,用自动化工具让软件能快速、频繁、可靠地发布 | | [[什么是康威定律?]]** | "设计系统的架构受制于产生这些设计的组织的沟通结构"、组织结构决定系统架构、逆康威定律 | 你公司有几个团队,最后系统大概率就会被拆成几块。团队怎么沟通,系统模块之间就怎么交互 | | [[什么是微服务架构?优势?特点?]] | 特点:单一职责、独立部署、技术异构、去中心化、弹性伸缩;优势:故障隔离、独立扩展、技术栈灵活、团队自治、快速迭代 | 把一个大系统拆成很多小系统,每个小系统只干一件事。好处是某个功能坏了不影响其他的,哪个忙就单独加机器,不同团队可以用不同技术 | | **什么是微服务的循环依赖?** | A→B→C→A形成闭环、启动顺序问题、死锁风险、解决方案:引入中间服务、事件驱动解耦、合并服务、依赖倒置 | 服务A调用B,B调用C,C又调用A,形成"你等我,我等你"的死循环。就像三个人互相欠钱,谁都不肯先还 | | **分布式和微服务的区别?** | 分布式:多节点部署、解决性能/可用性、可以是单体拆分;微服务:架构风格、业务拆分、强调独立性和自治。微服务是分布式的一种实现方式 | 分布式是"把程序部署到多台机器上",微服务是"把一个大程序按功能拆成多个小程序"。微服务天然是分布式的,但分布式不一定是微服务 | | **微服务之间有哪些调用方式?** | 同步:HTTP/REST、gRPC、Dubbo RPC;异步:消息队列(Kafka/RabbitMQ/RocketMQ)、事件驱动;服务网格:Sidecar代理 | 同步调用像打电话,必须等对方接听回复;异步调用像发微信,发完就不管了,对方看到再处理。同步简单但会互相等待,异步解耦但复杂 | | **ServiceMesh是什么?** | 服务网格、Sidecar模式、数据平面(Envoy)、控制平面(Istio)、流量管理、可观测性、安全通信mTLS、业务代码无侵入 | 给每个微服务配一个"贴身管家"(Sidecar),所有服务间的通信、安全、监控都由管家处理,业务代码完全不用操心这些事 | | **如何进行微服务拆分?** | 按业务领域(DDD限界上下文)、按团队组织结构、按变更频率、按扩展需求;原则:高内聚低耦合、单一职责、避免分布式单体 | 先按业务功能分(订单、用户、支付各一个),再考虑哪些经常一起改的放一起,哪些访问量大的单独拆出来好加机器 | | **微服务中的CI/CD?** | CI持续集成:代码提交→自动构建→自动测试→代码质量检查;CD持续交付/部署:自动化流水线→镜像构建→环境部署→发布验证;工具:Jenkins、GitLab CI、ArgoCD | CI是代码一提交就自动帮你编译测试,有问题马上发现;CD是测试通过后自动帮你部署上线。以前手动搞一天的活,现在全自动几分钟搞定 | | **微服务治理有哪些方案?** | 服务注册发现:Nacos、Consul、Eureka、Zookeeper;配置中心:Nacos、Apollo;网关:Spring Cloud Gateway、Kong;链路追踪:SkyWalking、Zipkin、Jaeger | 服务治理就是管理众多微服务的"物业公司":谁在哪(注册发现)、配置统一管(配置中心)、门口安保(网关)、出问题能追踪(链路追踪) | | **灰度发布、蓝绿部署、金丝雀部署?** | 蓝绿:两套完整环境,一键切换;灰度/金丝雀:新版本先给少量用户,逐步扩大;区别:金丝雀强调小流量验证,灰度强调按规则逐步放量 | 蓝绿:准备两套一模一样的环境,新版本在备用环境测好后一键切换。金丝雀:新版本先让1%用户试用,没问题再慢慢扩大到所有人。就像古代矿工带金丝雀下矿探测危险 | | **限流、降级、熔断的区别?** | 限流:控制请求速率,令牌桶/漏桶算法;降级:主动关闭非核心功能,保证核心可用;熔断:自动检测故障,快速失败,防止雪崩,有半开状态恢复机制 | 限流:餐厅门口排队限制入场人数;降级:双十一时关闭退款功能,保证下单正常;熔断:某个服务挂了就暂时不调它,直接返回备用结果,防止拖垮整个系统 |