嘿,大家好,我是小虎,今天为大家分享的主题是啊 d d s。 首先我们看一下什么是 d d s 啊 啊? dds 的话,它是呃一个分数据分布式服务的一个标准协议,它主要是用来在多种设备和系统之间能够实现数据的分发和实时的一个传输。那 呃常见的一些使用的一些场景的话,主要是一些,呃设备之间需要一些数据交互的一些可靠性和低延迟性,那我们从这个图再去看一下它这些关键的一些特性,再进一步了解 d d s。 呃,首先是这边呢,这边的话是 topic 跟 topic 跟夺命啊这些值,那我们可以看到啊, 就是说他的生产者和消费者之间的话是通过夺命,首先是夺命,夺命的话是划服了一个叫玉,一个区域,在这个玉当中的话在基于主题 topik 来进行。 嗯,通信和交互,也就是我们不同的,呃生产者消费者他是属于同一个夺命和夺一个 topic 的情况下,再加同一个 qs 的时候的话,那他们之间就可以去通信。 这里的话我们其实跟 m q t t 也可以去做一个对比,那如果说呃对 m q t t 不了解的话,可以去看一下这块 m q t t 的协议的话,是在 l o t 领域的话,用的是比较广泛的。嗯, 那我们可以通过在这块进行一个呃发布和订阅,那如果是新的,呃后后加 的一个进程,他其实可以指定多妹和 topic, 然后 ks 就可以加入这个呃呃通信集市里面去了。 那第二个的话就讲一下夺命,夺命的话,呃,其实刚刚已经讲过了,就是只相当于划分的是一个呃一个玉的概念, 嗯,其实这里面就是先一个大大的一个划分,划分完之后的话,我们可以理解成这个玉就是一个呃飞书,首先你要进入到这个飞书,这个呃企业下面 进行之后的话,你们才能内部里面才能加群,加完群之后才可以进行一些呃频道,然后进行频道之后再进行通信, 这是夺夺命。那第二个的话是 idl, idl 怎么去理解呢?那这块的话是可以做一个对比,就是 啊跟 rest for api 里面的 open api 这个呃标准接口来进行一个比较, 那怎么去类比呢?呃,比如说我们不同的啊,生产者和消费者,或者说呃呃呃 pap 和 sab 的一个呃两者之间如何进行交互呢?那如我们有很多不同的进程要进行交互,那在开发这块的话如何去定义接口呢? 那 dds 这块的话是记忆 idl 文件,那通过我们定义 idl 文件的话,进而就是可以定义在交互的一个数据结构资料那些类型 基于这个 idl 的话来生成相对应的代码,那也可以跨圆的。如果说我们定义好 idl 之后的话,我们可以用 c 或者用 person 等来生成对应的一个通讯的一个代码, 那对热色 api 的话,我们通过 oppoapi 我们也可以定义完之后的话,通过前后端进行交互,那啊如果说是选择的框架比较合适的话,那我们可以通过对应的脚本来生成后端和前端的一个对应的一个框架的,在吗? 那第四点的话是服务发现,动态发现,那怎么理解动态发现呢?比如说我这边已经首先 a 跟 b 进行在同一个夺命 topic 和 k s 下进行的一个通信, 那我这个时候有个 cc 直接,哎设定对应的啊,呃夺命 topic 和 ks 如果在同一台设备上的话,他启动这个进程之后的话,他会自动的加入到这个啊 呃呃都加入了对应的这个夺命和 topic 开赛面,然后它呃也会 收到 a 发布的消息,它会自动发入发布,呃发现新加入的一个进程,那这是一个它一个非大非常大的一个特点。那紧接着我们来看一下我们为什么要选择 d d s, 其实这里的话还是要 啊了解一下他的特性,因为我们只有知道他有哪些特性之后,我们才记忆能够记忆场景来进行做出选择。首先我们可以看到他是一个非常轻量化的一个协议和 呃可靠性的,那这个可靠性是怎么来的呢?是他通过有很多的 qs 侧脸这块的话,我不会在这里一一讲解啊。后面会有一个 gds 的一个啊,标准协议的一个标准, 那通过这个标准的话,大家可以看到对应的一个不同的传输一个策略。那第二个的话是呃无 broker 化的一个 pad 和 sub 的模型,那这块的话,其实最好的理理解的话,其实还是通过那个我们在 iot 里面一个强健的一个呃 mkt 协议常用的一个 bruca 是叫 emqs, 那呃常见这种博客的话啊,如果是非 i o 非非 i o i o t 里面的话,我们更还可以常见的就是那个 rapid man q, 呃就是 rapid man q 和呃卡夫卡等, 嗯就可以理解。我们如果生产者和消费者继续需要进行通信的话,我们是需要统一的将呃生生产者将消息发送到 broker, 而消费方要敬业这个 broker 才能,嗯, 拿到这个消息他是都要有一个指定的一个 broker, 那无 broker 画的话怎么理解呢?就是相当于我们弟弟 s 在通讯的时候,我们十个啊,客户单和消费者十个进程启动的时候的话,他是任何一个进程都可以作为一个呃数据的一个呃发起方,那接收方只要去通过相同的夺命 啊 topic 和 ks 的话,就可以接收到这个呃这个消息,那它是一个分布式的,就没有一个严格的中心化 book, 那他们之间通信的时候可以呃通过各多种形象,一个是 t, c p, 还有 u d p 和 h h, 呃 s h m, s h m 的话指的就是呃共享内存 c m memory, 那紧接着的话我们再看一下,它是一个呃数据中心的一个架构,呃设备和应用的话,交互的话就可以通过这个夺命 呃和这个来来来进行这个信啊数据的一个啊交互传输。第四个的话是可以跨供应商相互之间那个操作 传授大量的数据。我们这里可以看到啊,随着啊控制啊,自动驾驶辅助啊和自动驾驶完全自动驾驶的话,带来一个数据增量是非常大的上机 gdp。 而在进程之间去通信的时候,数据量大的时候的话,那这块的话就是呃数据这块的话涉及到大量的一些数据拷贝啊什么之类的,那我们进一步要提高它的实时性,我们要引入的这个啊, i see chrox, i i see christ 的宾尼。 那冰凌这块的话是由博士公司的一个自驾驶部门的加油大脑发明的,它是基于一种零拷贝和共享内存的一个技术来优化进行通信的。 呃。移动中文键,中间键,然后我们可以看到就是说不同的数据传输大小跟延迟的一个关系,这里有一张图,那我们用了运行之后的话,能够实现零拷贝和共享分成,这样的话,我们可以说在系统运行的时候的话,运行的时间已延迟,已经跟传输的数据量是没有关系的了, 这部优化是非常大的。那我们再看一下呃对应的一些场景,他的特性,对应一些场景,你去 ds 可以解决哪些问题?第一个是实时数据传输, dds 可以进行实时的数据传输,那现在已经比较用的比较多的话,就是在工业控制和航空航天机制领域这块,那国外这块是用的比较多的啊 啊。第二个的话就是高可靠性的数据传新传输,那我们上面也介绍到过他的一个 qs, 高 qs 来实现了一个高可靠性的一个策略。那啊啊。 第第三个的话就是分布式通信,那这块的话就可以跨节点和多节点的一个交互数据交互。呃,大规模的数据交互,那这块也提到的话,就是说,呃在大量数据进行交互的话,他可以提高数据的一个呃实质性。 那我们再看一下一个重要应用的一个礼仪啊,就是我们可以看到我们新能源,这呃现在我们中国啊,在新能源, 新能源这块的话就是呃发展的是非常的迅速啊,每年的一个新能源汽车销售量的话增长是非常快的。而而 l 二和 l 二加的辅助驾驶的这一块的一些呃硬件啊,还有这这些 呃也是增长的非常快。那对这块在车端这块的一些呃智能模块在进行交互的时候的话,这块数据会增加的会越来越多,那相比相比而言,我们车端的 的话就会是需要一个通讯中心硬件,那呃对应的一些模块有哪些呢?比如说我们有 gps 定位的一些数据,还有一些呃规划,呃根据根据地图,我们 嗯进行那些路径规划,还有一些车道那些控制或者雷达啊,还有摄像头一些拍摄那些场景进行一些标注,然后再进行那些呃融合,感知融合。另外的话还是 imu 进行一些呃信息的一些进步的一些准确定位。 在这块的话我们的数据增加的话会可以达到呃 g b 以上,那对数据传播中这块的一些实施性要求的话,会要求会越来越高, 那我们选择了,首先我们是要呃应用到 d d s, 那这块儿是有一个呃选择 d d s 的报告,那我们 d d s 就 这块的话,开研这块的话有很多种类型啊,有啊,发色 d d s, 还有 open d d s, 还有 cycle d d s。 那啊这里有个报告我不带大家去看了,大家可以有兴趣可以看一下这篇文章的介绍。那我们呃这这个 cy d d s 在实现一个 呃应用,那在这块的话我们会讲一下他呃解决的哪个一个核心问题啊?那这块的话大家有什么感兴趣的话题,或者说有什么疑问的话可以呃呃,一起多多交流。