什么是微服务?关于轻量级软件开发的诠释

来源 :计算机世界 | 被引量 : 0次 | 上传用户:lslandgp1972
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  使用微服务架构将大型应用程序分解为可横向扩展的轻量级应用程序。
  你正在为几十万行遗留的C 续命吧。咳咳,我们要糊弄谁?数百万行的Vectran只是IBM在上世纪七十年代开发的一种短命的Fortran变体。但是,嘿,如果它们还没坏呢?除非它们坏了。每当有人试图添加功能时,它们就会崩溃。尝试修复漏洞会产生更多的漏洞。但是如果你不碰它们,它们就会一直工作下去。
  问题在于创新需要敏捷和速度。那些从未担心过“千年虫”(Y2K)计算机系统漏洞的新炫酷公司正在抛弃你的那些老旧软件。投资者们需要的是新一代重大创新。大批客户也正在选择抛弃这些老旧软件。
  解决方案是杀死那些单体大型应用程序,并且不再创建新的类似应用程序。实现的方法是使用微服务架构,这种技术可将大型应用程序分解为可以横向扩展的轻量级应用程序。
  微服务定义
  微服务将功能分解为由RESTful API松散耦合的独立应用程序。例如,eBay在2006年开发的独立Java servlet应用程序,以用于处理用户、项目、账户、反馈、交易和70多项其他要素。这些逻辑功能应用程序中的每一个都是一个微服务。
  这些微服务每一个都是独立的,并且不共享数据层。每个都有自己的数据库和负载均衡器。隔离是微服务架构的关键要素。不同的微服务需要不同的扩展技术。例如,一些微服务可能使用关系型数据库,而其他的可能使用NoSQL数据库。
  微服务的好处
  微服务架构将内部架构非常复杂的大型单体应用程序分解成小型的可独立扩展的应用程序。每个微服务都很小,开发、更新和部署也不太复杂。
  在考虑它们时,为什么首先要将这些功能都构建到单个应用程序中呢?至少在理论上,你可以想象为它们可存在于单独的应用程序和数据孤岛中,这不会有什么大问题。例如,如果拍卖收到两份投标书,但只有四分之一的销售收到反馈,那么在一天中的任何时间投标服务的活跃程度至少是反馈应用程序的八倍。如果将这些组合到一个应用程序中,你最终运行并更新的代码将比经常需要的更多。 在本质上,将不同的功能组分隔成单独的应用程序中是有其自身的道理。
  围绕微服务架构进行开发可获得一些隐性优势,例如可与PaaS、Docker和Linux容器等新技术紧密结合。
  以微服务方式构建应用程序不仅可使应用程序更加灵活和更具可扩展性,它们还增加了构建应用程序的团队的可伸缩性。使用单一代码,你可以建立一支大型团队,虽然团队成员能够处理大段代码,但是他们始终彼此掣肘。随着代码整体的增长,开发速度会断崖式下降。
  不过,借助微服务架构,应用程序可由小型的、分散的开发团队构建。他们可以独立地工作和修改微服务。这样做的好处是升级服务和添加功能更加便捷。软件和开发流程也将变得更加灵活。
  微服务的挑战
  但每個架构都有优点和缺点。虽然优点明显,但是微服务架构也带来了一系列难以解决的新问题——特别是记录、监控、测试和调试去中心化且松散耦合的新应用程序
  如果有一个漏洞,那么哪个微服务应当对此负责呢?微服务之间的相互依存关系使得这个问题很难回答。微服务通常通过轻量级JSON REST API彼此通信。与其前身XML-RPC和SOAP不同的地方是,REST接口的定义正变得越来越松散。虽然这些轻量级API更灵活,更容易扩展,但是它们增加了需要监控的新接口,这可能会产生中断破坏或导致出现漏洞。
  在单体应用程序中,你可以在代码中添加调试钩子,并在逻辑上逐步执行每个执行层以发现问题区域。如果当数十个甚至数百个独立的微服务使用松散定义的API彼此之间相系通信,那么在处理由这些微服务组成的网格时,你就不能再这么做了。
  尽管如此,但是通过精心安排,这些困难是可以被克服的。一些调试工具可以提供帮助,不过你可能需要根据其他部分的情况整合自己的解决方案。
  微服务与容器和PaaS的关系
  一种常见的误解是,如果要使用微服务,那么你需要使用PaaS或Linux容器。其实事实根本不是这么回事。你可以在没有微服务的情况下使用PaaS和Linux容器,并且也可以使用没有PaaS或Linux容器的微服务。它们彼此并不需要对方。
  不过,它们之间确实能够很好地相互补充。无论是Heroku等公有云,还是Cloud Foundry或者OpenShift等私有云,PaaS环境都可以优化运行许多小型应用程序。将330万行C 应用程序移植到PaaS平台的事情永远都不会发生。
  如果将应用程序分解为小型可独立扩展的自足性应用程序,那么这些小型应用程序通常都非常适合在PaaS环境中运行。
  同样,Linux容器也非常适合如微服务等小型无状态应用程序,而不是大型的单体应用程序。
  毕竟,虚拟机和Linux容器之间最大和最明显的区别之一是缺少状态。虚拟机可通过配置保持其状态,而Linux容器的架构在本质上已经不再与基础映像有任何差异。你可以在Linux容器中安装有状态的文件夹,但是除非提交更改,否则容器本身不会进行更改。
  微服务架构的横向扩展理念促进了无共享、无状态应用程序的概念。它们不存储或修改底层文件系统。为什么人们将微服务与Linux容器容易混为一谈呢?原因在于两者都不保留状态。
  微服务与SOA的关系
  微服务与SOA(面向服务的架构)关系密切,但又存在明显差异。从表面上看,SOA与SOAP和XML-RPC相关联,而微服务则与JSON相关联。但在某些方面,相关的API格式有着明显的外观差异。
  同样,SOA使用企业服务总线,而微服务使用更轻量级的发布-订阅服务总线。 尽管后者更为轻便但是原理是相似的。
  微服务架构和SOA之间的最大区别在于微服务必须可独立部署,而SOA服务则通常在部署整体中实现。
  微服务是否适合你?
  重要的是要记住,微服务是对撞到“看不见的天花板”的应对举措。在某些时候,传统的单体应用程序架构无法再进行扩展。每个成功的软件项目都会遇到这种情况。数据库会变得异常庞大,或是代码行数已经太多达到了数百万行,亦或是再也无法快速添加功能。
  如果你还没有撞到“看不见的天花板”。也就是说,如果遗留应用程序仍然运行良好并且不需要改变太多,那么只是为了部署微服务而部署将会导致你基本上无法从中获得什么好处。
  毕竟,微服务的开发过程不同于常规,并且具有难度。让所有这些新服务保持运行有时会让人感觉像在空中将十几个球抛来抛去。部署Kubernetes等编排工具可做一些调整。复杂的微服务架构有着自己的词典,它们能够涵盖你需要采用的所有新软件模式。
  然而,微服务并不像SOA被使用时那样令人生畏。实际上,微服务实践甚至可以在最小的软件项目中实现,并且不需要抛弃所有旧代码重新开始。
  如果你的大型应用程序正在失控但软件生命周期还有很长时间,创新速度也已经停滞不前,那么微服务可能正是你需要的东西。或者,如果你刚刚开始起步,那么从一开始就考虑构建基于微服务的应用程序是非常明智的。
  eBay表示,微服务架构让他们具备了进行大规模扩展的能力,提高了代码的可扩展性和可维护性,促进了快速业务创新,创建了更快的产品交付模式,甚至连安全性也得到了增强。谷歌、亚马逊、推特、PayPal和Netflix都有类似的体验。 为了更便捷地部署微服务,许多公司还开发了公共工具。
  无论你是遇到了维护遗留代码的问题并且一筹莫展,还是已经开始使用全新的应用程序,现在正是尝试用微服务方式进行应用程序开发的好时机。
其他文献
12月24日,全國工业和信息化工作会议披露,自正式启动5G商用以来,全国已开通5G基站12.6万个,超额完成网络提速降费年度任务,“携号转网”全国实行,并力争到2020年底在全国所有地级市实现5G网络覆盖。  最新数据显示,截至12月16日,三大运营商在北京共建设5G基站16634个,开通5G基站14577个。五环内室外5G信号已基本实现无缝覆盖,五环外实现精准覆盖。北京市已发展5G客户25.1万
随着企业将工作负载迁移到云端,对本地数据中心设备的需求逐步减少了。但本地部署还远未消失,超融合基础设施(HCI,Hyperconverged Infrastructure)是其中蓬勃发展的领域。  HCI是一种可扩展的、软件集成的基础设施,在计算、网络和存储容量等方面采用了模块化的方法。HCI并不是独立地使用专用硬件,而是利用分布式的横向商用硬件,并提供用于报告和管理的单面板仪表盘。它有各种各样的
企业越来越多地转向采用人工智能技术来帮助加强客户关系,让客户享有个性化的体验,同时增加企业收入。  前沿企业转向采用人工智能和机器学习技术,改变他们与客户互动的方式,加强客户关系,使自己从竞争对手中脱颖而出,同时还能增加收入。  实现这种转变的核心是聊天机器人、推荐引擎、个性化沟通、智能定向投放广告和图像识别等技术。Gartner分析师John-David Lovelock预测,到2022年,人工
面对疫情的挑战,正在实施人工智能和机器学习的几位CIO讨论了他们所做的工作。  如今人工智能和机器学习在企业界受到越来越热烈的追捧,企业组织日益利用这些技术更准确地预测客户的偏好,并加强业务运营。  据知名调研公司IDC称,到2023年,人工智能系统的支出将达到979亿美元,几乎是2019年支出375亿美元的三倍。据凯捷咨询(Capgemini)今年6月发布的研究显示,接受调查的950家企业组织中
“你好,我是阿里云数据库团队负责人,我叫鸣嵩(曹伟)。”初次见面的印象,让笔者觉得鸣嵩并不像一个IT男,形象阳光、精神抖擞、嘴角带着一点点微笑。就在笔者还在回味《复联3》中小蜘蛛和奇异博士有关“花名”的梗时,鸣嵩让我有了新的认识。  采访过程中,鸣嵩的语速一直很快,语言简练,思维清晰,不断出现的术语和数据说明了他的专业性,喜欢列举实例。整个人总是带着一股浓郁的自信。好像,每一个阿里人都是那么的自信
人工智能即将成为主流的革命性技术,而开发人员现在已拥有了可以开始使用这种技术的工具。  2018年人工智能领域最值得关注的趋势之一,就是强化学习的逐渐成熟,已成为构建和训练统计模型以投入实际使用的主流方法。  正如我在2018年年初时所谈到的,强化学习在企业人工智能项目中扮演着越来越重要的角色。该技术已经突破了传统的机器人、游戏和仿真应用领域,在IT运营管理、能源、医疗保健、商业、运输和金融等领域
随着基于以太网网络的不断发展,两个行业组织最近宣布计划将以太网提升到另一个水平——将该技术扩展到对时间敏感的运营型无线通信应用环境中。  近日,以太网联盟表示,它在竭力将更快速更简单的通信引入到通常出现在建筑和工业自动化环境的运营技术(OT)网络中。以太网联盟旗下有众多的通信厂商,包括博通、思科、戴尔、瞻博、英特尔以及诸多大学和行业成员。  该行业组织聚焦的一项技术最近成为标准的IEEE规范:80
2020年度中国杰出IT企业领导者  Hitachi Vantara全球副总裁兼中国区总经理戴建平  戴建平先生于2017年12月起担任Hitachi Vantara全球副总裁兼中国区总经理,全面负责Hitachi Vantara在中国地区的业务运营和管理, 带领当地团队加快数据驱动解决方案及服务的推广和行业深耕,帮助企业进行数字化转型并取得显著成就。  在加入Hitachi Vantara之前,
长期以来,人们都知道信息安全领域一直是人員不足,资金不足,疫情之前的确是这种情况。在当前经济低迷时期,信息安全领域面临更大的压力,研究公司Pulse在6月4日的报告中称,目前23%的安全预算被冻结,49%的预算被削减了。  那么,当CEO要求削减资源不足的预算时,首席信息安全官应该从哪里下手呢?更具体地说,有没有一种方法可以使这些削减措施在经济重启后不会成为永久性的?首席安全官与顾问、供应商和首席
无论是作为数字化转型的一部分,还是为了避免为应对不断增长的需求而兴建昂贵的新基础设施,如今各行各业的企业都在尝试着将数据和工作负载迁移到云端。对于许多企业而言,此举的关键是容器和Kubernetes,尤其是当涉及多个云服务时。  容器是独立的软件包,其将应用程序的所有代码和依赖项捆绑在一起,以确保应用程序无论在什么计算环境中都能够可靠地运行。正因为如此,容器可以很方便地将应用程序从开发人员的笔记本