译⽂:Top Three Use Cases for Dapr and Kubernetes

c04ecdec0c543c64d9f35488d52ef385.png

有关译者:陈东海(seachen)⽬前就职于腾讯,同时在社区也是⼀名Dapr Member.

导语:在SDLC(Software Development Lifecycle软件开发⽣命周期中),绝⼤多数CNCF项⽬都是专注于软件开发的中后期阶段,特别是运维和可观测性⽅⾯。⽽很少有CNCF项⽬专注于早期阶段。⽽Dapr就是在软件开发的早期阶段,帮助开发者提⾼⽣产⼒。

作者

原⽂标题

发布时间

Bilgin Ibryam

Top Three Use Cases for Dapr and Kubernetes

2022.12.20

适合阅读⼈群:研发童鞋以及云原⽣产品童鞋。

内容摘要(若感兴趣,再读原⽂,阅读原文可以到达)

1.⼤多数IT项⽬,都是来源于增加收⼊、降低成本和降低⻛险三个业务⽬标;由此推导出产⽣的三个副作⽤,分别是多语⾔、多负载和多环境的⽀持。并以此作为XYZ三维坐标轴,提出问题和分析问题;并引出云原⽣;

2.了解SDLC(软件开发⽣命周期)不同阶段的CNCF项⽬,往往都聚焦于中后期的应⽤运维,⽐较少地关注如何创建应⽤并提⾼开发者的⽣产⼒。⽽Dapr就是这样的⼀款产品;

3.从集群上、集群外和多集群的三个案例,来分析Dapr如何与Kubernetes互补来帮助开发者开发出云原⽣应⽤。

---------------以下是译者想告诉读者的------------------

Bilgin Ibryam之前是Red Hat的产品经理和架构师。他在2020年写过 Multi-Runtime Microservices Architecture⼀⽂,⽂章中的分布式原语(distributed primitives)就是这位童鞋提出来的。Dapr区开源产品和他提出的这个理念⾮常契合,2022年中旬了解到Dapr后并迅速加⼊了diagrid型创业公司。⽬前在该公司担任产品经理,⽽diagrid公司是由两位前微软童鞋 Mark Fussell(现任CEO)Yaron Schneider(现任CTO)2021年底创办的。

diagrid公司融资详情:Diagrid Emerges from Stealth with $24.2 Million in Funding, Launches Fully Managed Dapr for Kubernetes

 Dapr  KEDAKubernetes Event-Driven Autoscaling)创始⼈ Mark Fussell  Yaron

Schneider 创办的 Diagrid 最近获得 2400 万美元融资。投资⼈阵容⼗分强⼤,包括 Kubernetes 联合创始⼈ Joe BedaBuoyant CEO William Morgan(这⼈是开创性地提出了服务⽹格(Service Mesh)概念,其著名的开源项⽬Linkerd)笔者最早在2016年使⽤(java开发,⾯向服务治理的代理), Azure CTO Mark Russinovich,前Atlassian CTO Sri Viswanath,以及前 Heroku CEO Adam Gross。 

-----------------以下是译⽂-------------------------

Kubernetes已经成为运⾏分布式应⽤的事实标准,⽆论它们是集群上的、集群外的还是多集群的。但是Kubernetes并没有为业务开发者提供很多好处,也没有为⼤多数其他CNCF项⽬提供好处。但是也有例外,新的CNCF项⽬(例如Dapr(孵化中))正在提⾼开发者的⽣产⼒让业务开发变得简单。在这篇⽂章中,我们将探索前三个案例,以展示Kubernetes也可以扩展新的运营领域,以及为什么Dapr是最适合开发者的Kubernetes伙伴。

技术扩散阻碍⽣产⼒

如果我们从较⾼的层⾯看⼀下⼤多数IT项⽬,它们都属于以下类别之⼀:增加收⼊降低成本降低⻛险。在您的组织中,您可能有这三者的变体,例如提⾼客户满意度、减少客户流失等,但它们⼤致属于同⼀类。有多种⽅法可以实现这些⽬标,这⾥我挑选了⼀些作为示例,但对于您的组织⽽⾔,这些⽅法的顺序会有所不同。

a7fbd957b3c42086a5797fd97e1ef2af.png

业务⽬标与副作⽤

您可决定采⽤⼀些很新很酷的开源机器学习技术,并利⽤它开发⼀些创新服务来增加收⼊。您可以通过迭代开发实践和较⼩的开发单元(如微服务)按时更新软件来降低合规⻛险。裁员并不是性价⽐最⾼的⽅式,在公司内部或者⼩团队内并不是所有事情都需要亲⼒亲为,⽽是通过⾃动化,采⽤云和SaaS服务的⽅式来实现软件⽣命周期的全流程管理,这样性价⽐更⾼。但后果总是有的,您意识到机器学习最流⾏的语⾔是PythonJavascriptWeb开发的最佳语⾔,Java⽤于桌⾯,Swift⽤于移动终端,C++⽤于IoT应⽤等等,您最终会在组织内使⽤多种语⾔。

然后您意识到您必须运维微服务、函数、单体服务以及介于这两者之间的许多其他应⽤。⽽且您必须在本地和⼀个或多个云上执⾏此操作。从组织层⾯来看,所有这些都导致了同时发⽣多个维度的技术扩散。

6d2535f12bb5a77bbc5bef43c2465a59.png

技术扩散对开发和运维的影响

英⽂

译⽂

1

How to do reliable service invocation

如何可靠地执⾏服务调⽤?

2

How run heterogeneous workloads consistently

如何⼀致性地运⾏异构的⼯作负载?

3

How to connect 3rdparty services?

如何连接第三⽅服务?

4

How to provision and automate hybrid  infrastructure uniformly?

如何统⼀地配置和⾃动化混合基础设施?(这个翻译

怪怪的),⼤概含义就是在混合基础设施环境下,如

何通过配置来统⼀部署




5

How to do pub/sub with DLQx in language X?

如何⽤任意⼀种语⾔处理带死信队列的消息发布与

订阅?

6

How to package and distribute polyglot apps  consistently?

如何⼀致性地打包和分发多语⾔应⽤?

技术扩散不同程度地影响着不同的团队。仅仅使⽤Python,您就可以有⾃⼰的数据科学团队,但是这个平台的⼯程团队必须为使⽤不同语⾔的多个团队提供构建和打包⼯具。您可能有新创建的微服务,它们遵循12-factor则。但是运维团队可能还必须照顾单体应⽤,以及不断增加函数的实例。您的基础设施团队必须创建⾃动化以遵循多个云和本地部署上进⾏配置。

平台和运维团队的挑战在于如何保证许多团队之间的⼀致性和统⼀性,开发团队的挑战在于其团队内部的⽣产⼒。通常,开发团队使⽤某些语⾔(例如:java.net,他们更适合创建分布式应⽤,和可以连接到各个SaaS端点的应⽤),⽽使⽤不同语⾔的其他团队往往是孤⽴的,他们并不能从丰富的云原⽣⽣态系统中受益。这些团队不能复⽤相同的⼯具和模式来解决常⻅问题。应对技术扩散带来的这些挑战,答案是什么?⼀个答案就是成为云原⽣,这是CNCF定义⽅式以及那⾥不断增⻓的项⽬⽣态系统。

开发者的期望仍未得到满⾜作为⼀名前开发⼈员,我决定检查哪些CNCF项⽬,可以帮助开发者编写代码并实现云原⽣应⽤。我粗略地绘制了SDLC阶段(全称:Software Development Lifecycle软件开发⽣命周期),并将它们放在所有已毕业的CNCF项⽬中,趋势很明显。没有任何⼀个已毕业的CNCF项⽬可以帮助软件开发的早期阶段。我也增加了孵化中的CNCF项⽬,专注于运维和可观测性应⽤的趋势更加强烈。如下图所示:

dba46e942a4cb399306e8dc5cbde60d0.png

在软件开发⽣命周期中的CNCF项⽬

该图不是完整的,它不能完全代表⽣态系统中的所有变化。例如:这⾥有些是聚焦运⾏时的项⽬,也帮助了开发者。例如,可观测性⼯具总是提供SDKKnative serving为运⾏应⽤提供⾃动伸缩和蓝绿发布功能,⽽Knative eventing帮助开发者实现事件驱动的应⽤。与此同时,⽆论是Kubernetes, 代理还是基于eBPFlinux内核,任何以前属于应⽤层的分布式系统职责也正在通过eBPF转移到基础设施层。但是总体来说,所显示的趋势是准确的,CNCF项⽬的重点仍然是运维应⽤,⽽不是创建应⽤。好消息是这⾥有新的项⽬,例如:Dapr和其他针对开发者的项⽬,并专注于实现适应云原⽣环境的应⽤。

接下来,我们将研究三个具体的⽤例,其中 Kubernetes正在成为部署和运维应⽤的事实标准,⽽Dapr使开发者能够实现云原⽣应⽤,并以云原⽣⽅式使⽤基础设施。这些⽤例展示了Dapr如何与Kubernetes互补并提⾼开发者的⽣产⼒,就像Kubernetes提⾼运维团队的⽣产⼒⼀样。

创建和运维集群上的应⽤

如今,Kubernetes API是部署和运⾏分布式系统最流⾏的⽅式。容器和Kubernetes允许我们定义和实施应⽤程序资源约束。具有初始化容器和SidecarPod抽象提供了应⽤⽣命周期的保障。健康检查APIs提供了从短暂地运⾏时故障中检测和恢复的能⼒。有声明式部署、回滚和策略驱动的应⽤placement。所有这些都允许运维⾃动化部署和管理⼤量⼯作负载,但对开发⼈员来说有什么好处呢?

Dapr帮助开发者实现运维能够在k8s上运⾏的分布式应⽤

开发⼈员可以使⽤Kubernetes⾃带的服务发现,但它缺乏重试、超时和熔断等⽹络弹性功能。

虽然KubernetesConfigMapsSecrets,但它们缺乏动态更新和细粒度的访问控制。

Kubernetes有StatefulSet,但没有⽤于访问该状态的API。 Kubernetes有健康检查,但它不会申请出⼝连接,例如从队列中消费(翻译得不太明⽩)Kubernetes中没有任何东⻄可以帮助实现事件驱动的应⽤。

这就是 Dapr 的⽤武之地。Dapr 解决了这些限制,并为开发者提供了与Kubernetes为运维提供了相同的⽣产⼒。Kubernetes通过抽象基础设施来帮助运维应⽤。Dapr帮助开发者实现这些应⽤并以可靠的⽅式连接它们。 Dapr具有服务调⽤Pub/SubAPI,可帮助以任何语⾔编写的应⽤,在动态云基础设施上可靠地交互。它具有状态管理配置中⼼秘钥其他API,可帮助开

发者通过通⽤且可复⽤的模式实现应⽤需求和使⽤基础设施。

提供和使⽤集群外的资源

Kubernetes可以很好地管理集群上的应⽤。但这些集群上的应⽤需要并依赖于集群外的资源,例如数据库、⽂档存储、消息队列和数⼗种其他云服务。如果您已经在使⽤Kubernetes 来运维应⽤,那意味着您使⽤的是YAML语法,以及定义所需资源状态的声明性概念。如果您正在使⽤基础设施即代码和GitOps等⼯具来实现⾃动化,那么您也可以使⽤Kubernetes API来管理外部资源。这使得Kubernetes成为资源所需状态的单⼀真实来源,不仅适⽤于集群上的容器,也适⽤于集群外的资源。现在有这样的Kubernetes云⼚商,例如 AWS Controller for Kubernetes、Azure Service Operator、Google Config Connector,以及像Crossplane这样的 CNCF 项⽬,它们使⽤ Kubernetes CRD来管理外部资源。但是这些⼯具的职责在管理外部资源的⽣命周期之后结束,并且不会扩展到绑定到在 Kubernetes 数据平⾯中运⾏的应⽤。通常,这些云⼚商有⼀种机制,可以将外部资源的坐标和访问机制添加到configmapsecret CRD 中。但是使⽤特定协议从应⽤到资源的实际绑定会再次留给开发者处理。

a7ccc99f7a836338d83d362ad6565cf4.png

Dapr帮助开发者使⽤运维通过k8s提供的第三⽅服务

这就是Dapr能够帮助开发者的地⽅。 Dapr绑定帮助开发者将应⽤与外部资源连接起来,⽆论您的应⽤程序使⽤何种语⾔。提供外部资源只是故事的⼀半。 Dapr帮助您从应⽤中使⽤该基础设施。并通过添加弹性、跟踪、安全性并以⼀致性的⽅式做到这⼀点,并通过 API sidecars以云原⽣⽅式做到这⼀点,⽽不是将难以升级的库嵌⼊到应⽤中。

开发和编排多集群的应⽤

我们已经了解了 Kubernetes 如何⽤于管理集群上的应⽤程序以及如何⽤于管理集群外的资源。使⽤ Kubernetes API还有⼀种趋势,那就是管理多个远端集群上的应⽤。

如今,由于规模、应⽤和数据本地化、隔离等各种原因,组织必须将应⽤部署到多个数据中⼼、云和 Kubernetes集群中。Kubernetes集群的物理边界并不总是符合所需的应⽤边界。通常,必须将同⼀个应⽤或⼀组应⽤部署到多个集群中,这需要多集群部署和编排。有许多项⽬和服务可以让您在多个集群上运⾏应⽤,例如 Azure Arc、Google Anthos、Red Hat Advanced Cluster ManagerHypershift kcp.io等项⽬。这些项⽬提供统⼀的⽤户界⾯、仪表板、警报、⽇志、策略和对多个集群的访问控制。他们中的⼤多数通过提供Kubernetes API作为控制平⾯,并将每个集群作为数据平⾯来实现这⼀点。为了使⽤⼀致的操作、安全、合规模型,您可以集成DevOps ⼯具包。

Dapr帮助开发者创建运维可以通过Kubernetes API操作的多云应⽤

在这种场景下,Dapr帮助创建可以运⾏并与任何云环境交互的多云应⽤。在不同的云环境中打包和运⾏应⽤⼜是故事的另⼀半。通常在云环境中运⾏的应⽤必须使⽤该云环境的本地服务,⽽Dapr⽀持这⼀点。通常,不同的云⼚商提供不同的抽象、模式和⼯具来解决相同的问题,这些问题在不同的环境中不可转移和重⽤。 例如,Azure 有 Event Grid,AWS 有 EventBridge,GCP  Eventarc ⽤于创建事件驱动的应⽤程序。这些服务中的每⼀个都有独特的学习曲线,并与云⼚商耦合。另⼀⽅⾯,Dapr pub/sub API 提供了通⽤的异步构建块,可⽤于为任何云和本地创建事件驱动的应⽤程序。

在多云场景中,Dapr API充当统⼀的构建块,使开发者能够创建独⽴于云的解决⽅案,并使运维团队能够应⽤弹性策略并从统⼀的独⽴于云的应⽤程序运⾏时获取指标和跟踪。Diagrid Conductor等服务可以帮助在多个云环境中运⾏Dapr所有这些使得Dapr成为创建多云应⽤的开发者和运维这些应⽤程序的理想补充。

ps. 译者备注,开发和编排多集群的应⽤:主要是讲可移植性。使⽤Dapr Sidecar后就与云⼚商解耦了。)

⽆处不在的云原⽣API

Kubernetes已经不仅仅是⼀个容器编排器。它也可以管理集群内、集群外和多集群资源。它是⽤于管理多种资源的通⽤且可扩展的操作模型。其声明式YAML API和异步协调过程已成为资源编排范式的代名词。它的CRD  Operators已经成为将领域知识与分布式系统合并的通⽤扩展机制。

f61b52f7465db52f816a725e96f0436a.png

Kubernetes和Dapr APIs的特点

Dapr建⽴在与Kubernetes相同的原则和基础之上。Dapr通过定义明确的API(称为构建块)提供其 协议上运⾏,使它们⽀持多种语⾔,并且可以从任何语⾔或环境中访问。 Dapr功能随着新构建块的添加⽽不断增⻓,例如最近的分布式锁API,以及内容存储和⼯作流 API提案。 Dapr功能还通过添加当前超过100个并且还在增⻓的构建块来扩展。

这篇⽂章基于我在底特律Dapr社区⽇的演讲@bibryam@diagridio关注我,看看我使⽤Dapr和构建Diagrid Cloud旅程,或者说出您的任何想法和评论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

平视相机svo开源项目_什么是平视显示器(HUD),我应该得到一个吗?

平视相机svo开源项目In a world full of augmented reality snowboard goggles and Google Glass, it seems only fair that our cars get to enjoy some of the same treatment. Heads-up displays, or “HUDs” as they’re better known, are a new type of add-on for cons…

react项目打包后路径找不到,项目打开后页面空白的问题

使用 npm install -g create-react-app快速生成项目脚手架打包后出现资源找不到的路径问题: 解决办法:在package.json设置homepage 转载于:https://www.cnblogs.com/lan-cheng/p/10541606.html

ios 拍照 实现 连拍_如何在iOS设备上使用连拍模式拍照

ios 拍照 实现 连拍We’re sure you’ve tried to capture that perfect moment with your camera and you’re just a tad too late or too early and you miss it. If you own an iPhone or iPad, you can use burst mode and never miss that perfect shot again. 我们确定您…

路由热备份(HSRP)DynamipsGUI小试牛刀

——好久不见啊,大家最近过的还好吗?——学而不思则罔,思而不学则殆。好了,既然已经踏上了CCNP之旅,那就和大家一起分享一下学习HSRP的体会吧——在CCNA中我们设计网络的目的主要是——通!到了CCNP&#xf…

WPF 如何实现简单放大镜

WPF 如何实现简单放大镜控件名:Magnifier作 者:WPFDevelopersOrg - 驚鏵原文链接[1]:https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用.NET40;Visual Studio 2019;实现此功能需要用到 VisualBrush ,放大镜…

input 禁用智能提示_如何在智能手机上禁用紧急警报

input 禁用智能提示AMBER and emergency alerts occur when there’s a child abduction or there’s an important event such as a severe weather alert (tornado warning) that local governments needs to make people aware of. While we don’t recommend disabling the…

laravel中使用的PDF扩展包——laravel-dompdf和laravel-snappy

这两天项目中需要将HTML页面转换为PDF文件方便打印,我在网上搜了很多资料。先后尝试了laravel-dompdf和laravel-snappy两种扩展包,个人感觉laravel-snappy比较好用。 一、使用laravel-dompdf扩展包 1、安装扩展包 我们通过composer来安装 composer requi…

使用jenkins进行项目的自动构建部署

jenkins 简介 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:持续的软件版本发布/测试项目和监控外部调用执行的工作。 官网地址地址: https://jenkins.io 下载安装启动 CentOS 下用yum进行安装启动 …

如何删除Apple Music中的连接功能

Love Apple Music, but tired of the intrusive Connect feature taking up space on your favorite artist’s page? Well, don’t worry, because getting “dis-Connected” is just a matter of changing a few simple settings in your iPhone or iPad running iOS 8.0 o…

python设计模式(十四):模板方法模式

定义一个算法或者流程,部分环节设计为外部可变,用类似于模板的思想来实例化一个实体,可以往模板中填充不同的内容;在模板思想下,实体的整体框架是确定的,他是一个模板,但是模板下内容可变&#…

PeeringDB初探

做网络相关工作的,可能需要了解PeeringDB这个网站(https://www.peeringdb.com), 这里有大部分公开注册的 ASN(Autonomous System Number) 以及他们相互直接做Peering的信息,这也是这个网站名字的由来。据统计&#xff…

修复windows脸部识别_如何在Windows 10中改善面部识别

修复windows脸部识别If you have the right hardware, Windows 10 lets you unlock your computer with nothing but a smile. However, Microsoft’s facial recognition isn’t always spot-on. Here’s how to help Windows recognize you better. 如果您拥有合适的硬件&…

使用组策略推送exchange自签名证书

一、导出证书打开证书颁发机构,在证书服务器上面选属性,然后按照下图进行导出操作。 在选择格式时按照上图标识选择。 二、导入证书新建一个组策略,在计算机配置-策略-windows设置-安全设置-公钥策略中选中“受信任的根证书颁发机构”并新建导…

基于.NetCore开发,前端支持Layui、React、Vue且前后端分离的快速开发框架

今天给大家推荐一个基于.Net Core开发的,前端框架支持Layui、React、Vue,并且前端和后端都支持代码一键生成,用于项目开发,可极大的提升开发效率。项目简介这是基于.net core的快速开发框架,前端框架可以根据自己需求选…

什么是Google On.Here,以及如何设置?

Google Wi-Fi is similar to other mesh Wi-Fi systems, but one big feature separates it from the pack: Google On.Here. Google Wi-Fi与其他网状Wi-Fi系统相似,但其中一个重要功能将其与众不同:Google On.Here。 发生什么了? (What Is O…

一张图看懂 SQL 的各种 join 用法

原文链接https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins 转载于:https://www.cnblogs.com/xuchao0506/p/10559951.html

1Python全栈之路系列Web框架介绍

Python全栈之路系列之Web框架介绍 所有的语言Web框架本质其实就是起一个socket服务端,监听一个端口,然后运行起来 Web框架包含两部分,一部分是socket,另外一部分是业务的逻辑处理,根据请求的不同做不同的处理 Python的Web框架分成了两类, 即包含socket也包含业务逻辑处理的(tor…

『 再看.NET7』数值类型

在C#中,有int16,用short来定义;有int32,用int定义;用int64,用long来定义。在.NET7中,添加了int128,和unint128,位数更大的整型。var i16 short.MaxValue; Console.Write…

笔记本电脑升级固态硬盘好吗_如何升级笔记本电脑硬盘

笔记本电脑升级固态硬盘好吗Upgrading your laptop’s hard drive is a great way to get some extra life out of an old machine (or resurrect a dead one). Read on as we walk you through the prep work, the installation, and the followup. 升级笔记本电脑的硬盘驱动器…