微服务架构与实践笔记(三)微服务关键技术之服务接入

本文探讨微服务中的服务接入,包括边缘服务和API网关的角色。边缘服务简化外部调用,如BFF,适应多设备需求。API网关负责请求路由、协议转换和公共功能,如认证、限流。同时,文章提到了微服务数据一致性挑战,如CAP原则和BASE理论,以及分布式事务解决方案,如2PC、3PC、TCC和Saga模式。
摘要由CSDN通过智能技术生成

本文参考文献----《微服务架构与实践(第2版)》电子工业出版社出版 王磊 等著


服务接入

  • 边缘服务:边缘服务的作用是简化外部消费者对系统的调用。它可以是纯前端的页面,用于获取多个服务的数据后提供给消费者,也可以是聚合类服务,将结果进行聚合后返回给消费者。

    边缘服务的典型场景是支撑多样化的消费者,这种情况有时候也称作 BFF(Backend for Frontend)。譬如在支撑多种终端设备的应用中,通常会对服务的结果做必要的聚合或者裁剪,然后提供给不同的设备,如 PC 端或者其他设备等。Netflix 在其微服务的实现中,通过 BFF 为几十种设备提供不同的视频数据。

  • API 网关(API Gateway):同边缘服务类似,API 网关的存在也是为了简化消费者对系统的调用。不过它更关心的是将请求有效路由到服务,而非业务逻辑的聚合。

    API 网关的主要功能如下所示:

    1. 请求路由。API 网关位于服务的外层,消费者端先将请求发送到网关,网关再路由至各服务。
    2. 协议转换。对于某些场景,服务内部实现的接口可能与消费者端期望的接口不一致。如内部使用 RPC 或私有协议,而消费者端期望 REST 接口。此时就需要通过网关完成协议的转换。
    3. 公共功能。因为 API 网关是微服务系统中的集中化部分(它同所有服务交互)。因此在实际落地过程中,可以将服务内部所需的一些公共功能,如认证、鉴权、限流、流量统计等,移至 API 网关实现,降低修改和升级成本。

    API网关的实现如下:
    在这里插入图片描述
    另外,在某些系统中,会将 API 网关作为聚合服务使用。不过笔者建议,避免将复杂的聚合逻辑放在网关内。主要原因是:

    1. 确保网关职责单一,聚焦于请求路由等功能,而非复杂逻辑的实现。
    2. 降低其替换成本。网关是服务系统中的支撑组件,随着技术的演进,应持续演进并使用更有效的技术替换。

    使用 API 网关,具有如下明显的优势:

    1. 屏蔽服务的接口变化。API 网关的存在,使消费者端使用的接口与服务内部的接口隔离开。当服务内部的接口发生变化时,可以通过网关屏蔽对消费者端的影响。
    2. 降低公共功能的维护成本。对于某些微服务系统的公共功能,如认证、授权、SSL、流量统计、流控等,通过在网关内统一处理,降低了维护成本。

    虽然 API 网关有如上所述的优点,但它也会带来新的问题:API 网关是对外的唯一入口,其发生故障将导致整个系统的不可用,API 网关性能下降会导致所有服务的性能下降。因此,需要做好 API 网关的无状态、可用性设计,并对 API 网关进行性能实测,保障具备足够的应对突发流量的能力。

  • 数据一致性
    分布式系统与数据一致性:单体应用通常会使用单一的关系型数据库来存储数据,事务的 ACID 机制会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值