手把手教你学Dapr - 1. .Net开发者的大时代

Dapr全称

Distributed Application Runtime,分布式应用运行时

Dapr的口号

简化云原生应用开发,聚焦在应用的核心逻辑,让代码简单、可移植

Dapr的目标

  1. 最佳实践的构建块

  2. 任何语言或框架

  3. 一致性,可移植,开放的API

  4. 采纳标准

  5. 可扩展和可插拔的组件

  6. 与平台无关(本地,云计算,边缘计算等)

  7. 社区驱动,供应商(厂商)中立

638c86029475423e1b28df2b39feed28.png

Dapr的设计思路

这里首先要先理解几个问题,然后再看Dapr如何解决这些问题的

以下资料都有英文原图,中文翻译为个人理解,英文好的小伙伴可以直接看原图。

微服务为什么很难

  1. 开发者要构建自己的运行时处理分布式应用问题

  2. 运行时支持的开发语言有限,且有严格控制的特性(功能)集合

  3. 运行时的可移植性有限,一般只支持特定的基础架构平台

b39faf7116b6107d6ef87c725290c163.png

分布式应用的需求

内容引自 Multi-Runtime Microservices Architecture https://www.infoq.com/articles/multi-runtime-microservice-architecture/

注意:二级内容不与图片对应,把功能组合成场景

  • 生命周期

    • 更快的发布周期

    • 自动化部署

    • 从错误中恢复

    • 自动化伸缩

  • 网络

    • 服务发现

    • 跟踪与遥测(可观测性)

    • 信息交换:点对点、发布/订阅,智能路由

  • 状态

    • 服务编排、工作流

    • 分布式单例(Actor)

    • 临时调度(Cron)

    • 幂等性

    • 有状态错误恢复

    • 缓存

  • 绑定

    • 转换协议

    • 支持不同的消息交换模式:轮询、事件驱动、请求/应答等

    • 转换消息格式

    • 执行自定义错误恢复过程

    • 安全机制

      4d267309f4707d57f8265efa2b698909.png

传统中间件和云原生对比

传统中间件以各种SDK的方式提供能力,而云原生平台则通过各种外围的Runtime,目前来看比较有趣的是,大家不约而同的选择了Sidecar

bf8e0c0e2a6ee1ac06ddd28733213847.png

多运行时微服务边界

  • K8s和容器在多语言应用程序的生命周期管理方面取得了巨大的飞跃,并为未来的创新奠定了基础

  • Service Mesh在K8s上得到了改进,具有先进的网络功能,并开始深入应用程序

  • Knative通过快速伸缩来关注无服务器的工作负载,解决了服务编排和事件驱动的绑定需求

  • Dapr以K8s、Knative和Service Mesh的思想为基础,深入研究应用程序运行时,处理有状态的工作负载、绑定和集成需求,充当现代分布式中间件

    主要分为3个部分,K8s、机甲运行时(网关、Dapr + Knative)、业务逻辑。

    Dapr的出现可以让开发者更专注于业务逻辑,而业务逻辑则作为服务运行时。

9f83dd61cc62b89c96c04f55ef72d2f4.png

多运行时的好处

业务逻辑和不断增加的分布式系统关注点之间的松耦合。

业务逻辑经常变化,取决于业务优先级。

而分布式原语则由软件供应商提供,作为库、容器、服务来使用。这些代码会根据供应商优先级、发布周期、安全补丁、开源治理规则等而变化。

他们互相看不到对方,也无法控制对方。

5232f7650f4f23c008eaeca9656bbabe.png

Dapr的优势:Any language, anywhere

与语言无关,与平台无关

d7f81f463df77daacd277812eb820b1f.png

分布式应用运行时

官方解释

帮助开发人员构建事件驱动的、弹性的分布式应用程序。无论是在本地、云中还是在边缘设备上,都可以帮助你解决构建微服务所带来的挑战,并保持代码与平台无关。

可以看到Dapr更具象化了

  1. 与应用程序通过HTTP和gRPC通信

  2. 内部有一些构建块

  3. 运行在云上

    7607ecd66772f32c72e8d2af36b4484d.png

Dapr与服务网格

  • 开发者更聚焦在代码层面,通过SDK(图中没有标注)与dapr的构建块通信,面向localhost编程

  • 运维更关注安全性、可观测性、健壮性等问题上。而流量管控的部分,dapr(可能是暂时的)没有。

68e70a4ff491da793817f9ed3ae99841.png

Sidecar的世界

  1. 应用于Sidecar通信是通过Dapr API(已经被封装成不同开发语言的SDK),这个过程中通过OpenTelemetry支持了可观测性(即跟踪、日志、指标)

  2. 应用之间通过Sidecar通信,支持mTLS,这个指服务调用(即Service Invocation)

  3. Sidecar 之间通过gRPC(图片中没有显示),Bindings,Pub/Sub都可以通信

  4. 可观测性无处不在,通过Prometheus、Zipkin、Fluentd等,可视化OpenTelemetry中的部分数据

但目前据我所知没有一个可以统一接管完整OpenTelemetry的,如果有的话欢迎纠错。

  1. 状态管理也是由Sidecar代理的

dc292c0869d07816c30eb31a5470b8cb.png

对于.Net的意义

  • .Net SDK是微软亲儿子,让.Net有幸和Java一起站在了同一起跑线

  • 分布式应用运行时给.Net的新架构带来了新的思路和机遇

  • 加速.Net技术栈的更新迭代

  • 共享开源生态

我们正在行动,新的框架、新的生态

我们的目标是自由的易用的可塑性强的功能丰富的健壮的

所以我们借鉴Building blocks的设计理念,正在做一个新的框架MASA Framework,它有哪些特点呢?

  • 原生支持Dapr,且允许将Dapr替换成传统通信方式

  • 架构不限,单体应用、SOA、微服务都支持

  • 支持.Net原生框架,降低学习负担,除特定领域必须引入的概念,坚持不造新轮子

  • 丰富的生态支持,除了框架以外还有组件库、权限中心、配置中心、故障排查中心、报警中心等一系列产品

  • 核心代码库的单元测试覆盖率90%+

  • 开源、免费、社区驱动

  • 还有什么?我们在等你,一起来讨论

经过几个月的生产项目实践,已完成POC,目前正在把之前的积累重构到新的开源项目中

目前源码已开始同步到Github(文档站点在规划中,会慢慢完善起来):

MASA.BuildingBlocks

MASA.Contrib

MASA.Utils

MASA.EShop

BlazorComponent

MASA.Blazor

QQ群:7424099

微信群:加技术运营微信(MasaStackTechOps),备注来意,邀请进群

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

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

相关文章

Andorid之网络通信框架Volley使用和总结

Volley Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架。在 Google I/O 2013 大会上发布。 从名字由来和配图中无数急促的火箭可以看出 Volley 的特点:特别适合数据量小,通信频繁的网络操作

如何进行服务器选购[转]

各大服务器厂商为了更突出产品热点:开始在服务、方案方面进行花样翻新、包装,但万变不离其中,不管厂商们怎么样包装,只要我们抓住重点分析,希望下面的文章能够为您提供一些参考与帮助:详情点击:…

闲鱼有微信小程序吗_微信小程序商品展示页面(仿咸鱼)

项目中做了一个商品发布展示的页面,记录下来解决问题:想在setData中更改数组具体下标中的某个值let one "lowMoney[" 0 "].money";this.setData({[one]: (product.currentPrice * 0.1).toFixed(2), //1折})快去发布商品吧~~~已下…

objective-c中的static

在方法之外定义的变量不仅是全局变量,还是外部变量.但是很多场合,我们只需要定义为全局变量,并不是外部变量.也就是说希望定义的全局变量只在特定文件中是全局的,这个变量也只有在特定的类中的方法能访问,再也没有其他方法需要访问这个变量了. 这就引出了static. 被static修饰过…

电子计算机制作探测,如何自己制作一个简易的金属探测器

这是一个金属探测电路,它可以隔着地毯探测出地毯下的硬币或金属片。这个小装置很适合动手自制。一、元器件的准备电路中的NPN型三极管型号为9014,三极管VT1的放大倍数不要太大,这样可以提高电路的灵敏度。VD1-VD2为1N4148。电阻均为1/8W。金属…

“对不起,我们只招父母毕业于名牌院校的孩子”:最可怕的,是你还以为学历不重要...

全世界只有3.14 % 的人关注了爆炸吧知识1 近日,有一条新闻引发网友热议。成都某小学入学面试,要求家长除了带照片和身份证件之外,还要带“父母学历证书原件及复印件”。网上有种说法,该小学筛选的标准是父母毕业于211院校。后来眼…

.NET 6 对 StackOverflow 的优化

.NET 6 对 StackOverflow 的优化Intro去年写了一系列的傻逼代码, 其中有一篇 写了多年代码,你会 StackOverflow 吗,昨天一不小心又写了一个 StackOverflow 代码。。然后想把新的代码加到原来 StackOverflow 的示例中,把原来的示例项目改成了 …

【原】python中文文本挖掘资料集合

这些网址是我在学习python中文文本挖掘时觉得比较好的网站,记录一下,后期也会不定期添加:1.http://www.52nlp.cn/python-%E7%BD%91%E9%A1%B5%E7%88%AC%E8%99%AB-%E6%96%87%E6%9C%AC%E5%A4%84%E7%90%86-%E7%A7%91%E5%AD%A6%E8%AE%A1%E7%AE%97-…

Android之从网络上获取图片的两种方式讲解:thread+handle和AsyncTask方式

从网络上获取图片是一个比较耗时的操作,放在主线程会导致阻塞主线程,响应超时,所以我们不能把它放在主线程里操作,必须放在一个子线程里,我打算采用两种方式去实现。1、采用thread去获取图片,获取到后通过handle把消息发送到与主线程绑定的消息队列中(也就是主线程的loo…

freeware

http://www.nirsoft.net/utils/iconsext.html转载于:https://www.cnblogs.com/androidme/archive/2013/03/13/2957509.html

卸载wrapt_[python] 安装TensorFlow问题 解决Cannot uninstall 'wrapt'. It is a distutils installed project...

cmd安装 pip install tensorflow1.遇到了ERROR: Cannot uninstall wrapt. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.办法1:输入 pip install -U --ig…

推荐16款非常有创意的婚礼请贴

为什么80%的码农都做不了架构师?>>> 日期:2012-4-5 来源:GBin1.com 婚约是标志着你和你的伴侣很快就要有新的开始了,一起开始那段新的历程!婚礼是整个人生旅途中的一个重要里程碑,在婚礼的邀请…

三年磨一剑,五次被拒稿,交大博士坚持稿件申诉,终发表学科顶刊

全世界只有3.14 % 的人关注了爆炸吧知识本文来源:募格学术三年磨一剑,经历五轮审稿被拒,他坚持不懈,最终申诉成功发表物理顶刊;厚积薄发、精益求精,他潜心科研,2年内发表6篇高水平论文&#xff…

Android之面试题精选,自己收藏下

1.android dvm 的进程和Linux的进程,应用程序的进程是否为同一个概念: 答:dvm是dalivk虚拟机。每一个android应用程序都在自己的进程中运行,都拥有一个dalivk虚拟机实例。而每一个dvm都是在linux的一个进程。所以说可以认为是同一…

Java内部类详解(转)

说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲&…

红旗河最早设计计算机的目的,论红旗河的利弊及其替代方案

最近网上有一条人工河很吸人眼球,它就是我国许多专家们提议的"藏水入疆"的西线调水工程——红旗河,其初衷是好的,想将丰沛的西藏雪化水及降水引入干旱的西北地区滋润出良田来改善中华民族的生存环境,但我认为该工程将是…

.NET Conf 2021 正在进行中,带你看一看微软带来了什么内容

今年最大的.NET活动正在进行, 可以通过Channel9 https://channel9.msdn.com/Events/dotnetConf/2021 看具体的Session 。微软和社区一直在努力统一.NET技术栈。从Visual Studio 到 SQL 和 Azure ,所有功能聚集一堂,让您在桌面、网络、移动和跨平台开发梦…

2013-3-14 生活日记

下午 做java案例和算法设计 5:00—6:00 健身吃饭 6:30 回图书馆做数据挖掘作业 10:30回宿舍 转载于:https://www.cnblogs.com/sunrunzhi/archive/2013/03/14/2959421.html

C# js调用winform方法,C# JS与winform通信

关键组件:System.windows.Forms.WebBroswer 关键声明:类前声明 namespace gdi___ {[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name "FullTrust")][System.Runtime.InteropServices.ComVisibleAtt…

下班忘打卡了什么后果_工厂园区安装人脸识别门禁系统有什么好处?

通常情况下,工厂园区的人员流动都是比较频繁且巨大的。厂区的人员不断的进进出出,主要集中在上下班的时间段里面。对于工厂园区的管理人员来说,怎样管理好人员的进出安全与快捷高效通行,与此同时完成上下班的考勤尤其重要。当前的…