1_SOMEIP 概述
目录
文章目录
- 目录
- @[toc]
- 简介
- 引子
- SOME/IP 介绍
- SOME/IP 协议栈的位置
简介
SOME/IP是一套通信协议和API标准,它提供了以数据为中心的连接服务。VSomeIP是SOME/IP的开源实现,借助它可以方便的开发出高效,可靠的分布式中间件。本系列文章是对SOME/IP协议以及VSomeIP 实现的介绍。
引子
变形金刚电影中,御天敌背叛了擎天柱,与霸天虎合作。在地球的各地布置了许多的能量柱,他试图借助这些能量柱将赛博坦星球传送到地球上,以此来重建自己的家园。这些能量柱必须组合起来才能完成传输工作,并且在这其中有一个红色的能量柱比较特殊,因为它负责控制其他的传送柱。
这些能量柱必须组合起来才能完成传输工作,并且在这其中有一个红色的能量柱比较特殊,因为它负责控制其他的传送柱。
由此可见,这是一个大型的分布式系统。在这个系统中,这个红色的能量柱被称之为“中心节点”,中心节点正如其名称那样,它是整个系统的中心。对于带有中心节点的分布式系统来说,一旦中心节点被摧毁,整个系统都将无法工作。
因此电影的后来,自然是擎天柱摧毁了这个中心节点,使得御天敌的传送计划彻底失败。
从设计上来说,对于一个如此大型的系统,却存在一个非常薄弱和重要的中心节点,这并不是一个好的方案。
而本文介绍的SOME/IP就是一个去中心化的分布式技术。因此在这类系统中,不存在负责总控制的中心节点,所有节点都完全对等。任何一个节点的异常都不会影响整个系统的运行。
SOME/IP 介绍
SOME/IP全称是 Scalable Service-Oriented Middleware over IP, 一种面向服务的可扩展基于IP中间件通信方式,这是一套通信协议和API标准,它提供了以数据为中心的连接服务,基于发布者-订阅者模型。
这是一套中间件,它提供介于操作系统和应用程序之间的功能,使得组件之间可以互相通信。并且提供了低延迟,高可靠的通信以及可扩展的架构。或许,你已经知道很多种网络通信协议,对于发布-订阅这些概念也很熟悉。那SOME/IP到底有什么特别之处呢?
下图展示了4个时代的数据通信方式:
[图1:通信方式更迭][图1]
- (第一代)点对点的CS(Client-Server)结构,这是大家最为熟悉的:一个服务器角色被许多的客户端使用,每次通信时,通信双方必须建立一条连接。当通信节点增多时,通信的连接数也会增多。并且,每个客户端都必须知道服务器的具体地址和所提供的服务。一旦服务器地址发生变化,所有客户端都会受到影响。
- (第二代)Broker模型:存在一个中间人,它负责初步处理大家的请求,并进一步找到真正能响应服务的角色,这就好像存在一个经纪人。这为客户端提供了一层抽象,使得服务器的具体地址变得不重要了。服务端地址如果发生变化,只需要告诉Broker就可以了。但这个模型的问题在于,Broker变成了模型的中心,它的处理速度会影响所有人的效率,这就好像城市中心的路口,当系统规则增长到一定程度,Broker终究会成为瓶颈。更糟糕的是,如果Broker瘫痪了,可能整个系统都将无法运转。
- (第三代)广播模型:所有人都可以在通道上广播消息,并且所有人都可以收到消息。这个模型解决了服务器地址的问题,且通信双方不用单独建立连接,但它存在的问题是:广播通道上的消息太多,太嘈杂,所有人都必须关心每条消息是否与自己有关。这就好像全公司一千号人坐在同一个房间里面办公一样。
- (第四代)分享数据模型:这种模型与广播模型有些类似,所有人都可以对外发布和读取消息。但它更进一步的是,通信中包含了很多并行的通路,每个人可以只关心自己感兴趣的消息,自动忽略自己不需要的消息。
SOME/IP 协议栈的位置
下图展示了SOME/IP在网络栈中的位置,它位于传输层的上面,并且以TCP,UDP为基础:
[图2:SOME/IP在网络协议栈的位置][图2]
大概比较一下SOME/IP 的优缺点:
优点 | 缺点 |
---|---|
开源, 基于boost库, 跨平台, 基本实现通信相关功能 | 增加了存储需求request时, 会先放在endpoint buffer中,会不停动态开劈内存 |
高数据通信, 如图片传输 | 不可预测的时间, endpoint是顺序发送buffer, 接收端什么时候能收到method id是不可预测 |
动态识别服务 | 数据加密,数据安全考虑不周全 |
1_SOMEIP 概述相关推荐
- Java 多线程概述
多线程技术概述 1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间. 线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换.并发执行,一个进程最少有一个线程, ...
- 【SpringMVC】概述
概述: SpringMVC:是基于spring的一个框架, 实际上就是spring的一个模块, 专门是做web开发的. 理解是servlet的一个升级 Sp ...
- 梯度下降优化算法概述
本文原文是 An overview of gradient descent optimization algorithms,同时作者也在 arXiv 上发了一篇同样内容的 论文. 本文结合了两者来翻译 ...
- Redis概述和基础
Redis 1.NoSQL NoSQL = Not Only SQL(不仅仅是SQL) 泛指非关系型数据库的,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的 ...
- OpenCL™(开放计算语言)概述
OpenCL™(开放计算语言)概述 异构系统并行编程的开准 OpenCL™(开放计算语言)是一种开放的.免版税的标准,用于对超级计算机.云服务器.个人计算机.移动设备和嵌入式平台中的,各种加速器进行跨 ...
- 自动驾驶QNX,Linux,Autosar概述
自动驾驶QNX,Linux,Autosar概述 QNX是一个分布式.嵌入式.可规模扩展的实时操作系统.遵循POSIX.1 (程序接口)和POSIX.2 (Shell和工具).部分遵循POSIX.1b( ...
- Tengine MLOps概述
Tengine MLOps概述 大幅提高产业应用从云向边缘迁移的效率 MLOps Cloud Native 聚焦于提升云端的运营过程效率 MLOps Edge Native 聚焦于解决边缘应用开发及异 ...
- Tengine Web服务器概述
Tengine Web服务器概述 Tengine是由淘宝网发起的Web服务器项目.在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.目的是打造一个高效.安全的Web平台. 发展 ...
- Docker基本原理概述
Docker基本原理概述 Docker是一个用于开发,交付和运行应用程序的开放平台.Docker能够将应用程序与基础架构分开,从而可以快速交付软件.借助Docker,可以以与管理应用程序相同的方式来管 ...
最新文章
- WPF多表头技术探索总结
- 完美解决idea继承maven后,构建项目慢的问题
- 浅析为什么要使用ST的固件库,谈谈我个人的工具思维!!!
- 零基础的跨界自学拿到腾讯Offer的学习资料
- 安卓apk签名提取工具_Android测试工具入门介绍(二)
- 并发服务器模型——单进程服务器
- 使C#代码现代化——第三部分:值
- C++builder Tokyo 调用com 不正确的变量类型
- 云计算:21世纪的商业平台
- 你与30W奖金只差一个 Apache Flink 极客挑战赛的报名
- python接口自动化4-绕过验证码登录(cookie) (转载)
- 笨办法学R编程(5)
- c++的学习——画矩形
- 获取电脑的唯一识别码_无锡电脑办公,office软件培训,学会为止
- html table 表头停留,HTML table固定表头
- 聚观早报|百度3月16日发布文心一言;特斯拉被控维修和零部件垄断
- vite创建vue保姆级教程
- vue获取焦点、失去焦点
- RTOS系列(12):使用SVC或PendSV启动OS流程详细分析
- html qq消息弹窗提醒,能不能让QQ消息不再讨厌 QQ HD mini消息弹窗提醒的优化方案...