采用sidecar模式,将127.0.0.1的请求打到目标机器
软件架构上,为什么采用sidecar模式后,请求http://127.0.0.1:MESH_EGRESS_PORT时,会将该请求打到目标机器
网络代理与转发机制
在 sidecar 模式中,sidecar 通常会充当网络代理的角色。当应用程序发送请求到http://127.0.0.1:MESH_EGRESS_PORT时,实际上是将请求发送给了与应用程序在同一环境(如同一 Pod)中的 sidecar 容器
sidecar 容器会对请求进行拦截和处理,它知晓目标机器的地址和端口(难不成是根据path来决定分流到哪个下游服务?待确定)等信息,然后根据预先配置的规则和网络策略,将请求转发到真正的目标机器。
服务发现与路由功能
sidecar 模式往往结合了服务发现机制。sidecar 能够从服务注册中心获取到服务的相关信息,包括目标机器的地址、端口等。
当接收到请求http://127.0.0.1:MESH_EGRESS_PORT时,sidecar 会根据服务发现获取的信息,确定目标机器的具体位置,并通过合适的路由算法将请求准确地发送到目标机器。
流量管理与负载均衡
sidecar 可以实现流量管理和负载均衡功能。如果存在多个目标机器提供相同的服务,sidecar 会根据负载均衡算法,如轮询、加权轮询、最小连接数等,从多个目标机器中选择一个合适的机器来处理请求。
对于请求http://127.0.0.1:MESH_EGRESS_PORT,sidecar 会在多个目标机器之间进行合理的负载分配,确保请求能够被有效地处理,提高系统的整体性能和可用性。
协议转换与适配
不同的应用程序和服务可能使用不同的协议进行通信。sidecar 可以进行协议转换和适配,将接收到的请求从一种协议转换为目标机器所期望的协议。
当请求http://127.0.0.1:MESH_EGRESS_PORT到达 sidecar 时,sidecar 会根据目标机器的要求,对请求的协议进行转换和适配,然后再将请求发送到目标机器,确保通信的兼容性和有效性。
MESH出流量代理开启
# 开启出流量代理,按需打开
# RPC Egress
export XXX_ENABLE_SIDECAR_EGRESS="True"
# HTTP Egress
export XXX_ENABLE_HTTP_SIDECAR_EGRESS="True"
总结
mesh开启sidecar之后,其实就是将业务进程和mesh通信进程都开到同一个pod下