目录

文章目录

  • 目录
    • @[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]

  1. (第一代)点对点的CS(Client-Server)结构,这是大家最为熟悉的:一个服务器角色被许多的客户端使用,每次通信时,通信双方必须建立一条连接。当通信节点增多时,通信的连接数也会增多。并且,每个客户端都必须知道服务器的具体地址和所提供的服务。一旦服务器地址发生变化,所有客户端都会受到影响。
  2. (第二代)Broker模型:存在一个中间人,它负责初步处理大家的请求,并进一步找到真正能响应服务的角色,这就好像存在一个经纪人。这为客户端提供了一层抽象,使得服务器的具体地址变得不重要了。服务端地址如果发生变化,只需要告诉Broker就可以了。但这个模型的问题在于,Broker变成了模型的中心,它的处理速度会影响所有人的效率,这就好像城市中心的路口,当系统规则增长到一定程度,Broker终究会成为瓶颈。更糟糕的是,如果Broker瘫痪了,可能整个系统都将无法运转。
  3. (第三代)广播模型:所有人都可以在通道上广播消息,并且所有人都可以收到消息。这个模型解决了服务器地址的问题,且通信双方不用单独建立连接,但它存在的问题是:广播通道上的消息太多,太嘈杂,所有人都必须关心每条消息是否与自己有关。这就好像全公司一千号人坐在同一个房间里面办公一样。
  4. (第四代)分享数据模型:这种模型与广播模型有些类似,所有人都可以对外发布和读取消息。但它更进一步的是,通信中包含了很多并行的通路,每个人可以只关心自己感兴趣的消息,自动忽略自己不需要的消息。

SOME/IP 协议栈的位置

下图展示了SOME/IP在网络栈中的位置,它位于传输层的上面,并且以TCP,UDP为基础:

[图2:SOME/IP在网络协议栈的位置][图2]

大概比较一下SOME/IP 的优缺点:

优点 缺点
开源, 基于boost库, 跨平台, 基本实现通信相关功能 增加了存储需求request时, 会先放在endpoint buffer中,会不停动态开劈内存
高数据通信, 如图片传输 不可预测的时间, endpoint是顺序发送buffer, 接收端什么时候能收到method id是不可预测
动态识别服务 数据加密,数据安全考虑不周全

1_SOMEIP 概述相关推荐

  1. Java 多线程概述

    多线程技术概述 1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间. 线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换.并发执行,一个进程最少有一个线程, ...

  2. 【SpringMVC】概述

    概述: SpringMVC:是基于spring的一个框架, 实际上就是spring的一个模块, 专门是做web开发的.                       理解是servlet的一个升级 Sp ...

  3. 梯度下降优化算法概述

    本文原文是 An overview of gradient descent optimization algorithms,同时作者也在 arXiv 上发了一篇同样内容的 论文. 本文结合了两者来翻译 ...

  4. Redis概述和基础

    Redis 1.NoSQL NoSQL = Not Only SQL(不仅仅是SQL) 泛指非关系型数据库的,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的 ...

  5. OpenCL™(开放计算语言)概述

    OpenCL™(开放计算语言)概述 异构系统并行编程的开准 OpenCL™(开放计算语言)是一种开放的.免版税的标准,用于对超级计算机.云服务器.个人计算机.移动设备和嵌入式平台中的,各种加速器进行跨 ...

  6. 自动驾驶QNX,Linux,Autosar概述

    自动驾驶QNX,Linux,Autosar概述 QNX是一个分布式.嵌入式.可规模扩展的实时操作系统.遵循POSIX.1 (程序接口)和POSIX.2 (Shell和工具).部分遵循POSIX.1b( ...

  7. Tengine MLOps概述

    Tengine MLOps概述 大幅提高产业应用从云向边缘迁移的效率 MLOps Cloud Native 聚焦于提升云端的运营过程效率 MLOps Edge Native 聚焦于解决边缘应用开发及异 ...

  8. Tengine Web服务器概述

    Tengine Web服务器概述 Tengine是由淘宝网发起的Web服务器项目.在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.目的是打造一个高效.安全的Web平台. 发展 ...

  9. Docker基本原理概述

    Docker基本原理概述 Docker是一个用于开发,交付和运行应用程序的开放平台.Docker能够将应用程序与基础架构分开,从而可以快速交付软件.借助Docker,可以以与管理应用程序相同的方式来管 ...

最新文章

  1. WPF多表头技术探索总结
  2. 完美解决idea继承maven后,构建项目慢的问题
  3. 浅析为什么要使用ST的固件库,谈谈我个人的工具思维!!!
  4. 零基础的跨界自学拿到腾讯Offer的学习资料
  5. 安卓apk签名提取工具_Android测试工具入门介绍(二)
  6. 并发服务器模型——单进程服务器
  7. 使C#代码现代化——第三部分:值
  8. C++builder Tokyo 调用com 不正确的变量类型
  9. 云计算:21世纪的商业平台
  10. 你与30W奖金只差一个 Apache Flink 极客挑战赛的报名
  11. python接口自动化4-绕过验证码登录(cookie) (转载)
  12. 笨办法学R编程(5)
  13. c++的学习——画矩形
  14. 获取电脑的唯一识别码_无锡电脑办公,office软件培训,学会为止
  15. html table 表头停留,HTML table固定表头
  16. 聚观早报|百度3月16日发布文心一言;特斯拉被控维修和零部件垄断
  17. vite创建vue保姆级教程
  18. vue获取焦点、失去焦点
  19. RTOS系列(12):使用SVC或PendSV启动OS流程详细分析
  20. html qq消息弹窗提醒,能不能让QQ消息不再讨厌 QQ HD mini消息弹窗提醒的优化方案...

热门文章

  1. win7源码编译cef3.2743
  2. 自考工业用微型计算机书面,自考工业用微型计算机
  3. 屏蔽QQ内置浏览器举报功能(正在研究)
  4. 用站长工具综合查询查不出网站标题是什么情况?站长工具综合查询
  5. 曾哥传(第二话 村长的神器)
  6. 域环境的搭建(保姆级教程)
  7. 一种word文档报错 error code 800700EA的可能解决方案
  8. 百度网盘Motrix直链下载js脚本
  9. HDU3016 Man Down
  10. 香港武侠电影十大金曲和影视剧的怀旧经典金曲