可用性&兼容性设计
    **
    著名的 Design For Failure 思想,微服务架构采用粗粒度的进程间通信,引入了额外的复杂性和需要处理的新问题,如网络延迟、消息格式、负载均衡和容错,忽略其中任何一点都属于对“分布式计算的误解”。

    • 隔离
    • 超时控制
    • 负载保护
    • 限流
    • 降级
    • 重试
    • 负载均衡

    _
    发送时要保守,接收时要开放。按照伯斯塔尔法则的思想来设计和实现服务时,发送的数据要更保守,意味着最小化的传送必要的信息,接收时更开放意味着要最大限度的容忍冗余数据,保证兼容性。

    image.png

    • 服务提供者需要把自己的ip、端口、以及服务提供了什么样的协议,或者还有元数据信息(机房、集群等) 都注册到服务发现,服务消费者就要去一个地方集中去查询一下。然后在consumer本地初始化连接池,使用一种负载均衡方式,然后把RPC的请求发送到provider

    API Gateway
    **
    跨横切面(Cross-Cutting Concerns)的功能,需要协调更新框架升级发版(路由、认证、限流、安全),因此全部上沉,引入了 API Gateway,把业务集成度高的BFF 层和通用功能服务层API Gateway 进行了分层处理。

    https://www.yuque.com/gzl5wd/nf2qpl/4d16a243-3171-47a3-9cca-31571527c8d2