IOT PAAS 平台设计的心路历程

开端

随着公司层面对产品方向的调整,最近团队进入了一个找方向的阶段,虽然大家都清楚我们最终要达到的目标是什么,但怎么到达那里却不是一件显而易见的事情,于是开了几天头脑风暴的会,列出了我们近期,短期,中长期要做的事情。其中一项内容是在近期要做一个 SAAS 平台,而这个平台的构架设计工作就是我这两天的工作内容。

设计思考

架构是面向问题,而满足需求的。所以第一步的工作是识别问题。我们要做一个 IOT 领域的 SAAS 服务,那么主要的问题有以下三点:

  • 大量的链接
  • 超大的数据量
  • 多租户之间的数据隔离

识别问题之后,就是寻找方案来解决问题,目前业界并没有一个针对 IOT 领域的 SAAS 服务的参考架构,但针对大并发,大数据的问题,我们一般采用分布式集群来解决。

  1. 按连接数调整应用的实例
    根据每个租户的设备连接数,为租户启动1~n 份应用实例。

但这样的架构有一个问题,有些租户的设备很多,但数据上报的频率低,而有些租户设备不是很多,数据上报的频率很高。对一个应用来说,计算量是跟数据量相关的,而连接数不能完全体现数据量,所以不能根据设备连接数来决定应用实例数量。

  1. 使用网关来管理连接和收发数据
    统一使用网关来管理连接和收发数据,连接与应用实例解偶。虽然每条连接上传输的数据量有差别,但网关集群中每个网关上的连接是随机分配的,所以每个网关上收发的数据是比较平均的。

这个架构的问题是所有的应用实例和所有的网关都要保持连接,网关在收到数据时,需要选择转给哪一个应用实例,这样的多对多关系,限制了系统的伸缩性。

  1. 使用消息中间件解偶网关与应用程序
    网关在收到数据之后,把数据扔到消息中间件中相应租户的消息队列里,应用实例启动之后,订阅相应租户的消息队列。

到这里这个简单的架构基本就出来了,使用分布式集群网关解决大量连接和海量数据传输的问题,使用分布式集群的应用实例来解决海量数据的处理问题,使用消息的订阅发布的不同主题来解决租户间数据隔离的问题。

但这里遗留了两个问题没有解决:

  • 租户对应的设备数据量和用户请求数不匹配
  • 租户的设备可能所属不同的租户的用户

对于第一个问题,系统应该分离设备数据处理逻辑和用户请求处理逻辑。而第二个问题应用可以根据数据归属设备来自行处理。但考虑到我们的 SAAS 服务针对的是工厂或者企业,不面向消费品市场,所以可以不考虑用户访问量大和设备归属不同用户的问题。

架构师的格局

第二天当我把这份设计拿给我们的首席架构师时,他问了我一个问题:为什么要做一个 SAAS 服务。其实在我们的方向和规划里,我们最后会是一个 IOT 领域里的 PAAS ,而 SAAS 只是我们在这个方向上的第一步,起到技术积累的作用。我们的 PAAS 也可以通过多个 SAAS 间相同功能模块下沉而不断丰满起来。

首席架构师说道:路线没什么问题,但做为架构师,眼界不能只放在眼前。既然你们决定要做一个 PAAS 平台,那么一开始你就要划清楚 PAAS 的范围,哪些是 PAAS 的职责,哪些是 SAAS 的职责。所以你应该先出一个 PAAS 平台的架构图。

PAAS 平台架构设计

根据 Gartner 的定义, PAAS 分为 aPAAS 和 iPAAS 两类。对于 aPAAS,开源世界现在已经有比较成熟的解决方案了。基于 kubernetes 和 deis 完全可以定制出一个满足以下需求的 aPAAS 。

  • 应用的隔离,每个应用独立的运行环境(基于容器技术: docker)
  • 易于更新应用程序,部署友好(基于 deis)
  • 应用的高可用,应用故障后自动重启(基于 kubernetes)
  • 应用的在线伸缩性,不停机下增加或减少应用的实例(基于 kubernetes)
  • 应用的监控,报警 (基于 Heapster)

接下来是 iPAAS 的部分了。做为 IOT 领域,首先要解决的就是应用与设备的通讯问题。这个部分在前面 SAAS 部分已经说过了,接下来要思考的是还有哪些服务是 PAAS 应该包含的。

  • 会员服务
  • 鉴权服务
  • 存储服务
  • 消息中间件
  • 消息推送服务

以上五种服务是一个通用应用程序会需要用到的服务,而跟 IOT 关系的体现则是在具体设计这些服务时要重点考虑的问题。

领悟

产品或者项目可以按照敏捷的思路推进,程序也可以按照 TDD 实践来开发,然而做为架构师,则需要在一开始就划清系统的范围,知道边界在哪里,系统间的关系是怎么样的。范围清晰了,才能识别全系统的问题集,才能谈概念完整性问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容