对于单体服务,不同模块通信只是简单的函数调用,对于微服务,服务间通信意味着网络传输。
在代码层面,如何指定调用一个目标服务的地址(ip:port)?
解决思路:新增一个统一的注册中心,用于存储服务名到服务实例的映射。
服务的上下线流程(上面是下线流程、下面是上线流程)
统一网关入口、内网通信多数采用RPC、网状调用链路。
蓝绿发布:简单、但需要两倍资源(可以根据流量的错峰特性使用蓝绿发布)
金丝雀发布:过度平滑,但是在部署时进度在1%~99%时都有可能出现问题,需要回滚版本,这种维护能力需要平台级的设施提供支持。
在微服务架构下,我们可以基于地区、集群、实例、请求等维度,对端到端流量的路由进行精确控制。
负载均衡负责分配请求在每个下游实例上的分布。
常见的LB策略:轮询、随机、一致性hash等。
线上服务总是会出现故障:网络攻击、流量突增、机房断电、光纤问题、机器问题、网络问题......
下面给出了微服务治理中的四个经典功能:
针对于微服务架构中的请求重试机制字节给出了如下实践:
本地函数重试基本上是没有意义的,而远程函数重试则有意义,因为其发生请求错误的原因可能不是下游程序编写出错,而是因为:网络抖动、下游负载高导致超时、下游机器宕机、本地机器负载高、调度超时、下游熔断、限流等。
因此远程调用的重试可以:
重试本身并不默认开启,因为有一些难点需要克服:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有