软考 系统架构设计师系列知识点之SOME/IP与DDS(2)

2024-05-28 10:28

本文主要是介绍软考 系统架构设计师系列知识点之SOME/IP与DDS(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接前一篇文章:软考 系统架构设计师系列知识点之SOME/IP与DDS(1)

本文内容参考:

车载以太网 - SOME/IP简介_someip-CSDN博客

https://zhuanlan.zhihu.com/p/369422441

什么是SOME/IP?_someip-CSDN博客

SOME/IP 详解系列(1)—— 概述_some ip-CSDN博客

深入浅出SOME/IP协议:基本概念和原理-CSDN博客

特此致谢!

一、SOME/IP

3. 协议概述

(1)定义与特点

SOME/IP是一种应用层协议,其允许在车辆内部网络中实现高效的服务交换和远程调用。这种协议支持车辆各组件之间的复杂通信需求,特别适用于具有高数据吞吐量的场景

  • 服务导向架构(Service-Oriented Architecture,SOA)

SOME/IP实现了一种服务导向架构,允许车辆的各个电子控制单元(ECUs)以服务提供者服务消费者的身份互动。这种架构使得车辆内部的软件组件可以更加灵活地通信和交互

  • 远程过程调用(Remote Procedure Call,RPC)

通过RPC,SOME/IP支持跨网络的函数或过程调用,实现不同ECU之间的紧密协作。

  • 高度可伸缩性和灵活性(Scalability and Flexibility)

SOME/IP协议的设计考虑到了未来车辆网络可能的扩展,支持从小型车辆到大型车队的不同规模应用。

(2)SOME/IP与传统车载网络协议的比较

SOME/IP与传统车载网络协议(如CAN、LIN等)相比,具有明显的优势,但也存在一些不同的应用场景。通过下面的表格,可以更清楚地看到这些差异:

特性SOME/IP传统车载网络协议
数据传输高吞吐量,适合大数据传输适合小规模数据交换
网络结构服务导向,适应性强较为固定的消息格式和网络结构
扩展性易于扩展和升级扩展性相对有限
应用领域适合复杂、高数据需求的现代车辆系统适用于传统、功能单一的车辆系统

4. 主要功能

SOME/IP主要有以下几个功能:

(1)序列化(Serialization)

SOME/IP协议对序列化的解释为数据在PDU(Protocol Data Units,协议数据单元)中的表示方式。展开来说就是将不同的数据结构转换为可在网络上传输的形式,或者说是数据在网络上传输时的封装和排列规则。发送端将数据以一定的规则进行序列化,接收端将数据以同样的规则进行反序列化,从而得到发送端所发送的实际内容。

这部分定义既包含报文头部也包含载荷数据,不仅定义了头部的格式、各字段的长度及含义,还定义了各种数据类型在有效载荷中的排列规则。发送端和接收端通过这样的规则就能获取数据报头的含义及载荷的内容(具体的报文格式会在接下来的文章中详细介绍,本文仅介绍SOME/IP的基本功能)。下图为SOME/IP支持的基础数据类型和复杂数据类型。

(2)远程过程调用(Remote Procedure Call)

远程过程调用,一般用英文缩写RPC表示,听起来又是个比较晦涩的名词,和其对应的是本地过程调用(LPC,Local Procedure Call)。简单地说,如果需要和其它的控制器或节点进行交互,那么就需要RPC。

通过RPC来请求其它节点上的服务或数据,基于Request/Response的模式来实现(左下图示)客户端发送请求,服务器接受请求并处理,然后返回结果给客户端。在SOME/IP中,除了这种同步调用的方式,还支持异步调用的Fire&Forget(右下图示),客户端发送请求后,无需等待服务器处理请求,可以继续执行其他操作,同时服务器也无需返回处理结果(request-no-return)。相较于Request/Response,Fire&Forget方式对系统性能和资源的要求更低。

(3)服务发现(Service Discovery)

服务发现(Service Discovery,SD)可以认为是SOME/IP协议的核心,其提供了一种可以动态的发现和获取服务状态的机制。

所谓面向服务的通信,首先需要获取网络中都有什么服务,并且需要知道服务的状态和提供方,然后才可以去使用和消费这个服务。通过SOME/IP SD,可以将自身能提供的服务以及服务的状态告诉网络中的其它节点,同时,当想要主动寻找某个服务的时候,也可以通过SOME/IP SD去实现。

(4)发布/订阅(Publish/Subscribe)

发布和订阅也是由SOME/IP SD实现的。上文中提到,SOME/IP可以实现只在需要的时候才进行数据的发送,这主要归功于发布/订阅的机制。客户端在发现想要使用的服务后,会对服务进行订阅,当满足服务的触发条件时,服务器就会将客户端所需的服务内容发出。发送的方式是单向的事件型通知,对于客户端来说,只需要订阅一次即可。这同样是一个动态的过程,当客户端不需要使用服务的时候,也可以停止订阅该服务。

(5)TP传输协议(Transport Protocol)

SOME/IP-TP是SOME/IP在数据传输层面定义的规则,主要用于解决数据有可能被分片的问题。在网络层,数据都是通过IP协议传输的,由于链路MTU的限制,导致可能会出现IP分片。由于IP分片存在诸多的问题,为了防止IP出现分片的情况,所以设计了SOME/IP-TP,可以简单理解成TP是SOME/IP自己的分片传输机制。

关于SOME/IP更多知识内容的介绍,请看下回。

这篇关于软考 系统架构设计师系列知识点之SOME/IP与DDS(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1010301

相关文章

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

C++实现获取本机MAC地址与IP地址

《C++实现获取本机MAC地址与IP地址》这篇文章主要为大家详细介绍了C++实现获取本机MAC地址与IP地址的两种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实际工作中,项目上常常需要获取本机的IP地址和MAC地址,在此使用两种方案获取1.MFC中获取IP和MAC地址获取

C/C++通过IP获取局域网网卡MAC地址

《C/C++通过IP获取局域网网卡MAC地址》这篇文章主要为大家详细介绍了C++如何通过Win32API函数SendARP从IP地址获取局域网内网卡的MAC地址,感兴趣的小伙伴可以跟随小编一起学习一下... C/C++通过IP获取局域网网卡MAC地址通过win32 SendARP获取MAC地址代码#i

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.