为什么 Dapr 如此令人兴奋

如今你构建软件,您可以从数量众多的云服务中进行选择。仅 AWS 就每个月都在不断为其200多项服务添加新服务,而其他云提供商也都在跟上。如果您的公司想与您的竞争对手竞争,您就需要充分利用这些服务,这些服务在不同的云提供商都有它的特色服务,我们的应用如何做到既是标准化又是可以个性化的,就拿消息队列来说吧,设置和管理您的消息队列并不会为您的产品增加任何价值,在Azure中期望使用Azure ServerBus,在阿里云你期望使用rocketmq,在私有云的k8s集群里你可以自由的选择rabbitmq,nat或者是redis,通过Dapr的components 让你无论是 Pub/Sub还是Binding 模块做到消息队列自由。

如果没有Dapr,你如何处理这个问题呢?通常都是让开发人员在具体的云提供商上平台选择他们想要的,虽然这听起来很有效,但对于几乎所有软件组织来说都是不切实际的,也不可取,因为开发人员会被各种选择所淹没。应对这一挑战的方法是提供满足您特定需求的这些服务的一个子集,通常这是在平台团队中协作完成的,并在PaaS平台中体现出来。

Thoughtworks 的MartinFlow.Com有篇文章:介意平台执行差异:开发人员生产力平台越来越被认为是管理工程团队认知负荷和缩短新功能上市时间的一种方式。然而,为了成功执行平台战略,组织需要培养一些基线能力。平台团队需要将平台视为一个软件产品,需要与用户对话,关注可靠的运营,以及健康的团队环境。Dapr 正是专门为构建平台而构建的,与其他方法相比具有一些优势,下面我认为特别重要的5点:

1、开发者友好的API

215e50d777172c862dede2ab13303896.png

首先要正确的是API。平台构建者需要一种方法来放置护栏并为开发人员提供可以轻松使用的 API, Dapr 基于 Open Application Model (OAM),最佳实践基于Kubernetes之上,对外提供标准的Http和Grpc 的API,  开发人员创建资源来请求特定服务也就很容易,例如利用Binding 构建块来使用Rabbitmq 消息队列,开发人员将执行简单的 kubectl apply ,然后通过标准的Http和Grpc 的API调用:

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:name: RabbitBinding
spec:type: bindings.rabbitmqversion: v1metadata:- name: queueNamevalue: queue1- name: hostvalue: amqp://admin:123456@192.168.43.101:5672- name: durablevalue: true- name: deleteWhenUnusedvalue: false- name: ttlInSecondsvalue: 60- name: prefetchCountvalue: 0- name: exclusivevalue: false- name: maxPriorityvalue: 5
对于 Kubernetes 开发人员来说,这很简单。这还有一个额外的好处,即我们可以无缝地融入庞大的 Kubernetes 工具生态系统。特别是在当前流行的 GitOps ,而且在非 Kubernetes 开发人员也可以使用的。
Dapr利用Sidecar的模式,把代码中的一些横切关注点需求(Cross-cutting)分离和抽象出来,从而达到运行环境的独立和对外部依赖(包括服务之间)的独立.
2、 强大而灵活的组合
Dapr 每个标准的 API 背后的实现可能相当复杂,可能涉及设置正确的云提供商资源,如权限、网络、VPC 和数据库实例等等。Dapr中的每个构建块都有来自云提供商的托管资源,Dapr 已经包括了AWS、Azure、GCP和阿里云的支持,并且社区正在增加各类组件的支持。
这些微服务基本构建块为开发人员提供跨平台跨语言的API实现。开发者可以专注于她请求的服务的属性,这些组合还可以与遗留或本地服务一起使用,这对于处于某种转型路径上的任何团队都至关重要。
3、强大的编程模型-Actors 和函数
Dapr 包含专门实现 virtual actors 模式 的运行时。通过 Dapr 的实现,您可以根据 Actors 模型编写 Dapr Actor,而 Dapr 利用底层平台提供的可扩展性和可靠性保证,通过Actors的模式,让微服务可以以单线程的代码实现大规模并行处理。实际上,Actors这部分功能的开发人员就是来自于Service Fabric团队,两者的API也基本保持一致。通过这样的模式,也把Actors这种模式引入到了其他运行平台。
同时,Dapr还可以和微软开源的FaaS开发框架Azure Functions进行集成,Dapr开发团队也基于Azure Logic App的边缘运行时版本为微服务应用提供了Workflows的能力。OpenFunction 正是基于 Dapr 提供了一套灵活的 functions framework 机制(其中包含了借鉴 Google functions-framework 处理 HTTP 函数的部分)实现了与各种复杂中间件的对接,并搭载两种运行时——以 Knative serving 为基础的同步函数运行时,和以 KEDA 结合 Dapr 为基础的异步函数运行时 OpenFunctionAsync,以期实现对实际生产中大部分应用场景的覆盖。
4、在在 K8s 的帮助下生产就绪
一个优秀的开发者平台应该被视为一个产品,这包括许多方面,但一个重要的方面是它以高度可用的方式运行。我们有一种架构和运行分布式应用程序的方法哪就是采用 Kubernetes, Dapr的最佳实践是建立在Kubernetes之上,它使用 Kubernetes 控制器和持续协调的概念来运行平台,如果有什么东西坏了(它会),Dapr 将检查并修复状态,也就是你经常听到 Kubernetes 专家说的类似 Operators 和 control plane 的东西。

5、开源和开放治理

选择一个优秀的开发者平台的一个重要特征是开源的,由于开发人员平台将成为您软件交付的重要组成部分,您将希望确保您的投资安全。Dapr 不仅是开源的(当前采用MIT协议,捐献给CNCF之后将会改成Apache 2.0),正在捐献给CNCF,目前正处于尽职调查阶段,它也是公开社区管理的,Dapr于 2020 年 9 月首次转变为开放治理模式,2021年9月成立了STC( Dapr 指导和技术委员会),专注于与更广泛的 Dapr 社区合作,制定指导和技术委员会的章程、职责和愿景,并与成员一起引导以确保供应商中立。具体参见 https://blog.dapr.io/posts/2021/09/20/announcing-daprs-steering-and-technical-committee/

f26b11241b9df1f60ecb3e18cc8e2116.png

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

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

相关文章

java对象头_我的并发编程(二):java对象头以及synchronized升级过程

一、概述研究java对象头的目的是详细分析Java的synchronized锁的升级过程,因为synchronized在锁升级的时候,就是依赖对象头的信息来决定的。本博文针对64位的操作系统来对Java对象头进行详解。二、详细分析1. 用户态与内核态内核态与用户态是操作系统的两…

【转】Beagleboard:BeagleBoneBlack

原文网址:http://elinux.org/Beagleboard:BeagleBoneBlack Did you know that elinux.org has Mailing Lists? Please feel free to register today to discuss the wiki in general, request features, etc. etc.. Thanks!--Wmat (talk) Beagleboard:BeagleBoneBl…

剖析IE浏览器子系统的性能权重

来源于InfoQ: 微软IE开发团队性能主管Jason Weber在一篇博 文中介绍了IE浏览器的各个子系统,并通过实验数据展示了不同网站对浏览器子系统的性能影响和权重,InfoQ中文站对相关内容做了整理,希望对 浏览器开发人员和Web应用开发人员…

每年通过率仅1%的“天才考试”,中国到底应不应该学?

▲ 点击查看说起世界上最顶尖的基础教育,新加坡绝对能占一席之地。香港首富李嘉诚是这么评价新加坡教育的:“新加坡采用的教育体系源于英国传统的教育制度,它的私立、私立教育院校及一流大学和国际教育机构全球卓越。”李嘉诚甚至在长孙还没多…

pm_bout_1/2_on_subway

下午又去了次后沙欲看房子的地铁上看着使用地铁的 指南的视频中的什么1元硬币,纸币找零什么的想到了一些东西。为什么是1,2,5的类型的钱。当然我只到用1,2,5能够组成10-的所有数字。但是这不是最主要的,因为…

C# VS生成后事件命令行

“ 引言部分,总领全篇文章的中心内容。”01—前言Visual Studio中,可以在项目-》属性-》生成事件-》生成后事件命令行(O):中设置项目生成后执行的脚本,从而实现项目文件生产后的自动部署。如下图所示:02—自…

mysql binlog 大数据_后起之秀 | MySQL Binlog增量同步工具go-mysql-transfer实现详解

一、 概述工作需要研究了下阿里开源的MySQL Binlog增量订阅消费组件canal,其功能强大、运行稳定,但是有些方面不是太符合需求,主要有如下三点:需要自己编写客户端来消费canal解析到的数据server-client模式,需要同时部…

如何备份服务器日志到其他服务器_KIWI Syslog日志服务器搭建及配置

认地,kiwi使用UDP 514端口接收日志数据,安装成功后即可接收日志使用命令netstat –ano查看服务器监听状态,如果服务没起来,则重新启动服务Kiwi Syslog Daemon任务:把当天的日志保存在G:event,历史日志保存在…

oncontextmenu事件

用oncontextmenu事件单禁用右键菜单 onconTextmenuwindow.event.returnValuefalse;右键菜单禁用&#xff0c;用这个可以禁止复制。 在<body>中加入属性代码&#xff1a; οncοntextmenu"return false" onselectstart"return false" …

【C++ Primer学习笔记】第2章:变量和基本类型

类型是所有程序的基础。类型告诉我们数据代表什么意思以及可以对数据执行哪些操作。 C中对类型的支持是非常广泛的&#xff1a;语言自身定义了一组基础类型和修改已有类型的方法&#xff0c;还提供了一组特征用于自定义类型。 2.1基本内置类型 wchar_t类型用于扩展字符&#xf…

Android 系统文件夹功能(转)

打开Android文件管理器&#xff0c;里面数十个英文名称命名的文件夹罗列其中&#xff0c;很多功能我们可以从其名字上略有所知&#xff0c;内部大批量的文件却让我们有些一头雾水。这些文件是什么?有什么用?我们能不能删?这些都是我们脑中充满疑问的。今日笔者就将Android手…

Dapr牵手.NET学习笔记:状态管理进阶(二)

为了防止并发对数据修改造成差异&#xff0c;dapr使用了etag标签来作为版本号&#xff0c;对数据修改进行验证。下面是对etag的一个demoappsettings.json中的url配置"StateUrl": "http://localhost:3500/v1.0/state/statestore"在PaymentSystem项目中添加两…

这三位同学的名字绝了!笑得肚子疼......

1 这三位同学的名字绝了&#xff01;▼2 我是一只小海豹我在假装跷跷板▼3 单身狗受到暴击▼4 小宝宝真可怜打针打出了条件反射▼5 每生成一个验证码都有一位程序员......▼6 虽然腿短但是人家跑得快啊▼7 内容引起极度舒适▼你点的每个赞&#xff0c;我都认真当成了喜欢…

python统计出现的中文标点_Python处理中文标点符号大集合

中文文本中可能出现的标点符号来源比较复杂&#xff0c;通过匹配等手段对他们处理的时候需要格外小心&#xff0c;防止遗漏。以下为在下处理中文标点的时候采用的两种方法:中文标点集合比较常见标点有这些&#xff1a;&#xff01;&#xff1f;&#xff61;&#xff02;&#x…

从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)

从hadoop框架与MapReduce模式中谈海量数据处理前言几周前&#xff0c;当我最初听到&#xff0c;以致后来初次接触Hadoop与MapReduce这两个东西&#xff0c;我便稍显兴奋&#xff0c;认为它们非常是神奇&#xff0c;而神奇的东西常能勾起我的兴趣&#xff0c;在看过介绍它们的文…

WPF过渡面板

WPF开发者QQ群&#xff1a; 340500857 | 微信群 -> 进入公众号主页 加入组织欢迎转发、分享、点赞、在看&#xff0c;谢谢~。 前言效果投稿来源于-郑竣僖 QQ&#xff1a;41130958301—效果预览效果预览&#xff08;更多效果请下载源码体验&#xff09;&#xff1a;一、Tra…

UScript中的Pow函数

这些天越来越发现数学的重要和妙趣了&#xff0c; 由于一些地方需要使用指数次幂来实现更好的效果&#xff0c; 想当然地去找pow函数&#xff0c;把Object和Actor翻了个底朝天 。。。 结果可想而知&#xff0c; 也正好&#xff0c;尝试了一把UScript和C的混编&#xff0c;但搜一…

PM与工程师

原文链接&#xff1a;http://firecacada.blog.163.com/blog/static/70743762011117114451722/ 过节前看到一篇文章&#xff0c;讲产品项目就应该由工程师来主导&#xff0c;但国内让PM去驱动项目&#xff0c;搞得乱七八糟&#xff0c;很恼火&#xff0c;怎么可能做出一款好产品…

哪些才是对女朋友的有效关心,来学习一下~

1 这本书真好&#xff0c;在哪里才能买得到呢&#xff1f;2 求求你&#xff0c;不要抢我的小毛虫&#xff01;3 所有的乘客请系好安全带4 小朋友非常可爱了5 字幕组真的尽力了&#xff01;6 学习了7 10月16日&#xff0c;平安南京 根据真实接警经历&#xff0c;发布一则警示案例…

fabric 转账_Fabric 学习笔记-架构初探

本文介绍了Fabric的架构&#xff0c;以及通过一个简单的Demo来熟悉整个交易流程。Hyperledger fabric V1.0的架构如下图所示&#xff1a;application提供各种语言的SDK接口。membership也就是fabric-ca提供成员服务&#xff0c;用来管理身份&#xff0c;提供授权和认证。peer负…