微服务优缺点论述

作者: norai | 来源:发表于2016-10-26 14:33 被阅读204次
IMG_20161026_142532.jpg

随着业务发展,业务功能的堆叠和复杂化,团队壮大,代码量也增加,各种问题开始凸显:

  • 代码结构开始变得混乱,难以管理,提交冲突,改一处引多处。
  • 沟通成本变高。
  • 代码维护难:“修复越多,缺陷越多”。
  • 引入和集成技术变得困难,依赖版本冲突,新特性无法使用。

最后开发效率也开始下降,代码维护的成本提高。

上线后稳定性不高,更大几率的影响可靠性和可用性,所有功能都运行在一个进程中,任何一个功能中出现bug,比如内存泄露,逻辑死循环耗尽CPU等,可以导致整个应用挂掉。
其中几个高并发功能,也不得不部署将所有功能增加部署实例,内存和CPU利用不够充分,灵活性也变差。

其缺点也很明显:

  • 运维工作量增加,应用运维管理复杂。
  • 代码重复率增加,团队自治带来的重复劳动。
  • 分布式系统固有的复杂性和缺点:网络延迟,不可靠,负载均衡,调用,事务等等

微服务架构可以从一定程度上解决或缓解上述问题,但它也不是万能的,但也带来了一系列的非功能性需求,比如说分布式事务、自动化运维,服务发现,服务路由等额外需求,但其带来的好处以及克服其缺点总结如下:

  • 服务发现带来很多自运维特性。
  • 单一职责原则在各种各种场景的解耦合
  • 业务开发:只关注小团队所熟悉和负责的业务,做到专而精,并且容易实现持续交付。
  • 代码管理:无论多git repository还是多maven module都可以做到一般的代码隔离,尤其是积累很多年的代码,拆分后更清晰不混乱,易管理。
  • 技术实现:处理的业务不同,可能会采取不同的技术栈,如果是单体,依赖有冲突的时候不得不花时间fix冲突或者妥协放弃集成。微服务拆分后,相互独立,集成新技术更容易。
  • 测试:尤其是对单元测试和自动化测试更有好处,但对于整个集成测试却带来了挑战,通过可视化运维系统和一个完整的测试环境搭建,以及架构上适当调整,成熟化测试环境后,可以弥补这种不便。
  • 独立部署,快速而出错几率比较低,但运维量比较大,但通过可视化自动运维系统来克服。
  • 运行时的隔离,这个是显而易见的,就跟汽车道路一样,谁跑谁的道,互补干扰。
  • 分布式事务也有很多成熟的参考方案来解决:补偿型,可靠事件型,TCC型等。
  • 服务调用上,可以通过超时、隔离、服务发现负载均衡提高可用性和可靠性。
  • 网络延迟,可以采用轻量级协议和连接池技术等来弥补。

相关文章

  • 微服务优缺点论述

    随着业务发展,业务功能的堆叠和复杂化,团队壮大,代码量也增加,各种问题开始凸显: 代码结构开始变得混乱,难以管理,...

  • python flask的使用

    flask 是比较流行的Web框架flask的优缺点我不作论述,读者可自行搜索首先安装$ pip install ...

  • Raft Paper 简译

      本文是对 Raft Paper 核心部分的意译,不包括原文中的如下章节:<3 Paxos 的优缺点论述>、<4...

  • 微服务优缺点

    Advantage 复杂性降低: 单个服务业务逻辑单一,边界清晰,开发维护每个服务成本降低。技术债减少: 技术升级...

  • 微服务优缺点

    优点 关键点 复杂度可控, 独立按需扩展, 技术选型灵活,容错,可用性高 说明 解决了复杂性的问题。 它会将一种怪...

  • 微服务优缺点

    微服务架构的优点: 每个服务都比较简单,只关注于一个业务功能。 微服务架构方式是松耦合的,可以提供更高的灵活性。 ...

  • Spring Cloud Alibaba 实战(三) - 微服务

    1 概述 1.1 单体架构vs微服务架构 单体架构是什么 微服务是什么 微服务特性 微服务全景架构图 微服务优缺点...

  • SpringCloud常见面试题整理

    目录: 1、什么是微服务? 2、什么是微服务架构? 3、微服务的优缺点是什么?说下你在项目中碰到的坑。 4、微服务...

  • 算作杂记

    职业:以己之长服务他人、社会,获得报酬和尊重,养身、养家、养志。 不能只会描述,要会论述。描述是回答是什么,论述是...

  • 微服务的优缺点

    优点:1. 扩展性强、便于开发和维护,局部修改简单2. 启动较快,性能、压力测试更有针对性。调节cpu、内存、磁盘...

网友评论

    本文标题:微服务优缺点论述

    本文链接:https://www.haomeiwen.com/subject/odwduttx.html