spring cloud netflix sidecar内部原理

spring cloud netflix sidecar内部原理

spring cloud netflix sidecar内部的核心工作是由netflix开源的微服务网关组件zuul提供的,sidecar其实是在zuul基础上进行的二次开发。

1)sidecar与non-java-app必须部署在同一个节点上,且一个sidecar唯一对应一个non-java-app

2)sidecar相当于non-java-app的代理,由sidecar向注册中心注册服务,其他微服务看到的non-java-app的服务名是由sidecar注册的,服务端口号是sidecar的端口号

3)注册中心如何检测non-java-app的健康状态

非java应用程序如果希望通过sidecar集成到spring cloud系统中,需要提供一个health检测接口,当非java应用程序状态正常时,这个health接口返回一个json字符串,内容如下所示:

{
    "status":"UP"
}

sidecar在向注册中心反馈自己的健康状态时,会调用相应非java应用程序提供的health检测接口,这样只有非java应用程序状态正常时,sidecar在注册中心注册的相应服务实例的状态才是正常的。

4)sidecar如何确定请求是来自于被代理的non-java-app还是发送给non-java-app的

当sidecar接收到请求时,会判断http url的path路径的第一段是不是一个服务名。如果是,则会根据注册中心注册的实例信息,通过一定的负载均衡算法选择一个具体的实例,将请求转发给选择的实例。否则,sidecar则认为是调用自己代理的非java应用程序服务,将请求的host改为127.0.0.1,port改为相应非java应用程序的port,然后将请求转发给相应的非java应用程序



作者:生饼
链接:https://www.jianshu.com/p/9754b1a9929b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/wuhenzhangxing/article/details/127209375