CloudNative
云原生技术概论
● 云原生技术概览:https://www.thebyte.com.cn/architecture/summary.html
Quick Question
云原生
云原生是什么?
云原生是一种架构理论,旨在充分发挥云平台的弹性和分布式优势,构建在云上以最佳姿势运行应用程序。
见:什么是云原生?
云原生架构的特点是什么?
基于微服务架构,配合服务网格,降低业务单体的复杂性;借助敏捷方法和 DevOps 方法提高迭代效率,同时采用 K8S + 容器支持运维自动化;最后,利用云平台基础设施提供的声明式基础设施配置,实现资源的弹性伸缩、动态调度,提高资源利用率。
云原生不可能三角?
高可用、规模化、敏捷;其间关系分别可戏称为大象起舞、空中换发和巨人绣花。
云原生架构的定义?
云原生基金会 CNCF 给出的云原生的定义的 V1 版本。
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。 云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。
云原生架构相关哪些技术?
- 容器和镜像:Docker、Containerd、CRI-O、Kata Containers
- 镜像仓库:Harbor、Nydus
- 应用封装:Kustomize、Helm
- 持续集成:Gitlab、Tekton
- 持续部署:FluxCD、argoCD
- 容器编排:Kubernetes
- 网关:Ingress-Nginx、APISIX
- 日志:Fluentd、Grafana Loki
- 监控:Grafana、Prometheus
- 应用开发:Nocalhost
从架构发展来看,用户和平台的关注点是怎么变化的?
从用户自建、IaaS、PaaS、SaaS 到 FaaS,客户和平台关注的东西并不一样。 以 SaaS 举例,客户只需要关注数据,而平台关注包括应用程序、应用依赖、中间件、操作系统、虚拟化服务器、存储、网格等其余所有基础设施。
有哪些亿级 DAU 规模的移动应用?
POE Assistant:以下是一些拥有亿级日活跃用户(DAU)规模的知名移动应用的例子(截至2021年)
- Facebook:Facebook是全球最大的社交媒体平台,拥有超过20亿月活跃用户,其中大部分用户通过移动应用进行访问。
- WhatsApp:WhatsApp是一款全球领先的即时通讯应用程序,每天有超过20亿用户使用该应用进行消息传递和语音通话。
- WeChat(微信):WeChat是中国最流行的社交媒体和消息应用之一,拥有超过10亿活跃用户。它提供了聊天、社交、支付、游戏和其他功能。
- TikTok(抖音):TikTok是一款全球流行的短视频社交平台,拥有超过10亿用户。它提供了用户生成的短视频内容,吸引了大量的年轻用户。
- Instagram:Instagram是一款图片和视频分享社交平台,拥有超过10亿用户。它提供了用户上传和编辑照片、视频以及与其他用户互动的功能。
- Snapchat:Snapchat是一款以瞬间分享和自动消失的照片和视频为特点的移动应用,拥有超过5亿用户。
- Twitter:Twitter是一款全球知名的社交媒体平台,用户可以发布和阅读短消息(推文)。它拥有超过3亿的活跃用户。
如何按照规模和变更速度将软件企业划分为四个象限?
援引 Netflix 的说法,按照规模大小、变更速度的快慢可以将软件划分为:互联网企业(规模大、变化快)、初创公司(规模小、变化快)、电信业务(规模大、变化慢)、企业 IT(规模小、变化慢)。
初创公司面临软件失败的风险、电信业务面临硬件失败风险,企业 IT 要面对来自市场的冲击,而互联网企业是最危险的“Everything is Broken”。
什么是虚拟化技术?
虚拟化技术是一种资源管理技术,它可以将一台计算机的各种资源,如处理器、内存、硬盘、网络接口卡等,抽象、转换后提供给多个用户和应用程序使用。
最早的容器技术?
Chroot Jail;使用 chroot 系统调用将进程的 root 目录重定向到新位置,仪表创造独立的环境用于软件编译、测试以及安装。
Linux 容器是什么?
LXC,Linux Container;Google 推出的进程容器合并进入 Linux 内核后重命名为 Control Groups,它允许给进程提供操作系统级别的资源限制、优先级控制、审计能力。配合 namepace 称为 LXC,再配合安全防护机制形成了容器运行环境隔离的容器核心能力。
Docker 继 LXC 解决的问题是?
Docker 封装了应用程序的代码、依赖、工具、资源文件和元信息,可以做到将应用分发到任意平台或运行环境,即“Build once,Ship and Run Anywhere”
为什么称 Kubernetes 成了容器编排事实标准?
在于 Docker Swarm、Apache Mesos 的斗争中,K8s 没有历史包袱,预置了服务发现、容器网格等关键特性,并提供了用于描述集群架构、定义服务状态的声明式 API,帮助系统维持在这个状态,有明显的后发优势。最重要的是,K8s 拥有一套稳定可扩展的 API 盘活了生态。
容器兴起和编排大战的三个里程碑?
- 2013 ,Doocker 发布,云计算进入容器时代
- 2017 ,K8s 赢得容器编排的胜利,云计算进入 K8s 时代
- 2018,Istio 发布,服务网格的理念走向成熟
OCI 和 CNCF 的关系?
合作关系。
TODO
微服务带来了哪些技术挑战?
服务发现、服务熔断、负载均衡和通讯相关问题。通讯包括调用协议、加密、认证、鉴权等。
什么是服务网格?
服务网格是云原生的基础设施,用于云原生应用微服务组成的的复杂拓扑结构下的可靠请求传送。在实践中,它是一组和应用服务部署在一起的轻量级网络代理(Sidecar)。
Istio 初始架构是怎样的?
Istio 分为数据平面和控制平面。数据平面使用轻量级 Sidecar 如 Envoy 协调与控制服务之间的通信和流量处理;控制平面负责配置和管理数据平面,以及提供服务发现、智能路由、流量控制、安全控制等功能。
Sidecar 面临的问题或者说缺陷是?
- 在规模巨大化的服务集群下,网络通信的拓扑结构非常复杂,对作为独立容器的 Sidecar 下发配置会导致内存剧烈增长;
- 某些性能要求极高的业务场景,毫秒级别的延迟也不能接受。
作为改进,Proxyless 模式可以去 Sidecard 容器、消除跨进程调用,并降低延迟。但本质上,它只是使用 Istio Agent 把服务注册等工作和 gRPC 等框架绑定在了一起。
Sidecarless 模式是什么?
通过 Agent(代理)、注入式库或者云原生平台功能将 Sidecar 干掉。从原理来说,在 L4 和 L7 分别建立用途不一样的代理,托管不同的流量。L4 层建立了 TCP 路由,有简单的鉴权机制,使用 eBFP 通讯,能观测 TCP 指标和日志。L7 层建立了 HTTP 路由,有完善的鉴权。 Istio 未来的发展方向就是完善 Ambient Mesh(一种无边车模式的实现)。其使用 DaemonSet 部署 Waypoint Proxy 作为 L7 代理,而在 L4 使用 ztunnel。
不可变基础设施的核心思想是?
不可变基础设施的核心思想是基础设施的示例一旦创建就变成只读状态,如果需要修改或省级,应先修改配置模板,在根据模板创建新示例并替换旧实例。
不可变基础设施能解决什么问题?
以解决传统运维时代需要大量手工操作带来的构建难以自动化,以及环境变量改变等问题。其最大的优势是“一致性”,使基础设施管理简单、可部署、可规模化、可恢复,也提高了安全性。