服务发现和代理实例的自动更新
☞ 返回总目录
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” 活动,当服务实例的可用性发生变化时,会通过回调通知调用者。 它返回一个FindServiceHandle,可通过调用StopFindService来停止正在进行…...
Redis的三种持久化方法详解
Redis持久化机制详解 | JavaGuide Redis 不同于 Memcached 的很重要一点就是,Redis 支持持久化,而且支持 3 种持久化方式: 快照(snapshotting,RDB)只追加文件(append-only file, AOF)RDB 和 A…...
OpenAI GPT o1技术报告阅读(5)-安全性对齐以及思维链等的综合评估与思考
✨继续阅读报告:使用大模型来学习推理(Reason) 原文链接:https://openai.com/index/learning-to-reason-with-llms/ 编码 我们训练了一个模型,在2024年国际信息学奥林匹克竞赛(IOI)中得分213分,排名在第…...
nodejs 012:Babel(巴别塔)语言转换与代码兼容
这里写目录标题 安装 Babel配置presets配置:常见的 Babel Presetsplugins配置:以 plugin-transform-class-properties 的类中属性为例index.jsx Babel 是一个独立的 JavaScript 编译器,主要用于将现代 JavaScript 代码转换为旧版本的 JavaScr…...
时间安全精细化管理平台存在未授权访问漏洞
漏洞描述 登录--时间&安全精细化管理平台存在未授权访问漏洞导致与员工信息泄露 FOFA: body"登录--时间&安全精细化管理平台" 漏洞复现 POC: IP/acc/_checkinoutlog_/...
软件卸载工具(windows系统)-geek
有时候软件卸载会很麻烦,使用geek会比较方便。但是针对一些特别大的软件,geek也好像会稍微费点劲(比如MATLAB2022A),不过针对一般常规软件的卸载,geek就可以有效地完全卸载了,使用方法也很简单,…...
第三篇 第14篇 工程计价依据
第三篇 工程计价 第14篇 工程计价依据 14.1 工程造价管理标准体系与工程定额体系 14.1.1 工程造价管理标准体系 1.基础标准 工程造价术语标准建筑工程计价设备材料划分标准有关建设工程费用构成通则。建设工程费用构成和分类是工程计价最重要的基础工作。 2.管理规范 建筑…...
java 异常-Exception
异常的概念 Java 语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常) 执行过程中所发生的异常事件可分为两大类 (1)Error(错误):Java 虚…...
爬虫逆向学习(六):补环境过某数四代
声明:本篇文章内容是整理并分享在学习网上各位大佬的优秀知识后的实战与踩坑记录 引用博客: https://blog.csdn.net/shayuchaor/article/details/103629294 https://blog.csdn.net/qq_36291294/article/details/128600583 https://blog.csdn.net/weixin_…...
IO流体系(FiletOutputStream)
书写步骤: 1.创建字节输出流对象 细节1:参数是字符串表示的路径或者是File对象都是可以的 细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的。 细节3:如果文件已经存在,则会清空文件 2.写数据 细节:write方法的参数…...
网络设备登录——《路由与交换技术》实验报告
目录 一、实验目的 二、实验设备和环境 三、实验记录 1.通过 Console 登录 步骤1:连接配置电缆。 步骤2:启动PC,运行超级终端。 步骤3:进入Console 配置界面 2.通过 Telnet 登录 步骤1:通过 Console 接口配置 Telnet 用户。 步骤2:配置 super 口令 步骤3:配置登录欢迎…...
CSS——网格布局(display: grid)之下篇
CSS——网格布局(display: grid)之下篇 前面我们介绍了网格布局的基础的创建以及一些比较基础的属性,下面我们将介绍网格布局的剩余部分,还将结合实例来进行细致的讲解(图文并茂,生动形象有内涵࿰…...
低势期操作
《周易》讲事务发展有六个阶段: 第一阶段:潜龙勿用。 第二阶段:见龙在田。 第三阶段:终日乾乾。 第四阶段:或跃在渊。 第五阶段:飞龙在天。 第六阶段:亢龙有悔。 现在大环境不好ÿ…...
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. 代数模型(Algebraic Models)2. 微分方程模型(Differential Equation Models)3. 概率模型(Probabilistic Models)4. 优化模型(Optimization Models)5. 统计模型(S…...
RabbitMQ消费者确认和重复机制
消费者确认机制 为了确认消费者是否成功处理消息,RabbitMQ提供了消费者确认机制(Consumer Acknowledgement)。即:当消费者处理消息结束后,应该向RabbitMQ发送一个回执,告知RabbitMQ自己消息处理状态。回执…...
【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL77
编写乘法器求解算法表达式 描述 编写一个4bit乘法器模块,并例化该乘法器求解c12*a5*b,其中输入信号a,b为4bit无符号数,c为输出。注意请不要直接使用*符号实现乘法功能。 模块的信号接口图如下: 要求使用Verilog HDL语言实现以上…...
thinkPHP 8.0.4 安装
windows 上安装最新版 thinkPHP8.0.4 下载phpStudy V8.1:小皮面板安装Composer2.x,Composer是PHP的一个依赖管理工具,主要功能包括依赖管理、版本控制、自动加载、扩展开发以及集成其他工具。安装 php8.0.2 4. 网站-管理-compose,…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙
WebGL:在浏览器中解锁3D世界的魔法钥匙 引言:网页的边界正在消失 在数字化浪潮的推动下,网页早已不再是静态信息的展示窗口。如今,我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室,甚至沉浸式的V…...
运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.
报错 找到package.json文件 找到这个修改成 "lint": "eslint --fix --ext .js,.vue src" 为elsint有配置结尾换行符,最后运行:npm run lint --fix...
