前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务架构是什么?有哪些优点和不足?

微服务架构是什么?有哪些优点和不足?

作者头像
用户7353950
发布2022-05-11 10:42:19
8000
发布2022-05-11 10:42:19
举报
文章被收录于专栏:IT技术订阅

微服务架构定义

微服务架构是一种架构风格和架构思想,它倡导我们在传统软件应用架构的基础上,将系统业务按照功能拆分为更加细粒度的服务,所拆分的每一个服务都是一个独立的应用,这些应用对外提供公共的API,可以独立承担对外服务的职责,通过此种思想方式所开发的软件服务实体就是“微服务”,而围绕着微服务思想构建的一系列体系结构(包括开发、测试、部署等),我们可以将它称之为“微服务架构”。

根据微服务架构的定义,将传统单体架构拆分为微服务架构的方式如图1-4所示。

图1-4传统单体架构拆分为微服务架构

从图1-4中可以看出,微服务架构已将传统单体架构中的订单服务、商品服务和用户服务拆分为了独立的服务,其中的每一个服务都是一个独立的应用,可以访问自己的数据库,这些服务对外提供公共的API,并且服务之间可以相互调用。

注意:微服务和微服务架构是两个不同的概念。微服务强调的是服务的大小,它关注的是某一个点,而微服务架构是一种架构思想,需要从整体上对软件系统进行全面的考虑。

微服务架构的优点

与传统单体应用架构相比,微服务架构有很多优点,具体表现如下:

1.复杂度可控

微服务架构在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰地表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性,并提高了开发效率。

2.可独立部署

由于微服务具备独立的运行进程,所以每个微服务都可以独立部署。当某个微服务发生变更时,无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低了对生产环境所造成的风险,最终缩短应用交付周期。

3.技术选型灵活

微服务架构下,技术的选型是多样化的。每个团队都可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术。由于每个微服务相对简单,当需要对技术进行升级时,所面临的风险较低,甚至完全重构一个微服务也是可行并容易的。

4.易于容错

当架构中的某一组件发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,导致整个应用不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。

5.易于扩展

单个服务应用也可以实现横向扩展,这种扩展可以通过将整个应用完整的复制到不同的节点中实现。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。

6.功能特定

每个微服务有自己的业务逻辑和适配器,并且一个微服务一般只完成某个特定的功能,例如商品服务只管理商品、客户服务只管理客户等。这样开发人员可以完全的专注于某一个特定功能的开发,而不用过多的考虑其他,从而提高开发效率。

除了上述几点好处外,微服务架构还有很多好处,由于篇幅有限,这里就不一一列举了,但从微服务架构的好处可以看出,使用微服务可以很好的解决传统单体架构中的问题。

微服务架构的不足

微服务架构除了有上面所讲的各种优点外,还存在着一些不足,这些不足的具体表现如下:

1.开发人员必须处理创建分布式系统的复杂性

①开发工具(或IDE)是面向构建传统的单体应用程序的,不为开发分布式应用程序提供全面功能上的支持。

②测试更加困难。在微服务架构中,服务数量众多,每个服务都是独立的业务单元,服务主要通过接口进行交互,如何保证依赖的正常,是测试面临的主要挑战。

③开发人员必须实现服务间的通信机制。

④实现用例跨多个服务时,需要面对使用分布式事务管理的困难。

⑤l实现跨多个服务的用例,需要团队之间进行仔细的协调。

2.部署的复杂性

在部署和管理时,由许多不同服务类型组成的系统的操作比较复杂,这将要求开发、测试及运维人员有相应的技术水平。

3.增加内存消耗

微服务架构用多个服务实例取代了1个单体应用程序实例,如果每个服务都运行在自己的JVM中,那么有多少个服务实例,就会有多少个实例在运行时的内存开销。

微服务架构与SOA的区别

通过前3个小节的学习,相信有些读者对微服务架构已经有了一定的了解。在学完后,细心的读者可能会有这样一个疑问,微服务架构与SOA都是对单体架构的拆分,那么他们有什么不同呢?下面通过一个表格对两者的区别进行对比,如表1-1所示。

表1-1微服务架构与SOA的区别

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT技术订阅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 微服务架构定义
  • 微服务架构的优点
    • 1.复杂度可控
      • 2.可独立部署
        • 3.技术选型灵活
          • 4.易于容错
            • 5.易于扩展
              • 6.功能特定
              • 微服务架构的不足
                • 1.开发人员必须处理创建分布式系统的复杂性
                  • 2.部署的复杂性
                    • 3.增加内存消耗
                    • 微服务架构与SOA的区别
                    相关产品与服务
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档