微服务的这些优缺点 你准备好了吗?

模块化的由小的组件或服务组成的应用程序,即所谓的微服务,正在取代传统的单一应用程序。尽管微服务的做法非常适合云,但微服务所拥有的优缺点是所有企业都应该考虑的问题。

基于微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源。这是因为它们通过扩展组件来处理功能瓶颈问题。这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个完整的应用程序的全新迭代。最终的结果是有更多的资源可以提供给其它任务。

微服务应用程序的另一个好处是,它们更快且更容易更新。当开发者对一个传统的单体应用程序进行变更时,他们必须做详细的QA测试,以确保变更不会影响其他特性或功能。但有了微服务,开发者可以更新应用程序的单个组件,而不会影响其他的部分。测试微服务应用程序仍然是必需的,但它更容易识别和隔离问题,从而加快开发速度并支持DevOps和持续应用程序开发。

第三个好处是,微服务架构有助于新兴的云服务,如事件驱动计算。类似AWS Lambda这样的功能让开发人员能够编写代码处于休眠状态,直到应用程序事件触发。事件处理时才需要使用计算资源,而企业只需要为每次事件,而不是固定数目的计算实例支付。

使用微服务的缺点

尽管有种种优点,微服务架构也受到了一些批评。

虽然微服务架构将应用分解成开发人员可以更轻松地管理和扩展的组件,但它们并不会让整个应用程序变得更容易构建。微服务应用程序仍然需要提供相同的功能,并执行与整体相当的功能。

更重要的是,在一个应用中的各个微服务组件使用API来交换数据。API的改变可能引入差错,例如API版本之间消息格式的差异。此外,由于更多的组件试图交换信息,可能会发生网络拥塞。

其次,测试和部署微服务的应用程序也可能更复杂。推出微服务的应用程序不只是运行一个.exe文件的问题。相反,一个微服务部署通常要求一个详细的脚本进行提供,加载,逻辑连接,然后启动必要的虚拟化实例组件。这是一个复杂的过程,而要移植这样的部署则更具挑战性。

最后,许多微服务的应用程序使用的补充服务,如负载均衡,自动扩展和事件驱动计算,这使得开发者依赖于云提供商提供的可用性和性能。这种对外部服务和API的相互依赖也可导致可靠性和版本的问题。

微服务为软件开发人员提供了一个新的模式,使他们能够将复杂的企业应用开发成一系列的相关功能组件。虽然这些组件对于云部署来说很理想,但开发人员必须在部署之前仔细权衡微服务的优点和缺点。

原文发布于微信公众号 - 云计算D1net(D1Net02)

原文发表时间:2015-11-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA技术zhai

大话微服务架构的故障隔离及容错处理机制

8、限流器和负载开关(Rate Limiters and Load Shedders)

30520
来自专栏跨界架构师

做了「负载均衡」就可以随便加机器了吗?这三招来帮你!

        这篇是《分布式关注点系列》中「负载均衡」相关的内容最后一发了,后续也会继续讲「高可用」相关的其它主题,主要是限流、降级、熔断之类的吧,具体还没定...

14750
来自专栏Rainbond开源「容器云平台」

技术解读Rainbond ServiceMesh微服务架构_开源PaaS Rainbond

服务发现和注册、弹性伸缩与负载均衡、容错处理(断路器与限流)、监控与报警、数据存储与共享、日志分析……

429110
来自专栏码神联盟

【原创】互联网常见架构模式 之 nginx负载均衡

一:什么是Nginx Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。...

53170
来自专栏嵌入式程序猿

嵌入式工程师必须涨的姿势:云端访问

随着物联网,大数据,云端等热门技术的发展和带动越来越多的嵌入式开发产品需要加入新的功能,对嵌入式开发工程师的要求也越来越高,不懂点都不好意思混下去O(∩_∩...

407120
来自专栏搜云库

分布式和集群区别?什么是云计算平台?分布式的应用场景?

分布式是指将一个业务拆分不同的子业务,分布在不同的机器上执行,集群是指多台服务器集中在一起,实现同一业务,可以视为一台计算机,一个云计算平台,就是通过一套软件系...

1.2K100
来自专栏chokwin的专栏

使用MongoDB提高企业的IT性能

本文的目标读者是正在为他们的IT系统寻找开源应用的开发人员和架构师。作者描述了一个实际的企业情况,他们在工作流程中采用了MongoDB来加速流程。

22080
来自专栏草根专栏

Python数据分析(二): Numpy技巧 (4/4)

numpy、pandas、matplotlib(+seaborn)是python数据分析/机器学习的基本工具。 numpy的内容特别丰富,我这里只能介绍一下比较...

32790
来自专栏腾讯开源的专栏

【开源公告】恶意软件分析工具HaboMalHunter于1月17日对外开源

HaboMalHunter 项目简介 该工具是哈勃分析系统(habo.qq.com)的开源子项目,用于Linux平台下进行自动化分析、文件安全性检测的开源工具。...

42180
来自专栏北京马哥教育

微服务化的十个设计要点

在实施微服务的过程中,不免要面临服务的聚合与拆分,当后端服务的拆分相对比较频繁的时候,作为手机 App 来讲,往往需要一个统一的入口,将不同的请求路由到不同的服...

12320

扫码关注云+社区

领取腾讯云代金券