接前一篇文章:软考 系统架构设计师系列知识点之云原生架构设计理论与实践(13)
所属章节:
第14章. 云原生架构设计理论与实践
第3节 云原生架构相关技术
14.3.2 云原生微服务
1. 微服务发展背景
2. 微服务设计约束
相较于单体应用,微服务架构的架构转变,在提升开发、部署等环节灵活性的同时,也提升了在运维、监控环节的复杂性。设计一个优秀的微服务系统应遵循以下设计约束:
(1)微服务个体约束
(2)微服务与微服务之间的横向关系
(3)微服务与数据层之间的纵向约束
在微服务领域,提倡数据存储隔离(Data Storage Segregation,DSS)原则,即数据是微服务的私有资产,对于该数据的访问都必须通过当前微服务提供的API来访问。如若不然,则造成数据层产生耦合,违背了高内聚低耦合的原则。同时,出于性能考虑,通常采取读写分离(CQRS)手段。同样,由于容器调度对底层设施稳定性的不可预知影响,微服务的设计应当尽量遵循无状态设计原则,这意味着上层应用与底层基础设施的解耦,微服务可以自由在不同容器间被调度。对于有数据存取(即有状态)的微服务而言,通常使用计算与存储分离方式,将数据下沉到分布式存储,通过这个方式做到一定程度的无状态化。
(4)全局视角下的微服务分布式约束
从微服务设计一开始就需要考虑以下因素:高效运维整个系统,从技术上要准备全自动化的CI/CD流水线,以满足对开发效率的诉求,并在这个基础上支持蓝绿、金丝雀等不同发布策略,以满足对业务发布稳定性的诉求。面对复杂系统,全链路、实时和多维度的可观测能力成为标配。为了及时、有效地防范各类运维风险,需要从微服务体系多种事件源汇聚并分析相关数据,然后在中心化的监控系统中进行多维度展现。伴随着微服务拆分的持续,故障发现时效性和根因精确性始终是开发运维人员的核心诉求。
3. 主要微服务技术
(1)Apache Dubbo
Apache Dubbo作为源自阿里巴巴的一款开源高性能RPC框架,特性包括基于透明接口的RPC、智能负载均衡、自动服务注册和发现、可扩展性高、运行时流量路由与可视化的服务治理。经过数年发展,已是国内使用最广泛的微服务框架并构建了强大的生态体系。为了巩固Dubbo生态的整体竞争力,2018年阿里巴巴陆续开源了Spring Cloud Alibaba(分布式应用框架)、Nacos(注册中心、配置中心)、Sentinel(流控防护)、Seata(分布式事务)、Chaosblade(故障注入),以便让用户享受阿里巴巴十年沉淀的微服务体系,获得简单易用、高性能、高可用等核心能力。Dubbo在v3中发展服务网格(ServiceMesh),目前Dubbo协议已经被Enovy支持,数据层选址、负载均衡和服务治理方面的工作还在继续,控制层目前在继续丰富Istio/Pilot-discovery中。
(2)Spring Cloud
Spring Cloud作为开发者的主要微服务选择之一,为开发者提供了分布式系统需要的配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性Token、全局锁、决策竞选、分布式会话与集群状态管理等能力和开发工具。
(3)Eclipse MicroProfile
Eclipse MicroProfile作为Java微服务开发的基础编程模型,其致力于定义企业Java微服务规范。MicroProfile提供指标、API文档、运行状况检查、容错与分布式跟踪等能力,使用它创建的云原生微服务可以自由地部署在任何地方,包括服务网格架构。
(4)Tars
Tars是腾讯将其内部使用的微服务框架TAF(Total Application Framework)多年的实践成果总结而成的开源项目,在腾讯内部有上百个产品使用,服务内部数千名C++、Java、Golang、Node.Js和PHP开发者。Tars包含一整套开发框架与管理平台,兼顾多语言、易用性、高性能与服务治理,理念是让开发者更聚焦业务逻辑,让运维更高效。
(5)SOFAStack
SOFAStack(Scalable Open Financial Architecture Stack)是由蚂蚁金服开源的一套用于快速构建金融级分布式架构的中间件,也是在金融场景里的最佳实践。MOSN是SOFAStack的组件,它是一款采用Go语言开发的服务网格数据平面代理,功能和定位类似Enovy,旨在提供分布式、模块化、可观测、智能化的代理能力。MOSN支持Enovy和Istio的API,可以和Istio集成。
(6)DAPR
DAPR(Distributed Application Runtime,分布式应用运行时)是微软新推出的一种可移植的、无服务器的、事件驱动的运行时,它使开发人员可以轻松构建弹性、无状态和有状态微服务,这些服务运行在云和边缘上,并包含多种语言和开发框架。
至此,“14.3.2 云原生微服务”的全部内容就讲解完了。更多内容请看下回。