云原生战专题 | 深入浅出分析云原生微服务的技术结构和架构设计

news/2024/7/24 11:04:04 标签: 云原生, 微服务, 架构

深入浅出分析云原生微服务的技术结构和架构设计

云原生容器技术背景

容器作为标准化的软件单元,将应用及其依赖打包在一起,实现了应用的环境无关性,使其能够在不同计算环境中快速、可靠地运行。

随着开源的Kubernetes的出现,它展示了出色的开放性、可扩展性,并拥有活跃的开发者社区。

在容器编排领域,Kubernetes已经成为分布式资源调度和自动化运维的事实标准。它屏蔽了不同基础架构(如数据中心、云、边缘计算)的差异,并具备良好的可移植性。通过Kubernetes,企业能够根据自身的业务需求设计其云架构,以更好地支持多云和混合云环境,并摆脱被厂商锁定的担忧。随着容器技术的标准化,Kubernetes进一步推动了容器生态系统的分工和协同发展。在Kubernetes的基础上,生态社区正在构建上层的业务抽象,例如服务网格Istio、机器学习平台Kubeflow、无服务器应用框架Knative等。

容器编排

Kubernetes 已经成为容器编排的事实标准,被广泛用于自动部署,扩展和管理容器化应用。Kubernetes 提供了分布式应用管理的核心能力:

  • 资源调度:根据应用请求的资源量 CPU、Memory,或者 GPU 等设备资源,在集群中选择合适的节点来运行应用;
  • 应用部署与管理:支持应用的自动发布与应用的回滚,以及与应用相关的配置的管理;也可以自动化存储卷的编排,让存储卷与容器应用的生命周期相关联;
  • 自动修复:Kubernetes可以会监测这个集群中所有的宿主机,当宿主机或者OS出现故障,节点健康检查会自动进行应用迁移;K8s也支持应用的自愈,极大简化了运维管理的复杂性;
  • 服务发现与负载均衡:通过Service资源出现各种应用服务,结合DNS和多种负载均衡机制,支持容器化应用之间的相互通信;
  • 弹性伸缩:K8s可以监测业务上所承担的负载,如果这个业务本身的CPU利用率过高,或者响应时间过长,它可以对这个业务进行自动扩容。

Kubernetes控制平面的四大组件

Kubernetes的控制平面包含四个主要的组件:API Server、Controller、Scheduler以及etcd。如下图所示:

Kubernetes在容器编排中的设计要点

  • 声明式API:开发者可以专注于应用程序本身,而不必关心系统的执行细节。Kubernetes提供了不同资源类型(如Deployment、StatefulSet、Job等),用于抽象不同类型的工作负载。采用声明式API的实现方式,与基于"level-triggered"方式相比较,可以实现更强大的分布式系统。
  • 可扩展架构:所有的Kubernetes组件都是基于一致、开放的API实现和交互。第三方开发者可以通过CRD(Custom Resource Definition)/Operator等方式提供领域相关的扩展实现,极大地提升了Kubernetes的能力。
  • 可移植性:Kubernetes(K8s)通过Loadbalance Service(负载均衡服务)、CNI(容器网络接口)和CSl(容器存储接口)等抽象概念,帮助应用屏蔽了底层基础设施的实现差异。这样,业务应用就可以在容器间灵活迁移,实现设计目标的容器灵活性。

云原生微服务典型架构

自2011年以来,微服务架构理念已经演变出了四个典型的架构模式,按照它们出现的顺序进行归纳。

第一代微服务架构

除了实现业务逻辑外,应用程序还需要自己解决上下游寻址、通信和容错等问题。随着微服务规模的扩大,服务寻址逻辑变得越来越复杂。即便是同一编程语言的另一个应用程序,也需要重新实现上述微服务的基础能力。

第二代微服务架构

引入了旁路服务注册中心作为协调者,实现了服务的自动注册和发现。服务之间的通信和容错机制开始模块化,形成了独立的服务框架。然而,随着服务框架内功能的增加,不同语言的基础功能复用变得困难。这意味着微服务的开发者被限制在特定的编程语言上,违背了微服务的敏捷迭代原则。

第三代微服务架构

服务网格架构将原本被模块化到服务框架中的微服务基础能力进一步演进为一个独立进程,即Sidecar。这个变化彻底解决了第二代架构中的多语言支持问题,实现了微服务基础能力与业务逻辑的彻底解耦。这个架构被称为云原生时代的微服务架构,即Cloud Native Microservices。Sidecar进程接管了微服务应用之间的流量,承载了第二代架构中服务框架的功能,包括服务发现、调用容错以及丰富的服务治理功能,例如权重路由、灰度路由、流量重放和服务伪装等。

第四代微服务架构

在这个架构中,微服务进一步简化为微逻辑(Micrologic),边车模式也提出了更高的要求。更多可复用的分布式能力从应用中剥离,并下沉到边车中,包括状态管理、资源绑定、链路追踪、事务管理和安全等。同时,开发侧开始倡导面向localhost编程的理念,提供标准API来屏蔽底层资源、服务和基础设施的差异,从而进一步降低微服务开发的难度。这就是目前业界提出的多运行时微服务架构(Muti-Runtime Microservices)的概念。

未来的云原生架构 — Serverless

随着云原生技术(以Kubernetes为代表)在云计算中扮演着容器界面的角色,Kubernetes变成了新一代云计算操作系统。针对特定领域的后端云服务(BaaS)则提供了在这个操作系统上的服务API。在存储、数据库、中间件、大数据等领域,许多产品和技术都开始提供全托管的云服务。越来越多的用户已经习惯于使用这些云服务,而不再自行搭建存储系统或部署数据库软件。


http://www.niftyadmin.cn/n/5306397.html

相关文章

【AI视野·今日NLP 自然语言处理论文速览 第六十八期】Tue, 2 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 2 Jan 2024 Totally 48 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers A Computational Framework for Behavioral Assessment of LLM Therapists Authors Yu Ying Chiu, Ashish Shar…

安装阿里云CLI之配置阿里云凭证信息

有时候需要再主机上通过 OpenAPI 的调用访问阿里云,并完成控制,此时就需要在服务器上安装阿里云CLI,并完成账号的设置。 1. 登录阿里云创建账号 1.1 点击阿里云头像 ——》 控制访问 ——》创建一个拥有DNS权限的用户 这个用户不用太多权限…

【AI视野·今日NLP 自然语言处理论文速览 第六十六期】Tue, 31 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 31 Oct 2023 (showing first 100 of 141 entries) Totally 100 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers The Eval4NLP 2023 Shared Task on Prompting Large Language Models a…

YOLOv8改进 | Neck篇 | 利用ASF-YOLO改进特征融合层(适用于分割和目标检测)

一、本文介绍 本文给大家带来的改进机制是ASF-YOLO(发布于2023.12月份的最新机制),其是特别设计用于细胞实例分割。这个模型通过结合空间和尺度特征,提高了在处理细胞图像时的准确性和速度。在实验中,ASF-YOLO在2018年数据科学竞赛数据集上取得了卓越的分割准确性和速度,…

Mysql 分割字符串,一行变多行,@rownum,mysql.help_topic

1 前言 朋友最近遇到一个比较棘手的 sql 问题,让我帮忙看看: 他有两张表 testa 和 testb ,一个表存的日期,另一个表存字符串例如 2023-11-01,2023-11-02,如何将这两张表关联起来,只查 testa 表的数据&#…

美格智能5G RedCap模组SRM813Q通过广东联通5G创新实验室测试认证

近日,美格智能5G RedCap轻量化模组SRM813Q正式通过广东联通5G创新实验室端到端的测试验收,获颁测评证书。美格智能已连续通过业内两家权威实验室的测试认证,充分验证SRM813Q系列模组已经具备了成熟的商用能力,将为智慧工业、安防监…

走向云原生 破局数字化

近年来,随着云计算概念和技术的普及,云原生一词也越来越热门,云原生成为云计算领域的新变量。行业内,华为、阿里巴巴、字节跳动等各个大厂都在“抢滩”云原生市场。行业外,云原生也逐渐出圈,出现在大众视野…

专业实习day3、4(路由器做内网访问公网)

专业实习 代码 display ip interface brief 显示当前设备下所有接口IP undo IP地址支持覆盖,但是正常的命令不能覆盖必须undo(删除)掉 un in en 在做配置的过程中,设备系统一般都会出现一些提示或者告警之类的东西,从…