算法组件部署方案归纳

本文归纳我在算法项目中实践的几种典型算法项目部署过程,最终根据项目场景和需求总结出一般性的算法项目部署流程。供参考交流。

 算法部署

算法部署的核心问题

        本人项目中的算法部分代码大部分由python语言编写。但在实际项目实施中,只存在少量的项目由纯python语言实现,大多数情况下都会存在多语言构成的情况。如果是纯python实现的项目,架构部署相对比较简单和直接。面对需要跨语言的系统部署相对复杂一些。制定部署规范本质是为了更好的解决python跨语言实现功能的问题。

        在跨语言的项目架构中,跨语言实现的路径总归下来有两类:

        1、项目架构内跨系统调用,例如微服务架构的系统,各个微服务之间可以看成组成软件整体的小系统,小系统之间的连接可以是跨语言的。

        2、同一系统内的直接跨语言调用,目前有很多模型工具如PMML技术等,可以将训练模型供java、R等语言直接跨语言的调用。

算法组件和软件整体架构关系:嵌入型、独立型

        我司算法部分功能代码多由python语言开发,少量也可由java或者大数据工具实现。在以往项目中,算法代码组成的模块和其他开发模块组成软件整体的方式大概归为两类,也可以称之为算法组件和软件整体的架构关系归为两类:嵌入的方式,和可独立方式。

        决定算法组件以何种方式与软件其他模块构建关系的主要因素是他们在功能模块之间所需要的解耦度。如果算法模块和其他功能模块之间需要强关联的运作机制,则需要在软件架构层面将算法组件设计为嵌入型的,相反算法模块和其他功能模块之间是可以解耦的、灵活可复用的,那就在软件架构层面将算法组件设计为独立型。

        根据以往部署经验,结合项目软件的架构方式将算法组件部署方式总归为两类,嵌入型和独立型。对于嵌入型开发组件定义为如果整个软件系统缺失该算法组件,而影响整个系统的正常运行,则此时的算法组件属于嵌入型算法组件,需要借鉴嵌入型算法组件部署通用步骤。独立型算法组件则正好相反,算法组件如果不运行,完全不影响整个系统的正常使用,则该算法组件为独立型算法组件,借鉴独立型算法组件部署步骤。这些通用步骤将在下面两个大的章节展开叙述。

        开发阶段选择开发嵌入式组件还是独立性组件需要依据业务场景和整体软件架构进行合理选择规划。

嵌入型部署

部署流程

        部署方式统一规范为:

  1. 算法组件统一封装进API接口
  2. 通过一的接口文档规范形成接口说明
  3. 接口通过nacos组件统一封装成可以注册为微服务的组件状态。

        通过以上部署设计规范,算法部署可适用于嵌入常见的大多数软件系统中,尤其方便于微服务架构的跨语言的软件系统。

部署策略

如图所示:

  1. 整体软件采用现在流行的微服务架构,算法部分为一个微服务。
  2. 采用Nginx实现初步的负载均衡,采用nacos协调管理各个微服务
  3. 大数据和后台之间使用队列作为调配通道和缓冲。
  4. 算法微服务中使用flask创建python-httpserve解决从Java跨Python环境的问题。

 独立型部署

部署流程

        独立式算法组件的部署规范为:

  1. 定义好数据接收和输出方式、
  2. 根据部署策略的两条路线确定架构规划、
  3. 统一集成进入虚拟容器中进行依赖管理和部署。

部署策略

 

        如图所示:

  1. 算法组件通过数据库,或者数据队列管道获取数据
  2. 算法组件及获取数据的系统可独立于外部系统构建
  3. 独立于外部系统构建的算法模块封装镜像提供一个数据对接口。

        两种场景 :

        1、实时、小数据量的预测应用:采用python-httpserve来进行应用;这种应用方式是需要启用服务来进行算法使用,可以解决需要跨环境,从Java跨到R或者Python环境的问题。

        2、Offline(离线)预测:可以不用考虑第1种方式,可以简单的使用Rscript x.R或者python x.py的方式来运行算法组件。使用这种方式需要一个调度工具,如果公司没有统一的调度工具,可以用shell做定时调用(定时调用工具非固定)。

关于部署安全性补充说明

        针对需要提供接口的算法组件部署形式。需要针对接口提供安全性的考虑。

        根据实际业务情况跨考虑组件在相应网络环境下的安全问题,主要注意这两种网络状态:开放网络的状态调用接口,还是局域网调用接口。

        开放网络的状态的接口结合后台开发的代码,增加身份认证装饰器。校验session,cokie等,防止非法身份恶意攻击。

        局域网状态调用,做好开放的ip端口的维护,以保证系统正常运行。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值