云原生典型应用架构
百行百业有百种业务架构,这些业务架构又有无穷多的应用架构。在当今云原生数字化转型的进程中,这些应用架构在云原生平台上呈现出了一些统一的架构特点,比如通常都会使用一款云原生的数据库,再比如单个微服务本身都有健康检查的能力等。
首先云原生应用架构中普遍会使用一种或多种中间件。中间件是分布式软件应用中通用的一些基础软件,这些软件具有功能专一、稳定性和可靠性有保障、性能经过优化、对外呈现易用和实用的接口等特点。常用的典型中间件如下。
内存缓存中间件,常用的有 Redis、Memcached。
消息通信中间件,常用的有 Kafka、RabbitMQ、RocketMQ。
分布式事务中间件,典型的是 Seata。
日志采集和处理中间件,有 Logstash、Filebeat、Fluentd 等。
分布式配置及一致性保障中间件,典型的是 Kubernetes 使用的 etcd、Zookeeper、Consul 等。
通常来说,由于中间件使用的便利性以及它们的实用性很强,在应用架构中,使用中间件能够大幅简化系统实现的难度,对系统的容量扩展和性能提升都有很大益处。有一些中间件,比如 Redis,本身的设计目的和用途之一就是提升系统性能。另外,有一些中间件比如消息通信类服务,能够降低系统组件的耦合程度。在常规云原生应用架构中,中间件的使用十分常见,甚至因为太常见以至于大家常常忽略它们的存在,因为忽略而导致安全问题发生。
除了中间件之外,云原生应用架构的另外一个特点是其具备故障检查、故障恢复及线性扩展的能力,这些能力主要依靠云原生平台来实现。云原生平台上还提供对应用的监测和治理能力,监测是治理的前提,通过治理可以让业务应用运行得更加顺畅。另外监测也是一种提升应用安全可视化程度的手段,由于把一个应用拆分成了细粒度的微服务,微服务之间的调用和流量监视的复杂程度大幅提升,依赖服务网络技术的服务治理很大程度降低了复杂性,解决了这个问题。使用基于服务网络技术的微服务监测治理功能是云原生应用架构的另外一个典型特征。
云原生微服务架构本身还依赖一些支持组件,这些组件大部分都是使用云原生平台提供的能力,包括注册中心、配置中心以及网络转发服务。另外微服务应用通常需要通过 API 网关来将其内部的服务接口发布出去,供集群外部的客户端或第三方应用访问。通过 API 网关暴露内部的服务接口,它的好处,一方面是能够在网关处做一层接口的映射,避免直接暴露内部的接口地址和访问方式;另一方面可以在网关上面进行流量控制和安全控制。
最后,一整套云原生应用架构不能缺少数据类服务的支撑,包括数据采集、数据预处理、结构和非结构数据的存储以及数据的查询和分析能力。云原生应用的典型架构如下图所示:
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/e2139c78504fa450a18647688】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论