首页> 中国专利> 直连充电桩无感知的桩服务程序灰度发布方法

直连充电桩无感知的桩服务程序灰度发布方法

摘要

本发明公开了直连充电桩无感知的桩服务程序灰度发布方法,包括如下步骤:充电桩先通过TCP直连网关程序,网关再TCP直连后端桩服务程序,网关接收到桩连接后,解析来自充电桩的协议帧,在内存中维护桩设备标识与TCP连接的对应关系;运维人员启动新版本的服务程序,同时保持当前连接和服务不变;管理员将新版本的服务程序地址加入到倒换目标选项列表中;运维人员将后端桩服务程序按不同空间维度做灰度发布;网关伪装成充电桩,发注册请求到桩服务程序,在直连桩无感知的情况下,将桩重新注入到充电平台。该方法可逐桩、逐充电站、逐城市做桩服务程序灰度发布,将业务平滑过渡到新发布的服务程序。

著录项

  • 公开/公告号CN112463204A

    专利类型发明专利

  • 公开/公告日2021-03-09

    原文格式PDF

  • 申请/专利权人 浙江爱充网络科技有限公司;

    申请/专利号CN202011256138.X

  • 发明设计人 张东阳;韩旺坤;朱慧明;胡群峰;

    申请日2020-11-11

  • 分类号G06F8/71(20180101);G06F8/60(20180101);H04L29/08(20060101);G07F15/00(20060101);

  • 代理机构33109 杭州杭诚专利事务所有限公司;

  • 代理人尉伟敏

  • 地址 310012 浙江省杭州市西湖区天目山路181号天际大厦11F

  • 入库时间 2023-06-19 10:08:35

说明书

技术领域

本发明涉及互联网与充电桩技术领域,具体的,涉及直连充电桩无感知的桩服务程序灰度发布方法。

背景技术

参考中电联T/CEC 102标准,目前电动汽车充电桩通过移动SIM卡连入充电服务平台。桩程序通过建立TCP连接并一直连的方式,连接各平台开发的后端桩服务程序。后端服务升级重启,将导致桩与服务之间的连接被断开,充电业务会出现短暂中断。

充电平台运营商往往挑在凌晨升级,并事先告知客户和公司管理层。但是凌晨电价相对便宜,很多公交车、运营车辆仍在凌晨充着电,服务的突然重启会影响到他们充电。而且运营车辆对充电服务平台的可用性要求很高,一旦充不上电,将影响公司运营业务正常开展。

为了降低服务程序新版本发布风险,互联网平台大多会采用灰度发布的方式做升级:一段时间内新老版本共存,逐步将越来越多的用户引流到新版本,一旦发现问题就可迅速将流量切回到稳定的旧版本。

对于互联网通用的网关程序,整条链路上的上下游TCP连接的生命周期是一致的,即当网关到后端的TCP连接断开,必定会触发对应的桩到网关之间的连接断开。充电平台的通信协议是各运营商根据T/CEC 102标准开发的私有协议、不是通用的HTTP协议。通用网关解析不出私有协议内容时,只能根据请求端IP来确定连接来自哪里,而桩上的SIM卡的IP是网络运营商动态分配的,所以利用通用网关,很难做到逐桩、逐站、逐城市做灰度发布。

发明内容

本发明为了提高充电平台的可用性、提升充电用户体验,提出了直连充电桩无感知的桩服务程序灰度发布方法,该方法可以保持到桩的TCP连接不断以及充电桩和充电用户无感知的作用,具有充电服务升级、灰度发布时充电业务不中断等优点;可逐桩、逐充电站、逐城市做桩服务程序灰度发布,将业务平滑过渡到新发布的服务程序。

为实现上述技术目的,本发明提供的一种技术方案是,直连充电桩无感知的桩服务程序灰度发布方法,包括如下步骤:

充电桩先通过TCP直连网关程序,网关再TCP直连后端桩服务程序,网关接收到桩连接后,解析来自充电桩的协议帧,在内存中维护桩设备标识与TCP连接的对应关系;

运维人员启动新版本的服务程序,同时保持当前连接和服务不变;

管理员通过网关本地的命令终端程序,设置倒换参数、HTTP倒换请求鉴权密码,并将新版本的服务程序地址加入到倒换目标选项列表中;

运维人员将后端桩服务程序按不同空间维度做灰度发布;

灰度发布网关定期轮训倒换请求,查询之前维护在内存中的桩设备标识与TCP连接的对应关系,找到待切换的链路,将指定的桩连入到新版本的服务程序;

后端连接切换成功后,网关伪装成充电桩,发注册请求到桩服务程序,在直连桩无感知的情况下,将桩重新注入到充电平台,便于后端服务节点经由新桩服发送充电请求到充电桩。

本方案中,灰度发布时,不像通用网关那样简单地基于请求路径、权重或客户端IP做倒换,而是基于桩设备标识列表做倒换;基于桩设备标识而不是客户端IP是因为,充电桩SIM卡的IP是移动网络运营商动态分配的、重连会改变,但桩设备标识是静态配置、固定不变的。

作为优选,运维人员做后端桩服务程序灰度发布时,包括如下步骤:

确定本次灰度发布涉及的空间维度;所述空间维度包括按桩做灰度、按充电站做灰度以及按按城市做灰度;

确定时间跨度;所述时间跨度包括:每批桩倒换后观察多久时间再继续切换下一批以及预估全部升级完需多长时间;

运维人员将桩设备标识列表和倒换目标地址,通过远程HTTP请求发给网关HTTP服务;

HTTP服务程序收到请求后,对目标地址和请求密钥MD5做检查,检查通过后,通过共享内存的方式将请求记录到本地。

本方案中,本网关不仅支持通过HTTP发送倒换请求、查询倒换结果,还支持通过命令行工具做倒换。为了保护平台免受网络攻击,仅允许通过本地命令行工具设置倒换目的地、控制参数,并通过本地命令行工具设置HTTP请求密码,对远程HTTP请求做鉴权。

作为优选,每条桩到后端服务程序之间的链路,有四种倒换状态包括如下:

第一倒换状态:SWITCH_NONE:当前通道建立过程中或已连上指定后端目标,且指定的倒换目标地址与初始加载时后端地址一样;

第二倒换状态:SWITCH_OK:当前通道建立过程中或已连上指定后端目标,且指定的倒换目标地址与初始加载时后端地址不一样;

第三倒换状态:SWITCH_CANCELING:当前通道已建立且后端连接地址与目标地址不一致,但指定的倒换目标地址与初始加载时后端地址一样;

第四倒换状态:SWITCH_PENDING:当前通道已建立且后端连接地址与目标地址不一致,但指定的倒换目标地址与初始加载时后端地址不一样;

如果当前状态是SWITCH_PENDING或SWITCH_CANCELING,网关将进一步判断顺延状态,然后择机做连接切换。

作为优选,倒换请求会被顺延的包括如下情形:

第一情形:正在尝试解析出协议帧中的桩设备标识;

第二情形:通道的上行或下行链路上,仍有部分缓存数据没被全部发往接收方(充电桩或后端平台服务程序);

第三情形:网关只处理了某帧数据中的一部分,此时切换会导致出现碎帧的情况;

第四情形:链路空闲时间没到达设置的门限要求,或关键数据帧的空闲时间没达门限;

第五情形:对端并未就绪,常见原因包括:地址配置错误、侦听端口错误、服务没启动成功、或防火墙限制。

作为优选,为了不影响桩上各种业务并且让桩无感知,始终保持桩与网关之间的连接不断,连接的切换只在网关与后端服务之间进行。

本方案中,并不告知桩程序后端服务将升级、也不断开客户端与桩之间的连接,而是在保持网关与桩连接的同时,仅断开网关与后端服务之间的连接,然后立即连上新的后端方向;为了避免连接切换时出现半帧,本方案中网关的转发不是简单基于TCP网络包,而是根据充电桩通信私有协议,做拆包封包后,逐业务帧转发;当后端连接切换到新服方向后,为了让桩加入到后端的充电平台,网关将模拟充电桩,发注册消息帧到桩服务程序。

作为优选,为了不影响桩与服务程序之间的正常通信,网关收到请求后,网关收到倒换请求后,并不立即做连接切换,而是监控网络链路上消息类别和繁忙程度,选择链路空闲时做连接切换操作。

作为优选,链路闲时切换的方式如下:

网关监听桩与后端服务程序之间的双向通道繁忙,选择在链路空闲一段时间t1后切换,网络流空闲间隔时间t1可配置;

网关收到协议帧,解析出命令号,分析出各帧是否是关键帧;

为了不影响正常充电业务,需等协议关键帧空闲一段时间t2后做连接切换,关键帧空闲间隔时间t2可配置。

作为优选,为做到充电业务不断,网关先尝试连接新的后端服务地址,新方向连接成功后,才断开并替换掉旧的到服务端的连接;

将新的倒换目标方向作为主,将之前的后端方向作为备,在出现异常连不上主方向时,仍旧可通过之前的方向让桩连入充电平台。

为了避免转发不完整的碎包,网关根据充电桩通信协议,在收到TCP原始数据包之后,对流数据做规整,逐协议帧发送,包括如下步骤:

先解析每帧中协议标识,得到协议帧起始位置,然后根据协议定义的帧长度所在位置,读出当前协议帧长度;

解析出一个个协议帧后,总是逐帧尽快将数据往下传递,如果下游发送缓冲已满,即停止接收上游数据;

在寻找不到协议标识、帧长度异常、CRC校验错误时,网关依旧要将数据往下传递,只是不再更新协议帧统计信息,并不会影响数据中转和连接倒换。

本发明的有益效果:本发明提出的直连充电桩无感知的桩服务程序灰度发布方法,可以保持到桩的TCP连接不断以及充电桩和充电用户无感知的作用,具有充电服务升级、灰度发布时充电业务不中断等优点;可逐桩、逐充电站、逐城市做桩服务程序灰度发布,将业务平滑过渡到新发布的服务程序。

附图说明

图1为本发明的直连充电桩无感知的桩服务程序灰度发布方法的示意图。

具体实施方式

为使本发明的目的、技术方案以及优点更加清楚明白,下面结合附图和实施例对本发明作进一步详细说明,应当理解的是,此处所描述的具体实施方式仅是本发明的一种最佳实施例,仅用以解释本发明,并不限定本发明的保护范围,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例:如图1所示, 为了利用TCP自带的流控,网关为每条来自充电桩的TCP连接,建立一条对应的到后端的TCP连接,让上下游连接一一对应。并在内存中为通道上的两个不同流向,开辟两个固定大小的缓冲区作为TCP数据流中转站,当缓冲已满下游来不及消费时,不再尝试从上游接收数据。

只要不是灰度发布时人为发起的连接倒换,跟别的互联网网关一样,每一对通道中的两TCP连接的生命周期是一致的,即某TCP连接断开,将触发通道上的上下游TCP连接都被释放。

为了做到高可用和高效转发,采用C语言多进程的方式实现,Master进程只负责调度,一个或多个Worker进程负责数据转发业务,Worker进程只是单线程,所有的IO都是异步IO。

Master进程、多个Worker进程、HTTP倒换请求处理进程、命令行处理进程,都通过共享内存的方式读写相同的数据区,并且以文件映射的内存共享方式持久化,可使得进程重启后倒换参数和倒换请求不会丢失,并引入文件区块锁防止多个进程同时写相同区块。

为了避免转发不完整的碎包,网关根据充电桩通信协议,在收到TCP原始数据包之后,对流数据做规整,逐协议帧发送:

先解析每帧中协议标识,得到协议帧起始位置,然后根据协议定义的帧长度所在位置,读出当前协议帧长度,知道了帧起始位置和帧长度,就能确定帧结束位置;

解析出一个个协议帧后,总是逐帧尽快将数据往下传递,如果下游发送缓冲已满,就不要尝试接收上游数据;

在寻找不到协议标识、帧长度异常、CRC校验错误时,网关依旧要将数据往下传递,只是不再更新协议帧统计信息,并不会影响数据中转和连接倒换。

桩设备标识是加入充电平台时分配的,分配后保持不变,并在充电服务平台数据库的桩表中,存储了桩设备标识、桩所在的充电站、桩所在的城市。所以运维人员在倒换前,可通过查询桩表得到充电站、城市下所有的桩设备标识,然后下发不同空间内的桩标识列表给网关,即可做到按不同空间维度做灰度发布。

为了做到闲时切换,网关监听桩与后端服务程序之间的双向通道繁忙,选择在链路空闲一段时间t1(比如3秒)后切换,网络流空闲间隔时间t1可配置。

网关收到协议帧,解析出命令号,分析出各帧是否是关键帧。为了不影响正常充电业务,需等协议关键帧空闲一段时间t2(比如10秒)后做连接切换,关键帧空闲间隔时间t2可配置。

每条桩到后端服务程序之间的链路,有四种倒换状态:

1)SWITCH_NONE:当前通道建立过程中或已连上指定后端目标,且指定的倒换目标地址与初始加载时后端地址一样;

2)SWITCH_OK:当前通道建立过程中或已连上指定后端目标,且指定的倒换目标地址与初始加载时后端地址不一样;

3)SWITCH_CANCELING:当前通道已建立且后端连接地址与目标地址不一致,但指定的倒换目标地址与初始加载时后端地址一样;

4)SWITCH_PENDING:当前通道已建立且后端连接地址与目标地址不一致,但指定的倒换目标地址与初始加载时后端地址不一样。

如果当前状态是SWITCH_PENDING或SWITCH_CANCELING,网关将进一步判断顺延状态,然后择机做连接切换。

倒换请求会被顺延的情况包括:

正在尝试解析出协议帧中的桩设备标识;

通道的上行或下行链路上,仍有部分缓存数据没被全部发往接收方(充电桩或后端平台服务程序);

网关只处理了某帧数据中的一部分,此时切换会导致出现碎帧的情况;

链路空闲时间没到达设置的门限要求,或关键数据帧的空闲时间没达门限;

对端并未就绪,常见原因包括:地址配置错误、侦听端口错误、服务没启动成功、或防火墙限制。

倒换请求无需被顺延时,网关在做倒换之前,将启动探针程序检查目标地址是否可达。虽然桩成千上万且IP地址不同,但是后端服务程序的地址和端口是一样的,所以连往相同目的地的一批桩,可共用一个探针程序,共享探测结果。为避免无谓的网络风暴、避免被误当成网络攻击而被禁,网关探针程序的探测周期一般为3~10秒,周期参数可设置。

探针程序检查通过后,倒换时先尝试建立新连接,连上新方向后再替换并断开旧的方向。将新的倒换目标方向作为主,将之前的后端方向作为备,在出现异常连不上主方向时,仍旧有备选方向可尝试。

为了做到后端连接切换让桩无感知,网关需在后端倒换成功后,模拟充电桩向充电平台发注册命令,以便让平台中其它服务节点知道命令到桩的路径已改变。

在桩刚连入的时候,网关收到并识别出来自桩的注册协议帧后,将注册帧保存到内存中备用,然后在收到倒换请求并将后端连接倒换到指定目标后,重发此注册帧到新后端服务程序。由于桩服务程序收到注册帧之后,并不知道注册请求是桩发送的还是网关模拟的,按协议规定,后端服务都会发一个回应帧。对于网关而言,为了做到让桩无感知,对于它模拟的注册请求对应的回应信息,它应该拦截并丢弃掉它们,不能让这些回应抵达桩程序,以免干扰到桩程序正常运行。

以上所述之具体实施方式为本发明直连充电桩无感知的桩服务程序灰度发布方法的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照本发明之形状、结构所作的等效变化均在本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号