微服务是一种架构风格,我们可以把应用程序划分为一组小型的、松散耦合的服务,
每个服务都运行在自己的进程中,并通过轻量级的通信机制进行通信,
每个服务都是独立部署、独立扩展、独立更新的,从而提高了应用程序的可伸缩性、可维护性和可测试性;
微服务架构本身就是一种分布式架构,它强调的是对部署在各个计算机上的应用服务的粒度;
它的核心思想是,针对拆分的服务节点做更进一步的解耦;拆分的好处是使得程序的扩展性更强,开发迭代效率更高;
微服务中服务调用流程:包括服务注册、发现、负载均衡、请求调用、容错处理、响应返回等步骤,依赖注册中心、网关、容错组件等。
好处:实现模块化、独立部署、技术异构、高可用、分布式协作,提升系统灵活性和可维护性。
以电商系统为例:
- 用户下单时,订单服务通过 OpenFeign 调用库存服务检查库存。
- 订单服务从 Nacos 获取库存服务的实例列表,使用 Ribbon 选择一个实例。
- 请求通过 HTTP 发送到库存服务,库存服务扣减库存并返回结果。
- 若库存服务超时,Hystrix 触发降级,返回默认提示"库存不足"。
服务熔断是一种保护机制,当某个微服务调用频繁失败或响应过慢时,触发熔断器打开,暂时阻止对该服务的后续请求,直接返回预设的错误响应 ;
作用:
防止故障扩散:避免因某个服务故障导致调用链上的其他服务也受到影响(雪崩效应)。
快速失败:当服务不可用时,直接返回默认响应,减少客户端等待时间。
自我恢复:熔断器会定期尝试少量请求(半开状态),若服务恢复则关闭熔断器,恢复正常调用。工作原理: 熔断器通常有三种状态:
关闭:正常状态,所有请求都尝试调用目标服务。
打开:如失败率过高,熔断器打开,拒绝所有请求,返回默认响应。
半开:经过一段时间,允许少量请求尝试调用,若成功则关闭熔断器,否则重新打开。
场景:调用支付服务时,连续多次超时,触发熔断器打开,后续请求直接返回"服务不可用"提示,防止进一步调用导致系统过载。
服务降级是指当系统资源紧张或服务不可用时,主动降低服务质量或功能,优先保证核心功能的正常运行,牺牲非核心功能以维持系统整体稳定性;
作用:保障核心功能,提升用户体验:通过返回简化数据或默认响应,避免用户看到错误页面;
系统稳定性:通过减少资源消耗,防止系统崩溃;
场景:在电商促销期间,商品详情页的推荐服务因流量过高不可用,系统降级为不显示推荐商品,仅展示商品基本信息。
nacos:提供分布式配置管理、服务注册与发现,适合动态配置和多环境管理。openFeign+Ribbon:简化服务调用并提供客户端负载均衡,适合微服务间通信。
网关:作为统一入口,通过断言匹配路由规则,通过过滤器处理请求。
Sentinel:阿里巴巴开源的流量控制和容错框架,用于微服务架构中的流量治理、熔断降级和系统保护。
核心功能:流量控制、熔断降级、热点限流、系统保护,支持动态规则配置和实时监控。
微服务中的作用:防止服务雪崩、应对流量高峰、提升系统稳定性,简化容错开发。
优势:轻量、灵活、易集成,适合复杂分布式系统。