2025Java面试题超详细整理《微服务篇》

什么是微服务架构?

微服务框架是将某个应用程序开发划分为许多独立小型服务,实现敏捷开发和部署,这些服务一般围绕业务规则进行构建,可以用不同的语言开发,使用不同的数据存储,最终使得每个服务运行在自己的行程中。并且它们之间采用轻量级通信机制进行通信。

微服务的特点:

  • 单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责
  • 应用粒度:微服务的服务拆分粒度很小,例如一个用户管理就可以作为一个服务。每个服务虽小,但“五脏俱全”。
  • 面向服务:每个服务都要对外暴露Rest风格服务接口API。各种终端都可以调用,不关心语言、平台限制,也不关心服务的技术实现,只要提供Rest的接口即可。
  • 前后端分离:采用前后端分离开发,提供统一Rest接口,后端不用再为PC、移动段开发不同接口
  • 自治能力:所有的微服务都能运行在自己的进程中,服务间之间互相独立,互不干扰
  • 团队独立:每个服务都是一个独立的开发团队,
  • 技术独立:Rest接口通信,不关心使用技术
  • 部署独立,服务间虽然有调用,但要做到服务重启不影响其它服务。有利于持续集成和持续交付。每个服务都是独立的组件,可复用,可替换,降低耦合,易维护

更多Java学习指南以及最新项目场景题,需要的宝子
Java学习包传送门

缺点:

  • 可用性降低:微服务之间通过远程调用实现协作,而远程调用相对来说不稳定,需要用有效的方案来解决处理。
  • 分布式事务困难:当一个用户请求的业务设计多个微服务时,需要解决保障数据的一致性的问题
  • 全能对象(God Classes)阻止业务拆分,每个业务都有可能存在一个或多个全能对象,比如说商城项目中的订单对象,它几乎会涉及电商应用中的每一个业务,阻止你进行业务拆分

在这里插入图片描述


架构的演进

集中式架构(ORM) 垂直拆分(MVC) 分布式服务(RPC)
程序被放到一起,然后发布到一台服务器上 应用拆分成互不干扰的几个应用,以提升效率、分散流量压力 将核心业务以及公共应用程序抽取出来,作为一个稳定的服务中心
耦合度高,开发维护困难,无法水平扩展,单点容错率低,并发能力差 系统拆分分担的流量,解决了并发问题,可以针对不同模块进行优化方便水平扩展,但是代码量大,系统可靠性差,开发维护困难切成本高,不易团队合作 将基础服务进行了抽取,系统间相互调用,提高了代码复用和开发效率,但是:服务配置困难,服务间的依赖关系复杂,可能出现小服务资源浪费等问题
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

CAP理论

  • Consistency(一致性):更新操作成功并返回客户端后,所有节点在同数据完全一致。对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。
  • Availability(可用性):即服务一直可用,而且是正常晌应时间。系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。
  • Partition Tolerance(分区容错性):分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。分区容错性要求能够使应用虽然是一个分布式系统,而看上去却好像是在一个可以运转正常的整体。比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,对于用户而言并没有什么体验上的影响。

CP(高可用)和AP:分区容错是必须保证的,当发生网络分区的时候,如果要继续服务,那么强一致性和可用性只能二选一。
在这里插入图片描述


BASE理论

BASE是 Basically Available(基本可用)、 Soft state(状态)和 Eventually consistent(最终一致性)

BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于CAP
定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点
采用适当的方式来使系统达到最终一致性。

  • 基本可用
    ①晌应时间上的损失:正常情况下,处理用户请求需要0.55返回结果,但是由于系统出现故障,处理用户请求的时间变为3s。
    ②系统功能上的损失:正常情况下,用户可以使用系统的全部功能,但是由于系统访问量突然剧增,系统的部分非核心功能无法使用
  • 软状态:数据同步允许一定的延迟
  • 最终一致性:系统中所有的数据副本,在经过一段时间的同步后,最终能够达到个一致的状态,不要求实时

分布式下Session共享的方案

  • 采用无状态服务,抛弃 session
  • 存入 cookie(有安全风险)
  • 服务器之间进行 Session同步,这样可以保证每个服务器上都有全部的 Session信息,不过当服务器数量比较多的时候,同步是会有延迟甚至同步失败
  • IP绑定策略:使用 Nginx中的I
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值