手把手教你学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,一经查实,立即删除!

相关文章

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

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

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

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

.NET 6 对 StackOverflow 的优化

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

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

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

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

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

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

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

Java内部类详解(转)

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

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

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

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…

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

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

史上最难逻辑题!据说99.9%的人都做不出来……

全世界只有3.14 % 的人关注了爆炸吧知识非常「逻辑」撩人于无形普林斯顿大学博士生 Raymond Smullyan 是一位非常厉害逻辑高手。在Smullyan与他非常迷恋的女音乐家的第一次约会上,他用了一招意想不到“逻辑”方法,撩她于无形。他说道:“我们来…

手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序

注意:文章中提到的命令行工具即是Windows Terminal/PowerShell/cmd其中的一个,推荐使用Windows Terminal运行命令行工具的时候建议以管理员身份,避免踩坑为了保证操作顺畅,建议使用PowerShell先执行一下set-ExecutionPolicy Remot…

[转]了解ASP.NET MVC几种ActionResult的本质:EmptyResult ContentResult

本文转自:http://www.cnblogs.com/artech/archive/2012/08/13/action-result-01.html 定义在Controller中的Action方法大都返回一个ActionResult对象。ActionResult是对Action执行结果的封装,用于最终对请求进行响应。ASP.NET MVC提供了一系列的ActionRe…

华为nova6计算机在哪,华为nova6开发者选项在哪

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。打开华为nova6开发者选项的步骤是:1、首先进入手机桌面,点击设置。2、点击关于手机。3、连续点击版本号7次,输入锁屏密码,点击返回。4…

他是发明声呐的物理天才,被妻子家暴后出轨守寡的师母,爱因斯坦却公开支持.........

全世界只有3.14 % 的人关注了爆炸吧知识情不知所起一往而深1911年11月4日,巴黎新闻报的头版头条标题是《爱情故事:居里夫人与朗之万教授》。报纸一出,顷刻售罄;巴黎上下,满城“风流”。#寡妇科学家“乱伦”相差半旬已婚…

如何在 .NET Core 中获取 CPU 使用率

这篇文章我们分享一种如何在 .NETCore 中获取 CPU使用率的方法, 它所报告的这个值和 任务管理器 中报告的 CPU 使用值 差不多是一致的。在 .NET Framework 中,很多人会用 PerformanceCounter 类做这件事情,参考如下代码:public class Program…

uml 类图聚合与组合

聚合 聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享&#xf…

Android之ViewPager使用(用美女做的背景,给你疲惫的眼睛视觉冲击)

ViewPager的使用 我们先爆照,来点视觉冲击,其它的ViewPager弱爆了 照片看完了,接来下我们就来实现,just do it 第一步 你的项目需要有android-support-v4.jar的包,你懂的,有了才会支持ViewPager 第二步 看下项目的结构图片

深入探讨用位掩码代替分支(8):SSE指令集速度测试

在上一篇测试了MMX指令集,这次我们来测试SSE指令集。说的更精确一点,是测试SSE2指令集。  本篇致力于解决以下问题——1.SSE/SSE2指令集是什么?2.如何阅读Intel/AMD的手册?3.如何运用SSE指令集?如何将MMX代码升级为S…

mysql字段简索引_MySQL优化看这一篇就够了

本文概要概述为什么要优化系统的吞吐量瓶颈往往出现在数据库的访问速度上随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢数据是存放在磁盘上的,读写速度无法和内存相比如何优化设计数据库时:数据库表、字段的…