论云原生架构及其应用

摘要:

我们选择的中国软件杯赛题为基于百度飞桨的实现行人追踪。主要功能要求为实现单摄像头目标追踪,形成可交互运行的软件,用户可自行上传视频实现行人追踪,同时软件可以实时输出图像中的人数。基于深度学习的行人跟踪,是安防场景的重要研究领域,通过提供的训练数据集进行训练,最后实现对行人追踪软件的开发。本文以该系统为例,主要论述了云原生架构在项目中的具体应用。

我们参加中国软件杯,进行基于百度飞桨的实现行人追踪赛题参赛,最终形成相应的软件,从而实现实现单摄像头目标追踪,形成可交互运行的软件,用户可自行上传视频实现行人追踪,同时软件可以实时输出图像中的人数等功能。本文主要以该软件为例,主要论述了云原生架构在项目中的具体应用。

云原生架构以微服务和容器技术为代表,有服务化、强韧性、可观测性和自动化四类设计原则。通过服务化的设计原则,应用被分解为多个服务,可分别选择不同的技术,单个服务模块很容易开发、理解和维护,无需协调其他服务对本服务的影响;通过强韧性的设计原则,微服务可以分布式云化部署,负载均衡管理请求的分发,避免单机失败对整体服务的影响,以及弹性调整资源容量;通过可观测性的设计原则,能够对系统进行健康检查、指标监控、日志管理和链路追踪,提高系统运维、管理和排错能力;通过自动化的设计原则,可实现系统的自动化部署、自动化扩展伸缩、自动化运维、持续交付和集成,有效减少人工操作的工作量。

架构分析:

云原生架构的目的是使企业能够在公有云,私有云或者混合云等动态环境中构建和运行可扩展的应用。代表技术包括容器,服务网格,微服务,不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师们能够轻松地对系统作出频繁和可预测的重大变更。

我们同过百度飞浆的平台AIStudio,实现多镜头的行人识别功能,通过百度AIStudio平台进行相应的训练,逐步提高识别的准确性以及稳定性。

云原生架构主要对业务场景、隔离故障、容错、自动恢复等非功能性要求考虑较多,通过云原生架构可实现弹性资源的要求、跨机房的高可用、数据高可用。

敏捷基础设施要求像机器等基础资源,能够支持开发人员、运维人员和业务人员通过代码随时拉取、随时释放,同时以接口的方式提供弹性、按需的计算和存储能力,且是自动化。我的理解就是实现代码的封装,利用接口提高代码的利用率。

传统单体应用中,开发人员的代码包含3部分:业务代码、三方软件、处理非功能特性的代码,其中只有业务代码是核心,是对业务真正带来价值的。云原生架构大大减少了业务代码开发人员的技术关注范围。

云原生应用:

云原生核心是云原生应用,范围包括云原生应用生命周期过程的理论、工具和方法。云原生十二因素是判断是否是云原生的基本原则,也是实现云原生应用的基本理论指导。

云原生架构的应用可以最大程度利用云服务和提升软件交付能力,加快软件开发,表现在以下3个方面:

1.代码结构发生巨大变化。 云把三方软硬件的能力升级成了服务,开发人员的开发复杂度和运维人员的运维工作量都得到极大降低。

2.非功能性特性的大量委托。 非功能性特性是没有给业务带来直接业务价值,但通常又是必不可少的特性,比如高可用能力、容灾能力、安全特性、可运维性、易用性、可测试性、灰度发布能力等等。大量非功能性特性,特别是分布式环境下复杂非功能性问题,被云产品处理掉了。以高可用为例:

虚机:当虚机检测到底层硬件异常时,自动帮助应用做热迁移,应用对整个迁移过程都不会有任何感知;

容器:容器通过监控检查探测到进程状态异常,从而实施异常节点的下线、新节点上线和生产流量的切换等操作,整个过程自动完成而无需运维人员干预;

云服务:应用可以把“有状态”部分都交给了云服务(如缓存、数据库、对象存储等),由于云服务本身具备极强的高可用能力,那么应用本身会变成更薄的“无状态”应用,因为高可用故障带来的业务中断会降至分钟级。

3.高度自动化的软件交付。

云原生应用,就是天生具备云计算基因,以云计算的思想构建并适用于云计算环境的应用。它应该具备我们提到的特性:可以通过网络访问、远端部署执行、可扩展弹性伸缩、共享、按需使用自主服务、高可用、可远程监控计费审计、标准化交付与位置无关等。

我们后期将会实现行人跟踪软件的开发以及用户可以使用软件上传视频,实现单摄像头下的目标追踪。

总结:

目前我们实现了对行人的追踪功能以及多类型的识别功能,目前遇到的困难就是识别的准确性有待提高,以及对类别的判断不是很好,我们将通过训练不断的提高识别的准确性。

posted on 2021-05-21 14:16  Lhxxx  阅读(1196)  评论(0编辑  收藏  举报

导航