云原生架构白皮书学习笔记(5):主要云原生技术-云原生微服务

主要云原生技术

云原生微服务

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

微服务设计约束

  • 微服务个体约束
  • 微服务与微服务之间的横向关系
  • 微服务与数据层之间的纵向约束
  • 全局视角下的微服务分布式约束

云原生微服务典型架构

第一代微服务架构
第一代微服务架构中,应用除了需要实现业务逻辑之外,还需要自行解决上下游寻址、通讯,以及容错等问题。
第二代微服务架构
在第二代微服务架构中,引入了旁路服务注册中心作为协调者来完成服务的自动注册和发现。服务之间的通讯以及容错机制开始模块化,形成独立服务框架。
第三代微服务架构
第三代微服务架构 - 服务网格,原来被模块化到服务框架里的微服务基础能力,被进一步的从一个 SDK 演进成为一个独立进程 - Sidecar。这个变化使得第二代架构中多语言支持问题得以彻底解决,微服务基础能力演进和业务逻辑迭代彻底解耦。这个架构就是在云原生时代的微服务架构 - Cloud Native Microservices,边车(Sidecar)进程开始接管微服务应用之间的流量,承载第二代中服务框架的功能,包括服务发现、调用容错,到丰富的服务治理功能,例如:权重路由、灰度路由、流量重放、服务伪装等。
第四代微服务架构
近两年开始,随着 AWS Lambda 的出现,部分应用开始尝试利用 Serverless 来架构微服务,这种方式被称之为第四代微服务架构。在这个架构中,微服务进一步由一个应用简化为微逻辑(Micrologic),从而对边车模式提出了更高诉求,更多可复用的分布式能力从应用中剥离,被下沉到边车中,例如:状态管理、资源绑定、链路追踪、事务管理、安全等等。同时,在开发侧开始提倡面向 localhost 编程的理念,提供标准 API 屏蔽掉底层资源、服务、基础设施的差异,进一步降低微服务开发难度。这个也就是目前业界提出的多运行时微服务架构(Muti-Runtime Microservices)。

主要微服务技术

2018 年阿里巴巴陆续开源了 SpringCloud Alibaba( 分布式应用框架 )、Nacos( 注册中心 & 配置中心 )、Sentinel( 流控防护 )、Seata( 分布式事务 )、Chaosblade( 故障注入 );
Dubbo 在 v3 中发展 Service Mesh,目前 Dubbo 协议已经被 Envoy 支持,数据层选址、负载均衡和服务治理方面的工作还在继续,控制层目前在继续丰富 Istio/Pilot-discovery 中。
Spring Cloud 作为开发者的主要微服务选择之一,为开发者提供了分布式系统需要的配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话与集群状态管理等能力和开发工具。
Eclipse MicroProfile 作 为 Java 微 服 务 开 发 的 基 础 编 程 模 型, 它 致 力 于 定 义 企 业 Java 微 服 务 规 范,MicroProfile 提供指标、API 文档、运行状况检查、容错与分布式跟踪等能力,使用它创建的云原生微服务可以自由地部署在任何地方,包括 Service Mesh 架构。
Tars 是腾讯将其内部使用的微服务框架 TAF(Total Application Framework)多年的实践成果总结而成的开源项目,包含一整套开发框架与管理平台,兼顾多语言、易用性、高性能与服务治理。
SOFAStack(Scalable Open Financial Architecture Stack)是由蚂蚁金服开源的一套用于快速构建金融级分布式架构的中间件,也是在金融场景里锤炼出来的最佳实践。MOSN 是 SOFAStack 的组件,它一款采用 Go 语言开发的 Service Mesh 数据平面代理,功能和定位类似 Envoy ,旨在提供分布式、模块化、可观测、智能化的代理能力。MOSN 支持 Envoy 和 Istio 的 API ,可以和 Istio 集成。
Dapr(Distributed Application Runtime ,分布式应用运行时)是微软新推出的,一种可移植的、Serverless的、事件驱动的运行时,它使开发人员可以轻松构建弹性,无状态和有状态微服务,这些服务运行在云和边缘上,并包含多种语言和开发框架。

你可能感兴趣的:(云原生)