Cloudfoundry Grouter源码走读

GoRouter源码分析 GoRouter的主要功能是接受用户的请求信息,根据请求URL查询GoRouter在内存中维护的路由信息表信息,而后将URL转发到具体的组件. GoRouter有几个重要的组件: Proxy, router, registry算法

Proxy: 外部全部的请求进入Cloudfoundry都须要通过proxy, proxy 根据请求的URL 到路由表里查找对应的节点,而且若是请求头中包含了cookie,则解析出节点id,将请求分发路由到具体的节点(好比:多个DEA, 就会路由到某一个固定的DEA),若是没有cookie,则根据路由算法,选择一个DEA, 响应时添加cookie返回用户,也就是sessionsticky.cookie

Router: 主要是定义了一个router的数据结构,以及一些初始化流程,已经运行的流程(run 方法), router 会启动定时器去查询droplet是否过时,若是过时了,会通知registry模式去更新路由信息session

Registry: 处理DEA或者组件到GoRouter注册uri 的路由信息. Cloudfoundry是经过NAT来进行通讯的,NAT通讯采用的是 订阅/发布的设计模型进行通讯 ,GoRouter 启动的时候会去NAT订阅注册和去注册的信息(router.register/router.unregister), 当有别的组件发布 router.register/router.unregister 事件时,GoRouter就会收到订阅的消息,通知registry模块去更新路由表.数据结构

用户访问GoRouter的流程图以下: User/LB不属于GoRouter组件, 心跳检测经过在请求的头文件添加“HTTP-Monitor/1.1”来判断. 输入图片说明源码分析

GoRouter的启动流程图以下: 输入图片说明设计

相关文章
相关标签/搜索