• 云原生架构相关技术_2.云原生微服务


    1.微服务发展背景

             微服务模式将后端单体应用拆分为松耦合的多个子应用,每个子应用负责一组子功能。这些子应用称为“微服务”,多个“微服务”共同形成了一个物理独立但逻辑完整的分布式微服务体系。这些微服务相对独立,通过解耦研发、测试与部署流程,提高整体迭代效率。此外,微服务模式通过分布式架构将应用水平扩展和冗余部署,从根本上解决了单体应用在拓展性和稳定性上存在的先天架构缺陷。但也要注意到微服务模型也面临着分布式系统的典型挑战:如何高效调用远程方法、如何实现可靠的系统容量预估、如何建立负载均衡体系、如何面向松耦合系统进行集成测试、如何面向大规模复杂关联应用的部署与运维。

            在云原生时代,云原生微服务体系将充分利用云资源的高可用和安全体系,让应用获得更有保障的弹性、可用性与安全性。应用构建在云所提供的基础设施与基础服务之上,充分利用云服务所带来的便捷性、稳定性,降低应用架构的复杂度。云原始的微服务体系也将帮助应用架构全面升级,让应用天然具有更好的可观测性、可控制性、可容错性等特性。

    2.微服务设计约束

             相对与单体应用,微服务架构的架构转变,在提升开发、部署等环节灵活性的同时,也提升了在运维、监控环节的复杂性。设计一个优秀的微服务系统应遵循以下设计约束:

            1)微服务个体约束

             一个设计良好的微服务应用,所完成的功能在业务划分上应是相互独立的。微服务的“微”是按照问题域对单体应用做合理拆分。

            2)微服务与微服务之间的横向关系

             在合理划分好微服务间的边界后,主要从微服务的可发现性和可交互性处理服务间的横向关系。

            3)微服务与数据层之间的纵向约束

             在微服务领域,提倡数据存储隔离(Data Storage Segregation,DSS)原则,即数据是微服务的私有资产,对于该数据的访问都必须通过当前微服务提供的API来访问。

            4)全局视角下的微服务分布式约束        

             从微服务系统设计一开始,就需要考虑以下因素:高效运维整个系统,从技术上要准备全自动化的CI/CD流水线满足对开发效率的诉求,并在这个基础上支持蓝绿、金丝雀等不同发布策略,以满足对业务发布稳定性的诉求。

    3.主要微服务技术

             Apache Dubbo作为阿里巴巴的一款开源高性能RPC框架,特性包括基于透明接口的RPC、智能负载均衡、自动服务注册和发现、可扩展性高、运行时流量路由与可视化的服务治理。经过数年发展已是国内使用最广泛的微服务框架并构建了强大的生态体系。2018年阿里巴巴陆续开源了Spring Cloud Alibaba(分布式应用框架)、Nacos(注册中心&配置中心)、Sentinel(流控防护)、Seata(分布式事务)、Chaosblade(故障注入),以便让用户享受阿里巴巴十年沉淀的微服务体系,获得简易、高性能、高可用等核心能力。

            Spring Cloud作为开发者的主要微服务选择之一,为开发者提供了分布式系统需要的配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性Token、全局锁、决策竞选、分布式会话与集群状态管理等能力和开发工具。

            SOFAStack(Scalable Open Financial Architecture Stack)是由蚂蚁金服开源的一套用于快速构建金融级分布式架构的中间件,也是在金融场景里的最佳实践。

  • 相关阅读:
    数据库:什么是数据库,有哪些数据库,数据库用来干什么,图导,拓展
    rust打包编译为mac或者linux可执行文件,发送到别的电脑不能运行
    我们真的需要链式查询吗?
    马上2023年了,Vue还有人用吗?
    【使用vbs脚本来监控windows服务器上的应用程序】
    【Datawhale组队学习:Sora原理与技术实战】使用KAN-TTS合成女生沪语音频
    this用法总结
    在Pyppeteer中实现反爬虫策略和数据保护
    LeetCode刷题(python版)——Topic65.有效数字
    几何角度理解线性代数(1):向量、线性组合、矩阵乘法、行列式
  • 原文地址:https://blog.csdn.net/huaqianzkh/article/details/139362412