Dapr 源码解析 系列文章汇总

     Dapr背后的架构模式是符合未来架构趋势(多运行时架构)和云原生发展趋势的。知乎 iyacontrol 对 Dapr的意义有一个很好的概括:

  • 对于小公司,甚至没有基础架构和中间件团队的公司,Dapr 提供了开箱即用的基础设施功能,可以让小公司轻松构建弹性,分布式应用。

  • 对于中等单位,具备一定的基础架构能力,在使用Dapr的过程中,可能Dapr并不能完全满足需求,那么也可以在Dapr框架体系下,花费较小的成本进行自定义扩展。

  • 对于大公司,Dapr 提供了一种思路。相信基础架构团队会越来越倾向于通过交付Sidecar的形式来提供基础设施。比如蚂蚁集团就自行开发了- 蚂蚁开源多运行时项目 Layotto 。

 具体参见: https://www.zhihu.com/question/351298264/answer/1737380230。 

    看源码就是 先摸清宏观路数(毕竟有些设计思想之类的东西,大概指明代码用力的方向),然后顺着几个功能点深挖下去,一个功能点一条点,辅之以一定的类图序列图。几条线搞清楚之后,宏观也会逐渐清晰。苍然暮色 写了一个系列的Dapr 源码解析:

Dapr 基本介绍 

    Dapr 是一个可移植的、事件驱动的运行时,使任何开发者都能轻松地建立在云和边缘运行的有弹性、无状态和有状态的应用程序,并拥抱语言和开发者框架的多样性。

Dapr 源码解析 | 项目总览

22b9ff0477e8164d163e106c9a032bd3.png

Dapr 源码解析 | 配置模块

dapr 配置主要分为三部分: 全局配置, 组件配置和运行时配置.全局配置和组件配置是以 yaml 形式定义的, 而且直接使用 k8s crd 类型

Dapr 源码解析 | 组件模块

Components 是 dapr 抽象出来的提供某种特定功能的可插拔组件, 为 dapr 或者 building blocks 所使用。

Dapr 源码解析 | 发布订阅

发布订阅在 dapr 既是一个 component 又是一个 building block. dapr 的 pubsub 构建块可以对外提供一个最少一次送达保证的发布订阅 API, 可以支持多种软件作为 message broker. 使用这个功能我们的服务就需要引入繁杂的 message broker sdk 和管理消息队列连接.

Dapr 源码解析 | 服务间调用

Service Invocation 是 dapr 对外提供的最基础功能, 也就是服务间调用. 另外别的一些功能也会间接使用它.

Dapr 源码解析 | mTLS

mutual authentication TLS 是 dapr 提供的开箱即用的安全功能, 为 dapr sidecar 之间的流量进行加密。

Dapr 源码解析 | 可观测性

Observability(可观测性)一般指 LoggingMetrics 和 Tracing

Dapr 源码解析 | Operator

dapr operator 是 dapr 的几个独立软件之一.operator 是对 k8s 功能的扩展, 可以用来扩展 CRD 做更精细化的事情, 例如: 自动化运维部署高可用数据库, 因为它是用代码解决问题而不是配置.

Dapr 源码解析 | Sidecar Injector

dapr sidecar injector 是 dapr 几个独立软件之一, 功能是在 k8s 环境为用户服务注入 dapr runtime sidecar 容器.

Dapr 源码解析 | Name Resolution

Name resolution 解决的是微服务中的服务发现问题, dapr 中服务的标识符为 app-id , 服务间调用是通过 app-id 来确定目标服务的. 所以就需要 app-id 到真实服务地址的映射. dapr 服务发现其实就是单纯的 gRPC 服务发现, 因为服务间调用是通过 dapr sidecar 转发的, 而 sidecar 之间是通过 gRPC 交流的, 所以最终就变成了 gRPC 服务发现了.

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

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

相关文章

cstring判断包含字符串_Python字符串方法之-解决判断问题

19、endswith()描述:判断字符串是否以指定字符或子字符串结尾。语法:str.endswith("suffix", start, end) 或str[start,end].endswith("suffix") 用于判断字符串中某段字符串是否以指定字符或子字符串结尾。—> bool 返回值为布尔…

Angular变化检测机制

2019独角兽企业重金招聘Python工程师标准>>> 在使用Angular进行开发中,我们常用到Angular中的绑定——模型到视图的输入绑定、视图到模型的输出绑定以及视图与模型的双向绑定。而这些绑定的值之所以能在视图与模型之间保持同步,正是得益于Ang…

nx二次开发c语言,NX二次开发-UFUN API函数编程基础

1.NXOpen C 的函数函数名称的约定NX Open C 共有2类名称约定:一个是标准的NX Open C 的函数名称约定;另一个是以前版本的原有的名称约定。1.标准名称约定【格式】UF__【说明】(1)UF:User Funciton的简写,表示该函数为NX Open C 函数。(2)&…

JMeter压力测试入门教程[图文]

Apache JMeter是Apache组 织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java小服务程序、CGI脚本、Java 对象、数据库, FTP服务器, 等等。…

.NET6之MiniAPI(二十九):UnitTest

MiniAPI的单元测试与asp.net web api的单元测试大体是相同的(毕竟都是asp.net core),只是在小细节上有一些差异,文章中会说到这点。本文测试框架是XUnit,Mock框架是Moq,关于这两个框架和库的学习&#xff0…

vue data数据修改_Vue 超清晰思维导图(7张),详细知识点梳理!

Vue思维导图目录MVC与MVVM的区别Vue基本代码结构Vue指令Vue组件class和style动态绑定computed计算属性EventBusfilter过滤器方法Vue是一套构建用户界面的框架,只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。(Vue有…

界面连接数据库

1、获取本机的SQL Server服务器名 private void Form2_Load(object sender, EventArgs e){listBox1.Items.Clear();SQLDMO.Application SQLServer = new SQLDMO.Application();SQLDMO.NameList strServer = SQLServer.ListAvailableSQLServers();if (strServer.Count > 0){f…

Xamarin效果第二十篇之GIS中加载三维白模

在前面文章中简单玩了玩GIS的基本操作、Mark相关、AR和测距,今天再次分享一下N年前就像玩耍的效果;啥也不说了都在效果里:再来看看手机端的效果:1、关于效果我也是偶然见看到了别人实现:https://blog.csdn.net/arcgis_all/article/details/769991042、关于实现就是在三维场景图…

visa虚拟卡生成器_虚拟卡有哪些功能?赶紧了解一下

现在很多人都会有机会出国,或者是直接在国外生活,他们时不时的会到国内办理一些事情,而这个时候为了确保信用卡在使用的时候安全,有些人就会申请使用虚拟信用卡,这样不但可以解决跨国支付的麻烦,从而确保在…

android编程绘图,Android编程绘图操作之弧形绘制方法示例

本文实例讲述了Android编程绘图操作之弧形绘制方法。分享给大家供大家参考,具体如下:/*** 绘制弧形图案* description:* author ldm* date 2016-4-25 下午4:37:01*/public class ArcsActivity extends Activity {Overrideprotected void onCr…

BeetleX实现MessagePack和Protobuf消息控制器调用websocket服务详解

最近有用户问如何使用BeetleX封装一个基于Protobuf格式的websocket服务并支持控制器调用;其实BeetleX.FastHttpApi是支持Websocket服务和自定义数据格式的,但需要对组件有一定了解的情况才能进行扩展;接下来通过封装一个支持Protobuf和Messag…

vue 获取url地址的参数_2020年 vue常见面试问题总结(干货)!

1.什么是mvvm模式,谈谈你的理解? MVVM - Model View ViewModel,数据,视图,视图模型view 可以通过 事件绑定 的方式影响 model,model 可以通过 数据绑定 的形式影响到view,viewModel是把 model 和…

CSS 定位之绝对与相对

static,relative,absolute,fixed含义 static(静态定位):元素框正常生成。块级元素生成一个矩形框,作为文档流的的一部分,行内元素则会常见一个或多个行框,至于其父元素中。默认值。没有定位,元素出现在正常的流中(忽略…

[第二篇]如何在ASP.Net Core的生产环境中使用OAuth保护swagger ui

在我上篇文章如何在ASP.Net Core的生产环境中保护swagger ui中,我们讨论了如何使用基本身份验证来保护 swagger ui。使用 OAuth 2.0 和 OpenIdConnect 进行保护随着应用程序越来越多地使用 OAuth 和 OpenIdConnect,应用程序很有可能使用 OAuth 和 OpenID…

python opencv 图像切割_【OpenCV+Python】图像的基本操作与算术运算

图像的基本操作在上个教程中,我们介绍了使用鼠标画笔的功能。本次教程,我们将要谈及OpenCV图像处理的基本操作。本次教程的所有操作基本上都和Numpy相关,而不是与OpenCV相关。要使用OpenCV编写更好的优化代码,需要Numpy的丰富知识…

光伏领跑者火热前行 可靠性护航“长跑”

随着第三批光伏领跑者申报标准的出台,在目前普通电站指标有可能缩水的情况下,2017年8-10GW的光伏领跑者项目又将成为各电站投资商争夺的“红海”。光伏领跑者在过去两年时间里为行业带来的变化有目共睹,从模式创新到电价下降,快速…

鸿蒙os系统被推送,鸿蒙来了!华为大规模推送鸿蒙OS系统,造成网站一度瘫痪...

千呼万唤始出来,期盼已久的手机鸿蒙OS系统终于迎来了大规模推送!今年2月份在华为Mate X2折叠屏手机发布会上,华为就曾表示将在4月份开始大规模推送鸿蒙OS系统,4月27日通过测试申请的用户正式接到升级鸿蒙OS系统的通知,…

jps、jinfo、jstat、jstack、jmap、jconsole等命令简介

2019独角兽企业重金招聘Python工程师标准>>> JDK提供了几个很实用的工具,如下: jinfo:观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数,java class path等信息。命令格式&…

读《底层逻辑》

《底层逻辑》本书作者是刘润,他在得到上开设了课程《5 分钟商学院》,我也是在得到上知道的这本书,这本书在豆瓣上的评分不是很高,褒贬不一,不过我看着觉得挺好。看了一些豆瓣的评论,觉得这本书不好有这么几…

2016年:勒索病毒造成损失预估超过10亿美元

根据趋势科技公布的最新报告(PDF),2016年是敲诈勒索软件频发的一年,同比增长752%,预测由Locky、Goldeneye等勒索病毒所造成的损失超过10亿美元。报告中同时指出企业和个人是勒索软件的重灾区,而且勒索病毒还…