• 业务开发时,接口不能对外暴露的解决方案


    1.内外网接口微服务隔离

    将对外暴露的接口和对内暴露的接口分别放到两个微服务上,一个服务里所有的接口均对外暴露,另一个服务的接口只能内网服务间调用。

    该方案需要额外编写一个只对内部暴露接口的微服务,将所有只能对内暴露的业务接口聚合到这个微服务里,通过这个聚合的微服务,分别去各个业务侧获取资源。

    该方案,新增一个微服务做请求转发,增加了系统的复杂性,增大了调用耗时以及后期的维护成本。

    2.网关 + redis 实现白名单机制

    在 redis 里维护一套接口白名单列表,外部请求到达网关时,从 redis 获取接口白名单,在白名单内的接口放行,反之拒绝掉。

    该方案的好处是,对业务代码零侵入,只需要维护好白名单列表即可;

    不足之处在于,白名单的维护是一个持续性投入的工作,在很多公司,业务开发无法直接触及到 redis,只能提工单申请,增加了开发成本;另外,每次请求进来,都需要判断白名单,增加了系统响应耗时,考虑到正常情况下外部进来的请求大部分都是在白名单内的,只有极少数恶意请求才会被白名单机制所拦截,所以该方案的性价比很低。

    3.方案三 网关 + AOP

    相比于方案二对接口进行白名单判断而言,方案三是对请求来源进行判断,并将该判断下沉到业务侧。避免了网关侧的逻辑判断,从而提升系统响应速度。

    我们知道,外部进来的请求一定会经过网关再被分发到具体的业务侧,内部服务间的调用是不用走外部网关的。

    根据这个特点,我们可以对所有经过网关的请求的header里添加一个字段,业务侧接口收到请求后,判断header里

  • 相关阅读:
    安卓大作业 图书管理APP
    linux命令(ls ,cd,pwd)
    ELK安装、部署、调试 (二) ES的安装部署
    什么是阿里云Intel Xeon(Ice Lake) Platinum 8369B服务器?
    Leetcode—2520.统计能整除数字的位数【简单】
    python3彻底卸载与安装教程
    Leetcode 416、分割等和子集
    sku详情接口
    RabbitMQ之延迟队列解读
    制造业数字化转型-项目案例合集
  • 原文地址:https://blog.csdn.net/m0_53914150/article/details/128167178