【从零开始一步步学习VSOA开发】 概述
概述
概念
VSOA(Vehicle SOA)是翼辉为了解决任务关键型系统不能适用当前微服务通信架构问题而设计的⼀个轻量级适用于任务关键领域的微服务通信架构,以方便开发者构建大型分布式松耦合软件系统,且支持并行开发。
特点
其主要特点为支持多种编程语言、多 CPU 架构环境与多操作系统平台,同时不依赖任何第三方库,架构简洁、资源占用小、服务响应速度快,具有开发成本低、开发效率高等特点。考虑到任务关键型场景的多样性和碎片化特点,VSOA 汇集订阅/发布、RPC、高带宽数据流以及自定义数据报等功能于一体,可满足任何分布式应用模型;同时提供非入侵式仿真测试工具与便捷的开发环境,让开发者在享受云计算先进的开发体验以及高效的生产效率的同时,继续保持任务关键领域对业务功能和性能的高可靠需求。
- 支持订阅和发布模型
- 支持实时 RPC 调用
- 支持并行多命令序列
- 支持可靠与快速数据发布与数据报
- 支持多路全双工高速并行数据流
- 支持网络 QoS 控制
- 支持统⼀的 URL 资源标识
- 支持域名管理与位置服务
- 轻松实现服务器容错设计
- 支持多种编程语言、操作系统和 CPU 体系
- 支持 IPv4/IPv6 双栈
- 支持标准编程范式,便于模型化开发
- 便于实现冗余健壮性设计
- 支持非入侵式仿真和测试

角色组成
在 VSOA 框架中,存在如下三个角色:
服务端: 指服务的提供者,向外提供资源。
客户端: 指业务的使用者,使用服务端的资源。
位置服务: 与 DNS 类似,客户端无需知道服务提供方实际的网络地址即可与其建立连接。

教学简化
VSOA(Vehicle SOA)是翼辉面向 “ 任务关键型云原生架构 ” 推出的系列产品之一。鉴于 VSOA 相关开发编程语言、开发操作系统、运行操作系统、运行处理器体系结构多样更设计云原生诸多概念和工具,组合逻辑复杂,为降低初学者理解实操难度,本系列教程只选择一种组合进行讲解,尽量减少非关键信息的说明。
如下是 VSOA 相关技术列表,初略估计可以有 96 种组合,后面只选择C 语言+开发Windows+运行SylixOS+运行amd64这最常见的一种进行讲解。
| 开发编程语言 | 开发操作系统环境 | 运行操作系统环境 | 运行处理器体系结构 |
|---|---|---|---|
| C/C++ | Windows | SylixOS | amd64 |
| JavaScript | Linux Debian 系 | Linux Debian 系 | i386 |
| Golang | Windows | arm | |
| Java | |||
| aarch64 |
官方教程都是在云原生的体系下降 VSOA 的,涉及很多容器,容器管理,JavaScript、 Golang等内容,但 VOSA 其实是能在普通 SylixOS 下运行的,而不限定于容器中,所以后面只在最简单环境和依赖下讲解 VSOA,进一步专注于 VSOA 本身的学习和演示。
相关文章:
【从零开始一步步学习VSOA开发】 概述
概述 概念 VSOA(Vehicle SOA)是翼辉为了解决任务关键型系统不能适用当前微服务通信架构问题而设计的⼀个轻量级适用于任务关键领域的微服务通信架构,以方便开发者构建大型分布式松耦合软件系统,且支持并行开发。 特点 其主要特…...
小程序背景图片无法通过 WXSS 获取
问题:pages/index/index.wxss 中的本地资源图片无法通过 WXSS 获取 可以使用网络图片,或者 base64,或者使用标签。 将图片转换为base64,地址 base64图片在线转换工具 - 站长工具 在这里把要使用的图片转换一把,然后将得…...
CC++内存魔术:掌控无形资源
hello,uu们,今天呢我们来详细讲解C&C的内存管理,好啦,废话不多讲,开干 1:C/C内存分布 2:C语言中动态内存管理方式:malloc/calloc/realloc/free 3:C内存管理方式 3.1:new/delete操作内置类型 3.1.1:代码1 3.1.2:代码2 3.2:new和delete操作自定义类型 3.2.1:C语言创建…...
算法--初阶
1、tips 1.1、set求交集 {1,2,3} & {2,3} & {1,2} {2} 其实就是位运算, 只有set可以这样使用, list没有这种用法 {1,2,3} | {2,3, 4} | {1,2} {1, 2, 3, 4} 并集 1.2、*与** * 序列(列表、元组)解包,如果是字典,那…...
通过Java实现插入排序(直接插入,希尔)与选择排序(直接选择,堆排)
目录 (一)插入排序 1.直接插入排序 (1)核心思想: (2)代码实现(以从小到大排序为例): (3)代码分析: 2.希尔排序(…...
大型分布式B2B2C多用户商城7.0企业版源码分享【java语言、方便二次开发】
项目介绍 项目基于SpringBoot开发,运营端和商户端采用ElementVue,买家使用采用VueIviewnuxt服务端渲染。使用到的中间件有Redis、RabbitMQ、ElasticSearch、FastDFS、Mongodb等。主要功能包括有运营管理、商品管理、订单管理、售后管理、会员管理、财务…...
C++的结构体、联合体、枚举类型(一)
1.C++的结构体 2.C++的联合体 3.C++的枚举类型 1.C++的结构体 (1)C++中定义结构体变量,可以省略struct关键字 struct XX{…}; XX x;//定义结构体变量直接省略struct(2)C++结构体中可以直接定义函数,谓之成员函数(又叫方法)(3)在成员函数中可以直接访问该结构体的成员变…...
搭建高可用OpenStack(Queen版)集群(一)之架构环境准备
一、搭建高可用OpenStack(Queen版)集群之架构环境准备 一、架构设计 二、初始化基础环境 1、管理节点创建密钥对(方便传输数据) 所有控制节点操作 # ssh-keygen #一路回车即可 Generating public/private rsa key pair. Enter f…...
通过Stack Overflow线程栈溢出的问题实例,详解C++程序线程栈溢出的诸多细节
目录 1、问题说明 2、从Visual Studio输出窗口中找到了线索,发生了Stack Overflow线程栈溢出的异常 3、发生Stack Overflow线程栈溢出的原因分析 4、线程占用的栈空间大小说明 5、引发线程栈溢出的常见原因和场景总结 6、在问题函数入口处添加return语句&…...
LeetCode刷题笔记 | 3 | 无重复字符的最长子串 | 双指针 | 滑动窗口 | 2025兴业银行秋招笔试题 | 哈希集合
🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 这是一道银行的面试题,就是简单?! LeetCode链接:3. 无重复字符的最长子串 1.题目描述 给定一个字符串 s ,…...
验证cuda和pytorch都按照成功了
要验证您的PyTorch是否能够调用CUDA,您可以执行以下步骤: 1. **检查CUDA是否可用**: 在Python中运行以下代码来检查CUDA是否可用: python import torch print(torch.cuda.is_available()) 如果输出为 True&…...
iOS开发如何自己捕获Crash
为了在iOS中捕获和处理未捕获的Objective-C异常和系统信号引起的崩溃,可以使用NSSetUncaughtExceptionHandler和标准的Unix信号处理机制来实现。这能帮助你记录绝大部分的崩溃信息。以下是详细的实现步骤和代码示例: 一、系统崩溃处理 通过NSSetUncaug…...
雪花算法(Snowflake Algorithm)
雪花算法(Snowflake Algorithm)是一种分布式唯一ID生成算法,主要用于生成全球唯一的ID,广泛应用于分布式系统中,例如在数据库中作为主键。这个算法最初由Twitter提出,并且被广泛使用在很多大规模系统中。有…...
〖任务1〗ROS2 jazzy Linux Mint 22 安装教程
前言: 本教程在Linux系统上使用。 目录 一、linux安装二、linux VPN安装三、linux anaconda安装(可选)四、linux ROS2 安装五、rosdep init/update 解决方法六、安装GUI 一、linux安装 移动硬盘安装linux:[LinuxToGo教程]把ubunt…...
图像增强:使用周围像素填充掩码区域
制作图像需要填充的掩码区域,对需要填充的位置的mask赋值非0,不需要填充赋值为0使用cv2.inpaint对图像掩码mask中非0元素位置的图像像素进行修复。从而实现使用周围像素填充掩码区域cv2.inpaint 是 OpenCV 库中的一个函数,用于图像修复(inpainting),即填充图像中的损坏区…...
给虚拟机Ubuntu扩展硬盘且不丢数据
1.Ubuntu关机状态下先扩展,如扩展20GB 2.进入ubuntu,切换root登录,必须是root全选,否则启动不了分区工具gparted 将新的20GB创建好后,选择ext4,primary; 3.永久挂载 我的主目录在/并挂载到/dev/sda1 从图…...
Oracle(41)如何使用PL/SQL批量处理数据?
在PL/SQL中,批量处理数据是一种高效的方法,可以在数据库中处理大量数据,而无需逐行操作。批量处理数据的关键技术包括: PL/SQL表(索引表):在内存中存储数据以进行批量操作。FORALL语句…...
JavaEE 第2节 线程安全知识铺垫1
目录 一、通过jconsole.exe查看线程状态的方法 二、Thread类的几种常见属性 三、线程状态 一、通过jconsole.exe查看线程状态的方法 通过jconsole查看线程状态非常实用的方式 只要你安装了jdk,大致按照这个目录就可以找到这个可执行程序: 然后双击这…...
LeetCode Hot100 零钱兑换
给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示…...
微信小程序接口实现语音转文字
一、效果展示 我们有一个按钮,点击“开始录音”按钮,此时按钮变成“停止录音”并开始计时,点击停止录音后,界面上即可展示返回的文字 二、代码实现 完整代码实现见github 1.小程序端代码 // index.js const recorderManager…...
从Arm实战案例看STL:你的软件测试库真的测对了CPU的“死角”吗?
从Arm实战案例看STL:你的软件测试库真的测对了CPU的“死角”吗? 在汽车电子和工业控制领域,功能安全从来不是可选项,而是生死攸关的底线。当工程师们谈论ASIL B认证时,很少有人意识到,那些看似严谨的软件测…...
告别SD卡!用闲置的香橙派Zero给树莓派4B做网络启动服务器(保姆级配置)
用香橙派Zero打造树莓派4B网络启动服务器:极简硬件的高阶玩法 手里闲置的香橙派Zero开发板除了吃灰还能做什么?今天我们来解锁一个硬核玩法——将它改造成树莓派4B的网络启动服务器。这种配置不仅能让你彻底告别SD卡,还能实现多台树莓派的集中…...
别再对着HDF5文件发愁了!用Matlab读取gprMax的out文件,这份保姆级教程帮你搞定
从零掌握gprMax仿真数据:Matlab解析HDF5格式的完整实战指南 地质雷达仿真数据处理的第一个拦路虎,往往是那个神秘的.out文件。作为gprMax软件的输出结果,它采用HDF5格式存储,这种结构化的数据容器虽然高效,却让不少初学…...
PyQt5-tools安装总失败?可能是你的Python版本和系统环境在‘打架’(附兼容性自查清单)
PyQt5-tools安装失败深度排查:环境兼容性全景解决方案 当你在终端看到那个刺眼的红色报错——"Could not find a version that satisfies the requirement pyqt5-tools"时,可能已经尝试了更换镜像源、添加信任主机参数等常规操作。但问题依旧存…...
如何3步彻底清理Windows右键菜单:ContextMenuManager终极优化指南
如何3步彻底清理Windows右键菜单:ContextMenuManager终极优化指南 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否也曾为Windows右键菜单的混乱…...
AI Agent的个性化定制策略
从零到精通:AI Agent的全链路个性化定制策略 副标题:从工具适配、知识私有、性格塑造到终身学习,打造真正“懂你”的智能体 摘要/引言 在大语言模型(LLM)引爆的AI应用浪潮中,通用型AI Agent(如AutoGPT、BabyAGI) 曾因“无所不能”的噱头吸引眼球,但真正落地到业务场…...
LVGL滚动卡住了?可能是你没搞懂Tile View的`lv_tileview_add_element`用法
LVGL滚动卡住了?可能是你没搞懂Tile View的lv_tileview_add_element用法 在嵌入式GUI开发中,LVGL的Tile View控件是一个非常实用的组件,它允许用户通过滑动在不同的"瓦片"之间导航。然而,很多开发者在初次使用Tile View…...
5分钟搞定Windows Defender永久禁用:开源工具完全指南
5分钟搞定Windows Defender永久禁用:开源工具完全指南 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defender-control 你…...
【后端作业W7】 RuoYi-Vue v3.8.2 实战:单表 CRUD 独立接口开发与 API 测试全记录
一、 前言 本周的实战任务基于企业级开源框架 RuoYi-Vue v3.8.2 进行。与前两周纯手写的 SpringBoot 项目不同,若依框架内置了庞大的组件和严密的安全鉴权体系(Spring Security)。 本次作业的核心目的并非依赖代码生成器完成任务,…...
LiuJuan20260223Zimage与STM32开发联动:嵌入式AI应用生成案例
LiuJuan20260223Zimage与STM32开发联动:嵌入式AI应用生成案例 最近在折腾一个基于STM32的智能环境监测项目,从传感器数据采集到通过Wi-Fi上报云端,整个过程涉及不少代码编写和调试。就在我对着数据手册和参考例程,一行行敲着ADC初…...
