SOME/IP SD 协议介绍(四)服务发现通信行为

服务发现通信行为

启动行为

服务发现将根据服务实例处于以下三个阶段之一:
• 初始等待阶段
• 重复阶段
• 主要阶段

一旦系统启动并且用于服务实例的接口连接已建立,服务发现将进入该服务实例的初始等待阶段。

在进入初始等待阶段并在发送第一条服务实例的消息之前,服务发现实现应根据初始延迟(INITIAL_DELAY)进行等待。

初始延迟(INITIAL_DELAY)应定义为最小延迟和最大延迟。

等待时间应通过在最小延迟和最大延迟之间选择一个随机值来确定。

为了将不同类型的多个条目合并为较少的消息数,服务发现应使用相同的随机值。

在发送第一条消息之后,进入该服务实例/这些服务实例的重复阶段。

服务发现实现应根据 REPETITIONS_BASE_DELAY 在重复阶段进行等待。

在重复阶段发送的消息之间的延迟会加倍。

在重复阶段期间,服务发现应仅发送 REPETITIONS_MAX 个数据包。

如果 REPETITIONS_MAX 设置为0,则应跳过重复阶段,并在初始等待阶段后进入服务实例的主要阶段。

在重复阶段之后,将进入服务实例的主要阶段。

在重复阶段,如果配置了 CYCLIC_OFFER_DELAY,则应周期性地发送Offer Messages和Publish Messages。

在进入主要阶段后,等待1*CYCLIC_OFFER_DELAY时间后再发送第一条消息。

在发送特定服务实例的消息后,服务发现会在发送下一条服务实例的消息之前等待1*CYCLIC_OFFER_DELAY时间。

对于请求/订阅,应使用参数CYCLIC_REQUEST_DELAY实现与Offer相同的周期行为,而不是CYCLIC_OFFER_DELAY。

示例:

初始等待阶段:

• 等待范围为(INITIAL_DELAY_MIN, _MAX)的随机延迟

• 发送消息

重复阶段 (REPETITIONS_BASE_DELAY=100ms, REPETITIONS_MAX=2):

• 等待 2^0*100ms

• 发送消息

• 等待 2^1*100ms

• 发送消息

• 等待 2^2*200ms

主要阶段 (只要消息处于活动状态且定义了CYCLIC_OFFER_DELAY):

• 发送消息

• 等待 CYCLIC_OFFER_DELAY

服务器响应行为

服务发现应该延迟多播/广播应答,以响应对于查找服务条目和查找事件组条目的请求,以及对于请求服务条目和订阅事件组条目的多播/广播应答。延迟的时间由REQUEST_RESPONSE_DELAY定义。

如果通过单播消息回答单播消息,则不应用REQUEST_RESPONSE_DELAY。

延迟仅适用于Instance ID设置为ANY(0xFFFF)的查找服务和查找事件组消息。

Instance ID非0xFFFF的查找服务和查找事件组消息应立即回答,无需延迟。

REQUEST_RESPONSE_DELAY应指定最小值和最大值。

实际延迟时间应在REQUEST_RESPONSE_DELAY的最小值和最大值之间随机选择。

如果上次提供的服务是在发送上次消息时距离1/2 CYCLIC_OFFER_DELAY之内(对于请求/订阅则是1/2 CYCLIC_REQUEST_DELAY之内),则接收到Unicast标志设置为1的查找消息应以单播响应方式回答。

如果上次提供的服务是在1/2 CYCLIC_OFFER_DELAY或更长时间之前发送的(对于请求/订阅是1/2 CYCLIC_REQUEST_DELAY或更长时间之前),则接收到Unicast标志设置为1的查找消息应以多播响应方式回答。

接收到Unicast标志设置为0(多播)的查找消息应以多播响应方式回答。

状态机

在本节中,将展示客户端和服务器的状态机。

图片

图片

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

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

相关文章

VScode+PlatformIO 物联网Iot开发平台环境搭建

1.vscode (1)安装platformIO插件 (2)新建项目或导入已有的arduino项目 Name:需要填写你项目的名称; Board:点开是一个下拉框,但是可以输入你想要的开发板,这里选择&quo…

你所不知道的关于库函数和系统调用的那些事

系统调用和库函数的区别 相信大家在面试或者刷面试题的时候经常能看到这样的问题,“简述一下系统调用和库函数的区别”。 系统调用是操作系统提供给用户的接口,能让用户空间的程序有入口访问内核。而库函数数一组标准函数,比如复合 POSIX 或…

90.网游逆向分析与插件开发-游戏窗口化助手-项目需求与需求拆解

内容参考于:易道云信息技术研究院VIP课 上一个内容:实现物品使用策略的功能-CSDN博客 项目需求: 在游戏窗口化时,可以在游戏之外弹出一个窗口,可以隐藏或者显示游戏窗口,显示游戏人物的基本状态&#xff…

LeetCode--代码详解 2.两数相加

2.两数相加 题目 难度:中等 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数…

【JavaScript + CSS】随机生成十六进制颜色

效果图 实现 <template><div class"year_area"><div class"year_list"><el-row :span"24"><div :class"showAll"><el-col :span"5" v-for"(item, index) in defaulList" :key&…

电动汽车充放电V2G模型(matlab代码)

目录 1 主要内容 1.1 模型背景 1.2 目标函数 1.3 约束条件 2 部分代码 3 效果图 4 下载链接 1 主要内容 本程序主要建立电动汽车充放电V2G模型&#xff0c;采用粒子群算法&#xff0c;在保证电动汽车用户出行需求的前提下&#xff0c;为了使工作区域电动汽车尽可能多的消…

迁移学习实现图片分类任务

导入工具包 import time import osimport numpy as np from tqdm import tqdmimport torch import torchvision import torch.nn as nn import torch.nn.functional as Fimport matplotlib.pyplot as plt %matplotlib inline# 忽略烦人的红色提示 import warnings warnings.fi…

okhttp 的 拦截器

拦截器有很多作用&#xff0c;实现就是责任链模式&#xff0c;细节&#xff0c;等我有时间补上。 后面有时间更新一下。 OkHttp最核心的工作是在 getResponseWithInterceptorChain() 中进行&#xff0c;在进入这个方法分析之前&#xff0c;我们先来了 解什么是责任链模式&…

Java split 分割字符串避坑

使用split进行字符串分割时需要注意2点 1、特殊字符作为分隔符时需要使用\\进行转义(如\\ -> \\\\; | -> \\| ) 特殊字符 .$|()[{^?*\\ 例如对"|"分隔 未转义 String str "01|02|03"; String[] strArr str.split("|");System.out.…

点击按钮打开自定义iframe弹窗

1、效果 点击按钮打开弹窗&#xff1a; 打开弹窗后&#xff1a; 2、代码 <!DOCTYPE html> <html><head><title>iframe弹窗</title><style>/* 使用媒体查询来实现响应式设计 */media (min-width: 768px) {.popup {width: 80%; /* 设置…

【c/python】GtkBox

一、GtkBox及C语言示例 GtkBox是一个容器部件&#xff0c;用于在GTK&#xff08;GIMP Toolkit&#xff09;应用程序中水平或垂直地排列多个子部件。以下是一个简单的例子&#xff0c;展示了如何在一个基本的GTK应用程序中使用GtkBox来垂直排列两个按钮&#xff1a; 首先&#…

用Python Tkinter打造的精彩连连看小游戏【附源码】

文章目录 连连看小游戏&#xff1a;用Python Tkinter打造的精彩游戏体验游戏简介技术背景MainWindow类:职责:方法:Point类: 主执行部分:完整代码&#xff1a;总结&#xff1a; 连连看小游戏&#xff1a;用Python Tkinter打造的精彩游戏体验 在丰富多彩的游戏世界中&#xff0c…

左旋字符串的三种方法,并判断一个字符串是否为另外一个字符串旋转之后的字符串。(strcpy,strncat,strcmp,strstr函数的介绍)

一. 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 通过分析&#xff0c;可以知道实际的旋转次数&#xff0c;其实是k%&#xff08;字符串长度&#xff09;。假设一个字…

西瓜书学习笔记——流形学习(公式推导+举例应用)

文章目录 等度量映射&#xff08;仅保留点与其邻近点的距离&#xff09;算法介绍实验分析 局部线性嵌入&#xff08;不仅保留点与其邻近点的距离还要保留邻近关系&#xff09;算法介绍实验分析 等度量映射&#xff08;仅保留点与其邻近点的距离&#xff09; 算法介绍 等度量映…

树莓派5一键安装C++版本OpenCV

安装环境 本人当前的安装环境&#xff1a; 树莓派5Raspberry Pi os (64-bit) Debian12 Bookworm 镜像下载地址 我这里是将镜像安装好后直接安装opencv&#xff0c;如果不是刚安装好的镜像需要注意是否有openCV的python之类的安装过&#xff0c;不然可能出现编译错误 一、扩展内…

SpringBoot中数据库的连接及Mybatis的配置和使用

目录 1 在pom.xml中引入相关依赖 2 对数据库进行配置 2.1 配置application.yml 2.2 idea连接数据库 (3.2.1有用到) 3 Mybatis的使用 3.1 测试文件的引入 3.2 使用 3.2.1 使用注解(有小技巧(✪ω✪)) 3.2.2 使用动态sql 1 在pom.xml中引入相关依赖 <dependencies&g…

海外多语言盲盒开发:打破语言障碍,连接全球消费者

随着全球化的加速和互联网的普及&#xff0c;语言障碍成为了影响跨国交流和商业活动的重要因素。为了满足跨国市场的需求&#xff0c;海外多语言盲盒开发成为了一个新兴的领域。本文将探讨海外多语言盲盒开发的意义、现状和未来发展。 一、海外多语言盲盒开发的意义 在全球化…

RedHat8.4安装邮件服务器

一、配置发件服务器 1.1 根据现场IP&#xff0c;配置主机名 vim /etc/hosts 192.168.8.120 mail.test.com 将主机名更改为邮件服务器域名mail.test.com 1.2 关闭防火墙&#xff0c;禁止开机启动 systemctl stop firewalld systemctl disable firewalld 1.3 关闭selinux v…

基于springboot就业信息管理系统源码和论文

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;就业信息管理系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&#xff0c;而…

InnoDB 锁系统(小白入门)

1995年 &#xff0c;MySQL 1.0发布&#xff0c;仅供内部使用&#xff01; 开发多用户、数据库驱动的应用时&#xff0c;最大的一个难点是&#xff1a;一方面要最大程度地利用数据库的并发访问&#xff0c;另一方面还要确保每个用户能以一致性的方式读取和修改数据。 MVCC 并发…