• 微服务架构整体分析:优势与挑战


    1.1 微服务的优势

    1.1.1 单一职责

    微服务架构中的每个节点高度服务化,都是具有业务逻辑的,符合高内聚、低耦合原则以及单一职责原则的单元,包括数据库和数据模型;

    不同的服务通过“管道”的方式灵活组合,从而构建出庞大的系统。

    1.1.2 轻量级通信

    通过REST API模式或者RPC框架,事件流和消息代理的组合相互通信,实现服务间互相协作的轻量级通信机制。

    1.1.3 独立性

    在微服务架构中,每个服务都是独立的业务单元,与其他服务高度解耦,只需要改变当前服务本身,就可以完成独立的开发、测试、部署、运维。

    1.1.4 进程隔离

    在微服务架构中,应用程序由多个服务组成,每个服务都是高度自治的独立业务实体,可以运行在独立的进程中,不同的服务能非常容易地部署到不同的主机上,实现高度自治和高度隔离。

    进程的隔离,还能保证服务达到动态扩缩容的能力,业务高峰期自动增加服务资源以提升并发能力,业务低谷期则可自动释放服务资源以节省开销。

    1.1.5 混合技术栈和混合部署方式

    团队可以为不同的服务组件使用不同的技术栈和不同的部署方式(公有云、私有云、混合云)。

    1.1.6 简化治理

    组件可以彼此独立地进行缩放,从而减少了因必须缩放整个应用程序而产生的浪费和成本,独立的发布、服务治理。

    1.1.7 安全可靠,可维护。

    从架构上对运维提供友好的支撑,在安全、可维护的基础上规范化发布流程,支持数据存储容灾、业务模块隔离、访问权限控制、编码安全检测等。

    1.2 面临的挑战

    1.2.1 分布式固有复杂性

    微服务架构是基于分布式的系统,而构建分布式系统必然会带来额外的开销。

    • 性能: 分布式系统是跨进程、跨网络的调用,受网络延迟和带宽的影响。

    • 可靠性: 由于高度依赖于网络状况,任何一次的远程调用都有可能失败,随着服务的增多还会出现更多的潜在故障点。因此,如何提高系统的可靠性、降低因网络引起的故障率,是系统构建的一大挑战。

    • 分布式通信: 分布式通信大大增加了功能实现的复杂度,并且伴随着定位难、调试难等问题。

    • 数据一致性: 需要保证分布式系统的数据强一致性,即在 C(一致性)A(可用性)P(分区容错性) 三者之间做出权衡。这块可以参考我的这篇《分布式事务》。

    1.2.2 服务的依赖管理和测试

    在单体应用中,通常使用集成测试来验证依赖是否正常。而在微服务架构中,服务数量众多,每个服务都是独立的业务单元,服务主要通过接口进行交互,如何保证它的正常,是测试面临的主要挑战。

    所以单元测试和单个服务链路的可用性非常重要。

    1.2.3 有效的配置版本管理

    在单体系统中,配置可以写在yaml文件,分布式系统中需要统一进行配置管理,同一个服务在不同的场景下对配置的值要求还可能不一样,所以需要引入配置的版本管理、环境管理。

    1.2.4 自动化的部署流程

    在微服务架构中,每个服务都独立部署,交付周期短且频率高,人工部署已经无法适应业务的快速变化。有效地构建自动化部署体系,配合服务网格、容器技术,是微服务面临的另一个挑战。

    1.2.5 对于DevOps更高的要求

    在微服务架构的实施过程中,开发人员和运维人员的角色发生了变化,开发者也将承担起整个服务的生命周期的责任&

  • 相关阅读:
    网络面试题总结
    大数据数据压缩和企业优化
    Jmeter-记一次自动化造数引发的BeanShell写入excel实例
    反转单向链表
    mac电脑用谷歌浏览器对安卓手机H5页面进行inspect
    Spring Boot 配置文件
    首发Yolov8涨点神器:华为诺亚2023极简的神经网络模型 VanillaNet---VanillaBlock助力检测,实现暴力涨点
    升级macOS Ventura 16 之后出现系统卡住鼠标圈圈问题
    Python使用总结之PyInstaller常用参数详解
    Java String、StringBuffer 和 StringBuilder 的区别和理解
  • 原文地址:https://blog.csdn.net/Park33/article/details/126402018