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

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

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

1、开发者友好的API

首先要正确的是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.rabbitmq
version: v1
metadata:
- name: queueName
value: queue1
- name: host
value: amqp://admin:123456@192.168.43.101:5672
- name: durable
value: true
- name: deleteWhenUnused
value: false
- name: ttlInSeconds
value: 60
- name: prefetchCount
value: 0
- name: exclusive
value: false
- name: maxPriority
value: 5
对于 Kubernetes 开发人员来说,这很简单。这还有一个额外的好处,即我们可以无缝地融入庞大的 Kubernetes 工具生态系统。 特别是在当前流行的 GitOps ,而且在非 Kubernetes 开发人员也可以使用的。
2、 强大而灵活的组合
Dapr 每个标准的 API 背后的实现可能相当复杂,可能涉及设置正确的云提供商资源,如权限、网络、VPC 和数据库实例等等。 Dapr中的每个构建块都有来自云提供商的托管资源,Dapr 已经包括了AWS、Azure、GCP和阿里云的支持,并且社区正在增加各类组件的支持。
这些微服务基本构建块为开发人员提供跨平台跨语言的API实现。开发者可以专注于她请求的服务的属性,这些组合还可以与遗留或本地服务一起使用,这对于处于某种转型路径上的任何团队都至关重要。
3、在在 K8s 的帮助下生产就绪
一个优秀的开发者平台应该被视为一个产品,这包括许多方面,但一个重要的方面是它以高度可用的方式运行。我们有一种架构和运行分布式应用程序的方法哪就是采用 Kubernetes, Dapr的最佳实践是建立在Kubernetes之上,它使用 Kubernetes 控制器和持续协调的概念来运行平台,如果有什么东西坏了(它会),Dapr 将检查并修复状态,也就是你经常听到 Kubernetes 专家说的类似 Operators 和 control plane 的东西。

4、开源和开放治理

选择一个优秀的开发者平台的一个重要特征是开源的,由于开发人员平台将成为您软件交付的重要组成部分,您将希望确保您的投资安全。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/

为什么 Dapr 如此令人兴奋的更多相关文章

  1. Swift 3.0 令人兴奋,但Objective-C也有小改进--Objective-C的类属性

    由于Swift 3.0 出了太多令人兴奋的新特性,人们很容易忽略 Objective-C中的小改动.或许你会觉得苹果提及Objective-C 很可能是为了提高和Swift互操作性(译者注:互操作性主 ...

  2. 单体应用 适合采用 dapr 构建吗?

    缘起今天在微信群里有同学问 "纯.net 项目,有必要上dapr吗?" 当时不假思索的说不是微服务没必要,其他群友也说没必要.下午细想了一下,觉得这个和微服务没有关系,如果我的应用 ...

  3. 【IOS开发笔记02】学生管理系统

    端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...

  4. webpack+react+antd 单页面应用实例

    React框架已经火了好长一段时间了,再不学就out了! 对React还没有了解的同学可以看看我之前的一篇文章,可以快速简单的认识一下React.React入门最好的实例-TodoList 自己从开始 ...

  5. 精通Web Analytics 2.0 (9) 第七章:失败更快:爆发测试与实验的能量

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第七章:失败更快:爆发测试与实验的能量 欢迎来到实验和测试这个棒极了的世界! 如果Web拥有一个超越所有其他渠道的巨大优势,它就 ...

  6. 【转载】在IT界取得成功应该知道的10件事

     在IT界取得成功应该知道的10件事 2011-08-11 13:31:30 分类: 项目管理 导读:前面大多数文章都是Jack Wallen写的,这是他的新作,看来要成为NB程序员还要不停的自我总结 ...

  7. 【Apache RocketMQ】RocketMQ捐赠给Apache那些鲜为人知的故事-转自阿里中间件

    序言 今年的双十一对阿里巴巴中间件消息团队来说,注定是个不平凡的日子.在这一天,稳定性小组重点攻克的低延迟存储解决方案成功地经受住了大考.整个大促期间,99.996%的延迟落在了10ms以内,极个别由 ...

  8. OpenCASCADE Coordinate Transforms

    OpenCASCADE Coordinate Transforms eryar@163.com Abstract. The purpose of the OpenGL graphics process ...

  9. 2016 Web开发资源工具大搜罗

    来源于:https://zhuanlan.zhihu.com/p/22730771 作者:余博伦链接:https://zhuanlan.zhihu.com/p/22730771来源:知乎著作权归作者所 ...

随机推荐

  1. 基于 Mysql 实现一个简易版搜索引擎

    前言 前段时间,因为项目需求,需要根据关键词搜索聊天记录,这不就是一个搜索引擎的功能吗? 于是我第一时间想到的就是 ElasticSearch 分布式搜索引擎,但是由于一些原因,公司的服务器资源比较紧 ...

  2. java8时间类API安全问题(赠送新的时间工具类哟)

    LocalDateTime等新出的日期类全是final修饰的类,不能被继承,且对应的日期变量都是final修饰的,也就是不可变类.赋值一次后就不可变,不存在多线程数据问题. simpleDateFor ...

  3. Windows-MacOSX-Ubuntu·不同平台文件互传文件共享

    时间:2018-11-23 整理:byzqy 标题:Mac下的virtual box 安装的Ubuntu虚拟机互传文件问题 地址:https://blog.csdn.net/qq_20044689/a ...

  4. 四种cmd打开方式

    四种cmd打开方式: 开始+系统+命令提示符: Win+R 输入cmd回车(推荐使用): 按住shift键加右键,点击打开PowerShell窗口: 资源管理器的地址栏前加入cmd+空格

  5. 七、Abp vNext 基础篇丨文章聚合功能下

    介绍 不好意思这篇文章应该早点更新的,这几天在忙CICD的东西没顾得上,等后面整好了CICD我也发2篇文章讲讲,咱们进入正题,这一章来补全剩下的 2个接口和将文章聚合进行完善. 开工 上一章大部分业务 ...

  6. 手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 设备

    作者 连泓乔,华南理工计算机科学与技术大三在读,主要研究容器领域,Kubernetes.容器等云原生技术爱好者,SuperEdge 优秀贡献者. 王冬,腾讯云研发工程师,专注于 Kubernetes. ...

  7. Sentry Web 性能监控 - Web Vitals

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  8. WebDriverAgent重签名爬坑记

    接上一篇博文,已经配置好了Xcode环境,那接下来要完成的就是重签名WebDriverAgent.在讲重签名之前,我们还是先来了解下WebDriverAgent,熟悉的朋友,可以直接跳过. WebDr ...

  9. [第七篇]——Docker Hello World之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker Hello World Docker 允许你在容器内运行应用程序, 使用  docker run 命令来在容器内运行一个应用程序. 输出Hello world xxx@xxx:~$ do ...

  10. 关联数组VS索引数组

    关联数组和常规说的数组类似,它包含标量抄数据,可用索引值来单独选择这些数据,和常规数组不同的是, 关联数组的索引值不是非负的整数而是任意的标量袭.这些标量称为百Keys,可以在以后用于检索数组中的数值 ...