目录
文章目录
- 目录
-
- @[toc]
- 简介
-
- 引子
- SOME/IP 介绍
- SOME/IP 协议栈的位置
- @[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是不可预测 |
动态识别服务 | 数据加密,数据安全考虑不周全 |