快速掌握服务网格系列二:云原生、K8S、服务网格(Service Mesh)及微服务之间的关系

首先看下CNCF对云原生的定义:

Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.

云原生技术可以让你的组织构建和运行可扩展的应用,并且不限于公有云、私有云、混合云环境。容器、Service Mesh(服务网格)[1]、微服务、不变的基础设施和声明式API(k8s)共同组成了云原生。

Service Mesh(服务网格) 、声明式API(k8s)、微服务是云原生的组成部分:

<img src="https://pic1.zhimg.com/v2-d1dc6e9712977576f0affe34c000dae4_b.jpg" data-caption="" data-size="normal" data-rawwidth="796" data-rawheight="762" class="origin_image zh-lightbox-thumb" width="796" data-original="https://pic1.zhimg.com/v2-d1dc6e9712977576f0affe34c000dae4_r.jpg"/>

声明式API(k8s)

“声明式 API”的核心原理,就是当用户向 Kubernetes 提交了一个 API 对象的描述之后,Kubernetes 会负责为你保证整个集群里各项资源的状态,都与你的 API 对象描述的需求相一致。更重要的是,这个保证是一项“无条件的”、“没有期限”的承诺:对于每个保存在 etcd 里的 API 对象,Kubernetes 都通过启动一种叫做“控制器模式”(Controller Pattern)的无限循环,不断检查,然后调谐,最后确保整个集群的状态与这个 API 对象的描述一致。

简单理解就是对象的声明与对象的创建相解耦,在普通程序中创建对象需要向操作系统申请资源,相似的,在容器云平台上创建对象,需要向k8s申请资源。但k8s更进一步的是,你只需要提交一个申请单,然后由k8s系统完成对象的创建。

再来看看云原生的提出者Pivotal对云原生的定义:

Cloud native is an approach to building and running applications that exploits the advantages of the cloud computing delivery model. Cloud native is about how applications are created and deployed, not where. While today public cloud impacts the thinking about infrastructure investment for virtually every industry, a cloud-like delivery model isn’t exclusive to public environments. It‘s appropriate for both public and private clouds. Most important is the ability to offer nearly limitless computing power, on-demand, along with modern data and application services for developers.

云原生是一种利用云计算交付模型的优势来构建和运行应用程序的方法。云原生是关于如何创建和部署应用程序,而不是在何处部署。虽然如今,公共云影响了几乎所有行业的基础设施建设思维,但类似云的交付模式并不是公共环境独有的。它适用于公共云和私有云。最重要的是能够按需提供几乎无限的计算能力,以及为开发人员提供现代数据和应用程序服务。

Pivotal认为云原生四个关键要素为:DEVOPS、CICD、微服务、容器化

提到微服务就会想到微服务之间的治理也就是服务网格(Service Mesh),而容器化则会想到解决容器编排与调度的K8S。

<img src="https://pic4.zhimg.com/v2-200bc439bc1202de5dd363e21de737a7_b.jpg" data-size="normal" data-rawwidth="616" data-rawheight="608" class="origin_image zh-lightbox-thumb" width="616" data-original="https://pic4.zhimg.com/v2-200bc439bc1202de5dd363e21de737a7_r.jpg"/>

云原生四个关键要素DEVOPS、CICD、微服务、容器化

那么服务网格(Service Mesh )与K8S及微服务之间的关系是怎样的呢?大家可以先看下图。

<img src="https://pic4.zhimg.com/v2-5a1707063e1bd1f7af9dea4147736acb_b.jpg" data-size="normal" data-rawwidth="720" data-rawheight="474" class="origin_image zh-lightbox-thumb" width="720" data-original="https://pic4.zhimg.com/v2-5a1707063e1bd1f7af9dea4147736acb_r.jpg"/>

K8S与Service Mesh的关系

其实服务网格是以K8S为基础,为应用层(微服务)提供服务的,他们分别解决以下问题。

Kubernetes

• 解决容器编排与调度问题

• 本质上是通过调度器管理应用的生命周期

给予 Service Mesh 支持和帮助

Service Mesh

• 解决服务间网络通信问题

• 本质上是通过代理(side car)管理服务通信

• 是对 Kubernetes 网络功能方面的扩展和延伸

通过上面的讲述,大家是否清楚了云原生、K8S、服务网格(Service Mesh)及微服务之间的关系?有问题请留言,共同研究学习。

参考

  1. 快速掌握服务网格系列二:云原生、K8S、服务网格(Service Mesh)及微服务之间的关系

    快速掌握服务网格系列二:云原生、K8S、服务网格(Service Mesh)及微服务之间的关系

快速掌握服务网格系列二:云原生、K8S、服务网格(Service Mesh)及微服务之间的关系的更多相关文章

  1. 【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发

    <ASP.NET Core 微服务实战>译者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-tr ...

  2. 基于容器微服务的PaaS云平台设计(一) 实现容器微服务和持续集成

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 前言:关于什么是容器微服务PaaS和容器微服务PaaS的 ...

  3. 微服务之旅:从Netflix OSS到 Istio Service Mesh

    在这篇文章中,我们从Netflix开始,通过Envoy和Istio的崛起,快速浏览微服务的历史. 微服务是具有边界上下文的松散耦合服务,使您能够独立开发,部署和扩展服务.它还可以定义为构建独立开发和部 ...

  4. Istio Service Mash管理微服务

    Istio Service Mash管理微服务 今天的文章通过Istio开源项目展示如何为Kubernetes管理的微服务提供可见性,弹性,安全性和控制. 服务是现代软件体系结构的核心.比起复杂庞大的 ...

  5. 华为云MVP:来自工业制造领域的微服务与云平台实践

    [摘要] 首先,和大家先聊聊的是为什么微服务.DevOps和云计算会在各个产业大行其道;其次,再谈谈微服务架构设计有那些自己独特的设计思想,和传统的SOA有什么区别;最后,我们再一起看一看在工业领域云 ...

  6. 【解构云原生】初识Kubernetes Service

    编者按:云原生是网易杭州研究院(网易杭研)奉行的核心技术方向之一,开源容器平台Kubernetes作为云原生产业技术标准.云原生生态基石,在设计上不可避免有其复杂性,Kubernetes系列文章基于网 ...

  7. 云原生K8S精选的分布式可靠的键值存储etcd原理和实践

    @ 目录 概述 定义 应用场景 特性 为何使用etcd 术语 架构 原理 读操作 写操作 日志复制 部署 单示例快速部署 多实例集群部署 静态 etcd 动态发现 常见命令 概述 定义 etcd 官网 ...

  8. 【智简联接,万物互联】华为云·云享专家董昕:Serverless和微服务下, IoT的变革蓄势待发

    摘要:Serverless.微服务,这些新技术和IoT有什么关系?纵观IoT行业的发展,云服务又扮演了什么角色? IoT并不是一个新名词.新技术,很长一段时间,它甚至给人一种"下工地&quo ...

  9. 【十次方微服务后台开发】Day02:加密与JWT鉴权、微服务注册中心、配置中心、熔断器、网关、消息总线、部署与持续集成、容器管理与监控Rancher、influxDB、grafana

    一.密码加密与微服务鉴权JWT 1.BCrypt密码加密 Spring Security 提供了BCryptPasswordEncoder类,实现Spring的PasswordEncoder接口使用B ...

  10. 【微服务架构设计实施】第一部分:架构篇-1:微服务架构与Spring Cloud介绍

    〇.概述 一.微服务架构与Spring Cloud (一)概念 不同说法:细粒度的.清凉组件化的小型SOA(面向服务架构) 统一说法:小型应用程序(服务组件),使用轻量级设计方法和HTTP协议通信 理 ...

随机推荐

  1. Go语言常用标准库——flag

    文章目录 os.Args flag包基本使用 导入flag包 flag参数类型 定义命令行flag参数 flag.Type() flag.TypeVar() flag.Parse() flag其他函数 ...

  2. C++算法之旅、09 力扣篇 | 常见面试笔试题(上)算法小白专用

    刷题的目的是为了更好的理解数据结构与算法,更好的理解一些封装起来的库函数是怎么实现的,而不是简简单单的为了刷题而刷题. 时间.空间复杂度 事后统计法 提前写好算法代码和编好测试数据,在计算机上跑,通过 ...

  3. 【本博客所有关于git文章迭代汇总】git操作(暂存,回退,绑定远程等),看这一篇就够了

    1.git常用操作 git 小白操作,无非是clone,然后拉取,提交分支,第一次clone的时候,关联远程分支可能会遇到问题,可以看第四条git关联远程分支 # 在当前目录新建一个Git代码库 $ ...

  4. 简单地聊一聊Spring Boot的构架

    本文由葡萄城技术团队发布.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 本文小编将详细解析Spring Boot框架,并通过代码举例说明每个层的作用 ...

  5. 简述几个我们对Redis 7开源社区所做的贡献

    Redis 7 已经于2022年4月28号正式发布,其中包括了将近50个新的命令,增加了许多新的特性,并且在整个Redis 6到Redis 7的开发过程中,我也对Redis 的开源社区贡献了一些微薄的 ...

  6. HDL刷题:Count clock

    原题链接 要写一个12小时的时钟. 由题目得知,reset信号的优先级最高,其次是enable,这里很好实现. 我的思路: 写了一个4位的bcd计数器,并实例化了4个,对ss与mm的[7:4]与[3: ...

  7. 大立科技DM63红外相机SDK开发Ⅰ-连接仪器

    1.开发准备 为了方便发开,需要下载Visual Studio,本开发基于Visual Studio 2022,使用C++. 通过Visual Studio创建好项目后,将DMSDK V1.16.3内 ...

  8. SQL模糊查询语法思考

    模糊查询 sql语句: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 % :表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示 ...

  9. Android学习day04【Button】

    出现的一些小状况: 小状况 报错,代码显示运行成功 但是无法在模拟机上显示 原因是没有在包含应有id 其二是关于设置背景颜色中 关于background与backgroundTint的区别 //这是b ...

  10. 【scikit-learn基础】--『数据加载』之玩具数据集

    机器学习的第一步是准备数据,好的数据能帮助我们加深对机器学习算法的理解. 不管是在学习还是实际工作中,准备数据永远是一个枯燥乏味的步骤.scikit-learn库显然看到了这个痛点,才在它的数据加载子 ...