云原生架构相关技术_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)是由蚂蚁金服开源的一套用于快速构建金融级分布式架构的中间件,也是在金融场景里的最佳实践。

相关推荐

  1. 原生架构相关技术_2.原生服务

    2024-06-07 19:24:06       31 阅读
  2. 原生应用架构-服务开发最佳实践

    2024-06-07 19:24:06       36 阅读
  3. 走进原生服务技术的崭新篇章

    2024-06-07 19:24:06       43 阅读
  4. 服务原生

    2024-06-07 19:24:06       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 19:24:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 19:24:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 19:24:06       82 阅读
  4. Python语言-面向对象

    2024-06-07 19:24:06       91 阅读

热门阅读

  1. 深入理解 MySQL 中的 SQL_NO_CACHE 关键字

    2024-06-07 19:24:06       38 阅读
  2. Ajax入门

    2024-06-07 19:24:06       27 阅读
  3. LeetCode hot100-61-G

    2024-06-07 19:24:06       32 阅读
  4. 汽车电子电器架构深入分析

    2024-06-07 19:24:06       23 阅读
  5. pytest基础

    2024-06-07 19:24:06       28 阅读
  6. docker安装和使用

    2024-06-07 19:24:06       22 阅读
  7. git 报错

    2024-06-07 19:24:06       31 阅读
  8. 网络通信Socket的简单案例

    2024-06-07 19:24:06       20 阅读
  9. docker搭建mongo单机单节点副本集模式

    2024-06-07 19:24:06       32 阅读