当前位置: 首页 > news >正文

服务发现和代理实例的自动更新

☞ 返回总目录

1.服务发现的两种方式

  • StartFindService 方法

    • 这是一个在后台启动的连续 “FindService” 活动,当服务实例的可用性发生变化时,会通过回调通知调用者。

    • 它返回一个FindServiceHandle,可通过调用StopFindService来停止正在进行的监视服务实例可用性的后台活动。

    • 其第一个参数是一个用户提供的处理函数(具有特定签名std::function<void(ServiceHandleContainer<T>, FindServiceHandle)>),每当匹配的服务实例可用性改变时,就会调用该处理程序,并提供更新后的服务实例句柄列表。

  • FindService 方法

    • 这是一次性调用,使用实例标识符的不同有两种重载方式(使用 ara::com::InstanceIdentifier 或 ara::core::InstanceSpecifier)。

    • 它为匹配的服务实例返回一个句柄容器,如果当前没有匹配的服务实例,容器可能为空。

2.Auto Update Proxy instance 相关问题

  • 服务启停后的重用问题

    • 当服务实例停止运行后又重新运行时,ara::com的设计要求从绑定实现中解决服务消费者端代理实例的重用问题。

    • 例如在服务消费者应用程序从 FindService 返回的句柄实例化服务代理实例后,在服务实例关闭再出现的过程中,服务代理实例的通信管理会被通知并静默更新(如在 T3 阶段传输层部分颜色从蓝色更改为玫瑰色),使得服务方法调用在服务实例再次可用时能够成功(T4 阶段)。

  • 对开发者的好处

    • 这种设计使客户端应用程序的实现者无需通过 GetSubscriptionState () 对事件进行轮询(仅在服务实例已关闭时才需调用)、无需重新调用 FindService 获取新句柄、无需重新注册FindServiceHandler(回调)以及重新创建代理实例和重新进行事件订阅调用等操作。

  • 代码示例说明

    • 在给定的代码片段中,radarServiceAvailabilityHandler函数展示了在服务实例可用性变化的处理函数中,与现有 Proxy 实例进行交互的情况。当服务实例再次启动时,对代理实例的调用(如myRadarProxy->Calibrate("test"))不应导致服务实例不可达的异常,因为代理实例应该已经自动更新。

3.StartFindService方法的大致实现步骤:

3.1. 启动服务查找后台活动

  • 初始化操作:当调用 StartFindService() 方法时,首先在后台开启一个持续的服务查找进程,这个进程负责不断监测符合条件的服务实例的可用性。

  • 参数接收:接收用户提供的处理函数(具有std::function<void(ServiceHandleContainer<T>, FindServiceHandle)>签名)作为第一个特定参数,同时进行其他必要参数的初始化。

3.1.1 监测服务实例可用性

  • 绑定检测机制:通过特定的绑定检测机制来跟踪服务实例的状态变化。这些绑定是由服务接口部署形式的服务实例清单中的相应服务接口配置的技术绑定。

  • 状态变化检测:持续检测那些与StartFindService() 的调用相匹配的服务实例的可用性是否发生改变。

3.1.2 回调处理

  • 触发条件:每当绑定检测到服务实例的可用性发生改变时,触发回调操作。

  • 回调执行:调用用户提供的处理函数,将包含当前可用的服务实例的句柄的更新列表(以 ServiceHandleContainer 容器形式)以及 FindServiceHandle 参数传递给该处理函数。

  • 初始调用:在 StartFindService() 被调用后,即使在初始阶段没有服务实例可用性的变化,也会使用当前可用的服务实例(可能是空的句柄列表)来触发用户提供的处理函数,类似于一次性的 FindService() 方法的行为。

3.1.3 停止服务查找

  • 停止机制:用户可以通过调用 StopFindService() 方法(使用 StartFindService() 返回的 FindServiceHandle)来停止正在进行的监视服务实例可用性的后台活动。

  • 序列化处理:在整个过程中,由于处理者不必是可重入的,所以绑定实现者必须负责序列化对用户提供的处理函数的调用,确保操作的有序性和正确性。

相关文章:

服务发现和代理实例的自动更新

☞ 返回总目录 1.服务发现的两种方式 StartFindService 方法 这是一个在后台启动的连续 “FindService” 活动&#xff0c;当服务实例的可用性发生变化时&#xff0c;会通过回调通知调用者。 它返回一个FindServiceHandle&#xff0c;可通过调用StopFindService来停止正在进行…...

Redis的三种持久化方法详解

Redis持久化机制详解 | JavaGuide Redis 不同于 Memcached 的很重要一点就是&#xff0c;Redis 支持持久化&#xff0c;而且支持 3 种持久化方式: 快照&#xff08;snapshotting&#xff0c;RDB&#xff09;只追加文件&#xff08;append-only file, AOF&#xff09;RDB 和 A…...

OpenAI GPT o1技术报告阅读(5)-安全性对齐以及思维链等的综合评估与思考

✨继续阅读报告&#xff1a;使用大模型来学习推理(Reason) 原文链接&#xff1a;https://openai.com/index/learning-to-reason-with-llms/ 编码 我们训练了一个模型&#xff0c;在2024年国际信息学奥林匹克竞赛&#xff08;IOI&#xff09;中得分213分&#xff0c;排名在第…...

nodejs 012:Babel(巴别塔)语言转换与代码兼容

这里写目录标题 安装 Babel配置presets配置&#xff1a;常见的 Babel Presetsplugins配置&#xff1a;以 plugin-transform-class-properties 的类中属性为例index.jsx Babel 是一个独立的 JavaScript 编译器&#xff0c;主要用于将现代 JavaScript 代码转换为旧版本的 JavaScr…...

时间安全精细化管理平台存在未授权访问漏洞

漏洞描述 登录--时间&amp;安全精细化管理平台存在未授权访问漏洞导致与员工信息泄露 FOFA&#xff1a; body"登录--时间&amp;安全精细化管理平台" 漏洞复现 POC: IP/acc/_checkinoutlog_/...

软件卸载工具(windows系统)-geek

有时候软件卸载会很麻烦&#xff0c;使用geek会比较方便。但是针对一些特别大的软件&#xff0c;geek也好像会稍微费点劲&#xff08;比如MATLAB2022A&#xff09;,不过针对一般常规软件的卸载&#xff0c;geek就可以有效地完全卸载了&#xff0c;使用方法也很简单&#xff0c;…...

第三篇 第14篇 工程计价依据

第三篇 工程计价 第14篇 工程计价依据 14.1 工程造价管理标准体系与工程定额体系 14.1.1 工程造价管理标准体系 1.基础标准 工程造价术语标准建筑工程计价设备材料划分标准有关建设工程费用构成通则。建设工程费用构成和分类是工程计价最重要的基础工作。 2.管理规范 建筑…...

java 异常-Exception

异常的概念 Java 语言中&#xff0c;将程序执行中发生的不正常情况称为“异常”。&#xff08;开发过程中的语法错误和逻辑错误不是异常&#xff09; 执行过程中所发生的异常事件可分为两大类 &#xff08;1&#xff09;Error&#xff08;错误&#xff09;&#xff1a;Java 虚…...

爬虫逆向学习(六):补环境过某数四代

声明&#xff1a;本篇文章内容是整理并分享在学习网上各位大佬的优秀知识后的实战与踩坑记录 引用博客&#xff1a; https://blog.csdn.net/shayuchaor/article/details/103629294 https://blog.csdn.net/qq_36291294/article/details/128600583 https://blog.csdn.net/weixin_…...

IO流体系(FiletOutputStream)

书写步骤&#xff1a; 1.创建字节输出流对象 细节1:参数是字符串表示的路径或者是File对象都是可以的 细节2:如果文件不存在会创建一个新的文件&#xff0c;但是要保证父级路径是存在的。 细节3:如果文件已经存在&#xff0c;则会清空文件 2.写数据 细节:write方法的参数…...

网络设备登录——《路由与交换技术》实验报告

目录 一、实验目的 二、实验设备和环境 三、实验记录 1.通过 Console 登录 步骤1:连接配置电缆。 步骤2:启动PC,运行超级终端。 步骤3:进入Console 配置界面 2.通过 Telnet 登录 步骤1:通过 Console 接口配置 Telnet 用户。 步骤2:配置 super 口令 步骤3:配置登录欢迎…...

CSS——网格布局(display: grid)之下篇

CSS——网格布局&#xff08;display: grid&#xff09;之下篇 前面我们介绍了网格布局的基础的创建以及一些比较基础的属性&#xff0c;下面我们将介绍网格布局的剩余部分&#xff0c;还将结合实例来进行细致的讲解&#xff08;图文并茂&#xff0c;生动形象有内涵&#xff0…...

低势期操作

《周易》讲事务发展有六个阶段&#xff1a; 第一阶段&#xff1a;潜龙勿用。 第二阶段&#xff1a;见龙在田。 第三阶段&#xff1a;终日乾乾。 第四阶段&#xff1a;或跃在渊。 第五阶段&#xff1a;飞龙在天。 第六阶段&#xff1a;亢龙有悔。 现在大环境不好&#xff…...

IMS 呼叫流程(详细)

目录 业务模型 典型组网如图1所示 信令流程 具体的语音流程如图2所示 主叫信令面流程 01:UE_A->P-CSCF/ATCF 02:P-CSCF/ATCF_A->PCRF_A 03:PCRF_A->PCSCF/ATCF_A 04:P-CSCF/ATCF_A 处理(把S-CSCF加到Route) 05:S-CSCF_A->MMTel AS/SCC AS_A 06:MM…...

系统架构设计师:系统架构设计

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师:系统架构设计前言软件架构设计与生命周期SA 实现阶段主要关注的内容A…...

win11不显示已经打开的窗口

...

数学建模常用模型全面总结(含适用条件、优点、局限性和应用场景)

目录 1. 代数模型&#xff08;Algebraic Models&#xff09;2. 微分方程模型&#xff08;Differential Equation Models&#xff09;3. 概率模型&#xff08;Probabilistic Models&#xff09;4. 优化模型&#xff08;Optimization Models&#xff09;5. 统计模型&#xff08;S…...

RabbitMQ消费者确认和重复机制

消费者确认机制 为了确认消费者是否成功处理消息&#xff0c;RabbitMQ提供了消费者确认机制&#xff08;Consumer Acknowledgement&#xff09;。即&#xff1a;当消费者处理消息结束后&#xff0c;应该向RabbitMQ发送一个回执&#xff0c;告知RabbitMQ自己消息处理状态。回执…...

【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL77

编写乘法器求解算法表达式 描述 编写一个4bit乘法器模块&#xff0c;并例化该乘法器求解c12*a5*b&#xff0c;其中输入信号a,b为4bit无符号数&#xff0c;c为输出。注意请不要直接使用*符号实现乘法功能。 模块的信号接口图如下&#xff1a; 要求使用Verilog HDL语言实现以上…...

thinkPHP 8.0.4 安装

windows 上安装最新版 thinkPHP8.0.4 下载phpStudy V8.1&#xff1a;小皮面板安装Composer2.x&#xff0c;Composer是PHP的一个依赖管理工具&#xff0c;主要功能包括依赖管理、版本控制、自动加载、扩展开发以及集成其他工具。安装 php8.0.2 4. 网站-管理-compose&#xff0c…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...