一、引言
随着人工智能(AI)技术的快速发展,微服务架构在AI领域的应用逐渐普及。
微服务架构以其灵活性、可扩展性和可靠性,为AI应用的开发、部署和管理带来了诸多便利。
本文将探讨微服务在AI领域的应用及其发展趋势。
二、微服务架构概述
微服务架构是一种将应用程序拆分成一系列小型服务的软件架构方法。
这些服务围绕业务能力构建,通过轻量级通信机制进行通信,如HTTP协议。
微服务架构具有以下几个特点:
1. 独立性:每个微服务都可以独立开发、部署和管理。
2. 灵活性:可以根据需求动态扩展或缩减微服务。
3. 可重用性:微服务可以跨多个项目重复使用。
4. 可靠性:微服务架构具有良好的容错能力,即使某个服务出现故障,也不会影响整个系统的运行。
三、微服务在AI领域的应用
1. 数据处理与存储
在AI应用中,数据处理和存储是非常关键的部分。
微服务架构可以处理大规模的数据集,提高数据存储的可靠性。
通过将数据处理任务划分为多个微服务,可以并行处理数据,从而提高数据处理效率。
微服务架构还可以实现对数据的分布式存储,提高数据访问速度。
2. 模型训练与部署
在AI模型的训练过程中,往往需要处理大量的数据和进行复杂的计算。
微服务架构可以支持分布式计算,提高模型训练的效率。
同时,通过将模型部署为一系列微服务,可以实现模型的动态扩展和升级。
微服务架构还可以支持模型的热部署,无需停机即可更新模型,提高AI应用的灵活性。
3. 智能服务组合与集成
在AI应用中,经常需要将多个智能服务组合起来,以满足复杂的应用需求。
微服务架构可以方便地实现智能服务的组合与集成。
通过将不同的智能服务拆分为独立的微服务,可以实现服务的重用和组合,从而提高AI应用的灵活性和可扩展性。
四、微服务在AI领域的发展趋势
1. 微服务与边缘计算的结合
随着物联网(IoT)技术的发展,边缘计算逐渐成为AI领域的重要趋势。
微服务架构与边缘计算的结合,可以更好地满足实时性、安全性和隐私保护等方面的需求。
通过将部分AI服务部署在边缘设备上,结合微服务架构的优势,可以实现更快速的数据处理和更高效的资源利用。
2. 基于容器的微服务部署与管理
容器技术为微服务的部署和管理提供了便利。
通过将微服务打包成容器,可以实现跨平台、跨环境的部署。
容器技术还可以提供资源隔离和弹性伸缩等功能,提高微服务的可靠性和性能。
未来,基于容器的微服务部署与管理将成为AI领域的重要趋势。
3. 微服务与云原生技术的融合
云原生技术为微服务的运行提供了良好的环境。
随着云计算技术的发展,越来越多的企业选择将AI应用部署在云平台上。
微服务与云原生技术的融合,可以更好地利用云计算的资源优势,提高AI应用的性能、可靠性和可扩展性。
未来,微服务与云原生技术的融合将成为AI领域的重要发展方向。
五、结论
微服务架构在AI领域的应用和发展前景广阔。
通过微服务架构的灵活性、可扩展性和可靠性,可以方便地实现AI应用的开发、部署和管理。
未来,随着边缘计算、容器技术和云原生技术的发展,微服务在AI领域的应用将越来越广泛。
人工智能未来发展怎么样?
近年来人工智能迅速融入到经济、社会、生活等各行各业,在全世界燃起了燎原之势。
2019年人工智能(AI)申请榜上,50强里中国企业从过去的8家增长到19家。
中国近年来在AI领域的发展成果也成为全世界关注的焦点。
未来的人工智能将更多的进入到生活的方方面面。
传媒领域2019年中国两会圆满落幕之后,一位声音动听的AI女主播参与到两会的播报中,迅速走红网络。
这位AI女主播不仅具有高的颜值,而且精通汉语、英语、日语、韩语等多种语言。
科大讯飞股份有限公司作为中国首批新一代人工智能开放创新平台之一,此次通过语音合成技术所研发的“AI女主播”具有形象逼真、口音自然、口型精准等优点。
未来人工智能在传媒领域将发挥更大的作用。
交通领域网络作为中国最早布局人工智能的公司之一,一直以来都十分关注人工智能技术。
网络创始人李彦宏在出席2018年世界人工智能大会上海开幕式时,以“人脸识别”和“自动驾驶”技术为例,讲述了人工智能将让社会更加美好。
如今,在网络园区内“阿波龙”无人车、无人扫地车、无人售货车正处于工作状态中。
教育领域2019年3月13日,人工智能基础基础教育学术论坛计《K12人工智能教育》系列丛书发布会在成都市武侯区举行。
该系列丛书是四川省首套中小学人工智能教育用书,分为小学、初中、高中三个版本。
其中初中版以培养编程思维、机器人智能化教育为主,高中版以进一步培养和提升人工智能设计思维为主。
近年来,我国在人工智能教育领域一直保持着积极探索的步伐。
医疗领域随着技术的成熟,人工智能越来越被应用到医疗领域。
能够“读图”识别影像,还能“认字”读懂病历,甚至出具诊断报告,给出治疗建议。
这些曾经在想象中的画面,逐渐变成现实。
对解决医疗资源供需失衡及地域分配不均等问题意义重大。
相关机构预测,中国医疗人工智能的市场需求已达数百亿元。
微服务是如何演变的,又为什么重要
微服务的概念产生是顺应这样的需求:为了开发出速度更快、更有弹性且用户体验更佳的应用。
这个概念等同于具有可扩展性的自动化系统,在简单的商业化架构上运行软件。
由于容器所提供的经济效率,在2016年微服务将是一大主题。
应用快速开发的需求影响到了全部公司,以及如何看待历来业务安排的方式。
来自微服务的新实践代表着需要小型团队以对于公司来说陌生的方式——自上而下进行迭代。
这意味着企业运作的方式将获得彻底的改变。
现在在针对应用架构与微服务的新思考方面,容器生态系统逐渐成为核心主题。
根据Battery Ventures技术人员Adrian Cockcroft的说法:关于微服务有一些基本的原则需要思考。
首先,如今构建软件的价格更为低廉,容器的出现降低了成本。
Docker被所有人纳入蓝图——从软件供应商到终端用户,所有人都在尝试找出容器的用法,因为用它就能加快软件的交付节奏。
不过这也代表着要安装的系统是应用级别的,也就是说在应用的开发、部署与管理方面出现了不同的需求。
Adrian Cockcroft在面向对象软件架构大会上关于微服务的演讲,以卡通形式呈现,作者是Remarker举个例子,对于要处理服务与堆栈范围增长的公司来说,监控比以往更加重要。
要想解决问题,必须对数据日志进行分析,而这些日志很可能横跨临时节点与多项服务。
由于需要细化监控与加强工具,从业人员能更好地掌握这些构建模块对于应用所依赖的许多潜在微服务的影响。
那么起作用的是什么呢?从公司与API开始:基于微服务的产品团队与另一个基于终端的平台团队之间靠API连接,通过API调用以及企业基础架构持续作出相应的回应来生效。
微服务被定义为特定背景下松耦合、面向服务的架构,允许在无需理解其他部件运作原理的情况下进行更新。
整个服务是跨公司构建的,但所有权却在同一个地方。
微服务架构提供了更多系统间的点对点调用。
消息形式必须灵活,所有部件在无论哪个版本中都能运作。
这意味着在构建微服务架构时,我们需要一些工具来配置、探索、输送流量、观察与构建系统。
IBM杰出的工程师兼IBM云计算中心的CTO Andrew Hately作出了类比:15年前人们可能需要每周查看一下自己的银行余额,而互联网允许人们实时查看余额甚至做出进一步操作,也许随着智能手机的发展,很多事情都发生的改变。
如今,人们可以即时访问自己的账户收支信息。
这种速度与即时性代表着:在过去的5-10年内,企业提供服务的发展速度必须跟得上社交网络与搜索公司发展的速度。
公司必须处理员工、消费者、系统与所有可能组合之间的持续互动——就像Hately所说的完全互联与持续可用。
这意味着企业流程需要重建,需要将所有东西连接起来。
如果公司不进行这方面的尝试,也无法提供相应功能的话,很快就会面临收入减少甚至出局的局面。
Hately表示:“工具非常关键。
” 有数百家网站不支持代码,收到反馈后,在下一组测试用例中消费者就能使用它了。
这种严格的开发过程提供了一种企业工作方式,也为微服务发展提供了思考方式。
DevOps中的ops也会执行这样的工作。
如果你有一小段代码并为其定义指标的话,就能细分出哪些会成功,哪些会失败。
IBM通过为消费者及内部团队构建反馈通道与成功标准,在敏捷、DevOps、精益生产与其他迭代进程中结合最佳实践,创建了名为IBM Bluemix Garage Method方法的企业方法论。
IBM Bluemix Garage Method方法将企业解决方案的可靠性及可测试性与最新开放社区在规模质量上的最佳实践结合起来,持续创新、创建持续交付渠道并在云平台上进行部署。
这种方法很有价值,向所有人开放资源能够提高个人、团队与全公司的DevOps技能,以及管理与监控能力。
软件相关的契约第一代的容器管理平台支持这些速度更快的开发进程。
Docker的产品高级VP Scott Johnston表示,在Docker Compose中,微服务促进了工具发展,YAML文件扮演了描述不同组件的清单(manifest)。
Compose让开发人员得以用抽象的方式描述多容器应用,它可以描述web容器、数据库容器、负载均衡及其间的逻辑关系,无需连网或部署存储。
Engine Yard的Matt Butcher表示:微服务是软件相关的契约。
有些人会辩称微服务是正确执行的面向服务架构(SOA)。
开发者想要的是有用、功能丰富且结构优雅的架构。
微服务使得软件开发回归Unix的根源——将一件事完成得很好。
用Unix可以任意输出命令。
微服务不止在如何优秀地完成工作方面,同时在如何与环境互动方面也表现出契约性。
如果运行良好,它所做的工作就像是优秀的Unix shell脚本。
举个例子,Kubernetes清单文件格式扮演着契约的角色,这个清单提供了所需的来源细节、存储卷定义、存储需求等,扮演了强大的DevOps类契约。
它让开发者和运营者了解想要的内容。
开发者与运营者之间的关系不再如同之前那样——开发者被迫只管自己的一摊工作。
一张清单可能会包括应用元数据,加上具体版本的描述性参数,其中可能还有多个清单。
也许是一个实例、一个pod清单、一个复制控制器(replication controller)或者一个服务定义,还有组成文件的已知来源位置。
任意标签可能由图表中所包括的组件来定义。
Butcher表示:“应用开发者在这方面的体验够深刻了。
一旦出现典型问题,就会说丢过墙去,各管各的,反正有DevOps来负责生产环境中的运行事宜,开发者只负责开发,总有一个切换过程,往往会成为各扫门前雪的后果。
”如果开发者构建容器,会存在一定的水平保证(由抽象层决定):这些容器的运行方式在生产阶段与开发阶段是一样的。
这已经缓解了让懂得容器这个基本工具的DevOps专业人员感到头疼的大多问题。
容器化已经提供了这种保障,不过像Helm(Engine Yard所提供的新服务)之类的产品有助于进一步规范化这种关系,具体表现为团队间的契约形式——团队成员不能再推卸责任,各扫门前雪了,而要全程参与。
从虚拟机与Monolith,到容器,再到微服务根据Joyent的CTO Bryan Cantrill的说法:容器为原生云架构提供了基础,与传统的虚拟化形式相比,象征着一种新的应用架构形式。
在使用较大的机器来进行计算时,基于硬件的虚拟化或者传统虚拟机流行过一段时间。
虚拟机为运营团队提供了管理大型整体应用的方式,就像Cantrill说的“过于臃肿”,而硬件定义了企业架构。
虚拟机建议在底层之上,承担了运营系统的负载。
但是容器创建了一个全新而更敏捷的抽象。
就是Cantrill的那句话:“应用继续减肥速成修炼。
”如今,唯一的麻烦在于如何将虚拟机和monolith换成容器和微服务。
各家公司还在想方设法执行这种转变,因为两种方式对应用架构、基础设施还有公司自身整体的思路都是迥异的。
Cantrill表示:Joyent的开源Triton服务,其目的就是为了简化与加速公司向容器与微服务的转变。
它允许开发者简化架构,只提供容器,不提供虚拟机。
由于无需配置网络等操作,用户可以通过阅读微服务手册,在短时间内完成部署。
Cantrill表示,Joyent公司是Docker Compose的粉丝,因为Compose可以用来与单独的Docker Engine通讯。
Docker的远程端点由Triton部署,从而虚拟化了整个数据中心。
使用这些工具,很容易快速让一个完整有弹性的运营服务运转起来。
正如Cantrill所言:“这是大势所趋。
”VMware的CTO Kit Colbert从如何沿着容器之旅前进的角度来观察市场。
VMware着重运营领域。
现在它开发了一种方式,来满足新的开发人员及其需求,不过是作为基础架构提供商存在。
对于VMware来说,这家公司将自己视为基础设施提供商,而不是以应用为中心、面向架构的公司。
Colbert只看到了对Cloud Foundry感兴趣的消费者,不过也有人想要DIY的方法。
VMware正在设法通过vSphere集成容器(VIC)与Photon平台对应用技术提供支持。
为了让消费者适应使用容器,vSphere集成容器(VIC)让容器化工作负载称为vSphere的重中之重。
VIC适合在开发进程中运行,将容器化最有价值的一个方面应用在容器中:灵活并具有动态的资源界限。
通过虚拟化,VMware将普通硬件转化为简单、可取代的财产。
同样,通过在虚拟机中应用Docker端点,vSphere集成容器创建了完全动态边界的虚拟容器主机。
结果就是对传统与基于微服务应用同样支持的基础架构,允许IT与开发者的访问。
相比之下,VMware的Photon平台是专为原生云应用设计的。
Photon平台由最小的管理程序与控制面板组成,专为微服务提供速度与规模的服务。
Photon平台在设计时还考虑到了开发者通过API使用时的易用性,让这个平台成为一个提供应用程序与快速部署的自助服务平台。
从VMware的角度来说,运营团队也在推进部署速度。
现在更着重于数字化体验或者软件如何提供更多功能方面。
很类似我们如何看待在智能手机上使用的应用。
供应商可能以声音很大的扬声器而闻名,不过服务的应用是否能提供功能?Colbert询问:“我能依赖它吗?” 公司必须找出构建应用,为寻找高质量应用的消费者提供服务的方式。
想要继续进步,就必须找到这一点。
很多拥有外置式、虚拟化基础架构的消费者希望:随着应用开发进程的加快,解决公司面临的挑战。
在微服务时代的开发软件开发是迭代式的,需要持续的反馈循环才能奏效。
这也是类似IBM Bluemix Garage Method所提供的工具所提供的功能。
不过大多公司是根据模型来执行的,这与开发者工作的方式不同。
开发者不会按照销售、市场推广、财务等部门人员的方式来工作,开发者不是按照计划或方案来执行工作的。
软件开发的过程有更多的迭代,并非瀑布式自上而下的。
Pivotal的首席技术Michael Coté表示:“我不知道怎么说,不过真实世界与软件世界是完全不同的。
”Coté辩称:找出软件开发的方式似乎非常矛盾,不过事实上确实阻止了人们想要根据一份文档来了解一个巨大机器的所有部件的工作方式。
通过遵守软件开发的原则,各家公司找到了自己的办法,而不是严格遵守固定的计划。
Coté认为,没有执行微服务的固定道路。
用微服务可以在运行中和架构上获得灵活性。
微服务根据简单的原则构建出真正复杂的东西。
原则越简单,所能创造的东西就越复杂。
不过,如果把复杂性转移到其他地方会发生什么?Pivotal这个平台管理着复杂程度。
去掉选择,让消费者无需考虑网络、运营系统等问题。
它允许消费者将复杂性放在应用堆栈的顶层,在为终端用户提供服务时能够更好的区分服务。
Hately表示:“在科技行业,我们看到了另一个文艺复兴时期。
”同样地,IBM Bluemix Garage Method也希望简化复杂性,以便让开发者的工作更有效率,能够更好地享受自己的工作。
所有这些努力都为企业提供了巨大的机会,无论在技术还是文化层面。
什么是云原生应用?有哪些特点?
云原生从籍籍无名到火热发展,现在已进入2.0时代。
在讨论云计算的时候,必讨论云原生,云原生已成为云计算的未来发展方向。
那云原生到底是什么?
目前关于云原生没有确切的定义,
云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。
云原生(CloudNative)是一个组合词,Cloud+Native。
云原生的四要素
微服务:关键其实不仅仅是微服务本身,而是系统要提供一套基础的架构,这种架构使得微服务可以独立的部署、运行、升级,不仅如此,这个系统架构还让微服务与微服务之间在结构上“松耦合”,而在功能上则表现为一个统一的整体。
譬如谐云的微服务治理平台,就是基于Istio的Mesh方案完全透明支持Dubbo和SpringCloud等平台框架,无侵入、无开发语言限制的完整服务治理,整理功能上覆盖微服务总览、注册中心、配置中心、API网关和ServiceMesh的同时,还从多维度立体覆盖了微服务的运维监控。
并能从服务拆分方法、技术选型与问题解决等方面指导客户开发微服务应用。
2.容器化:容器化是指将软件代码和所需的所有组件(例如库、框架和其他依赖项)打包在一起,让它们隔离在自己的“容器”中。
谐云自主研发的容器云平台,是基于Docker和Kubernetes技术构建的一套完整IT标准化和自动化框架,以“面向终态、优化IT资源”为目标的新一代PaaS平台,能够提高企业的IT管理能力,在降低运营成本和风险的同时,获得更高的运维效率,保障业务稳定运行和高效迭代。
:这是个组合词,Dev+Ops,就是开发和运维合体,不像开发和产品,经常刀刃相见,实际上DevOps应该还包括测试,DevOps是一个敏捷思维,是一个沟通文化,也是组织形式,为云原生提供持续交付能力。
谐云DevOps平台使用业务价值为导向的开发运营融合模式,以平台形式固化开发运营一体化框架体系的流程,打通从需求管理、配置管理、个人构建、版本构建及产品运营的产品全生命周期管理,解决研发、QA、运维三者之间的矛盾,实现了产品全流程可视化、评价指标规范化、产品运营可持续化。
4.持续交付:持续交付(CONTINUOUS DELIVERY,CD)的侧重点在于交付,其核心对象不在于代码,而在于可交付的产物。
由于持续集成仅仅针对于新旧代码的集成过程执行了一定的测试,其变动到持续交付后还需要一些额外的流程。
与持续集成相比较,持续交付添加了测试Test->模拟Staging->生产Production的流程,也就是为新增的代码添加了一个保证:确保新增的代码在生产环境中是可用的。
云原生趋势
相比于传统应用,云原生应用将让企业和开发人员更加专注于业务价值的创造,而非日常的琐碎易错任务——这一改变将引导生产力与创新的变革。
到2022年有75%的全球化企业将在生产中使用容器化的应用(当前不足30%)、还有50%的应用软件将运行在容器化PaaS平台(目前少于20%)——Gartner
面对未来趋势,传统软件必须从架构、流程和文化层面进行重构,来逐步实现云原生应用的转型。我们需要:
更快:通过敏捷协作与自动构建,将修改的代码快速交付生产。
打造效能平台,在统一的技术栈和流水线支持下,实现全流程自动构建,自动发布。
缩短从需求到生产的代码交付时间。
更轻:基于平台开发一个应用,而非独立开发一个系统
利用统一的开发运维平台,并将通用组件不断下沉至平台,业务应用开发则专注于特定领域,最终实现平台化开发与交付。
更开放:采用开源技术,拥抱开源社区
开源社区不仅仅提供技术组件,还制定了云原生相关的技术交互标准。
诸如OpenTracing,CloudEvents等云原生标准接口定义了未来在云原生语义下,各个异构框架如何进行统一的交互。
我们应当在技术选型时,主动接入这些标准,并将相关实现积极回馈于开源社区。