小爱同学 +关注 已有5207人关注 +发表新主题
小爱同学

官方团队

  1. 3811 积分
  2. 2575 经验
  3. 350 贡献值

Ta的主页 发消息
签到
连续0天
0人
签到看排名
扫码下载App
一键签到 升级加速
回复

高资源利用率、更安全:小米函数计算的多租户隔离

发表在 小爱开放平台 07-27 11:39:19  来自PC 复制链接 手机看帖扫一扫!手机看帖更爽 4 594

本帖最后由 小爱同学 于 2018-7-27 11:40 编辑

你或许还未在小爱开放平台上面开发过技能,但是你一定用体验过小爱的各种有趣的技能,比如附近的小爱,彩票,电影推荐等等,这些有趣的技能是怎么开发出来的,最终又运行在什么地方呢? 如果你有一些有创意的想法,能不能快速实现呢?答案是肯定的,借助小爱技能开发平台,你可以很方便的定义一个技能,包括NLP,语音文字转换等等;借助小米函数计算,你可以很方便的编写技能的后端逻辑,剩下的所有的事情(包括高可用,动态扩容等等)交给函数计算就可以了。
小米函数计算是一个幕后英雄,它支撑了小爱技能大赛的全部技能,能够保证你的技能安全,可靠的运行。
简单直白的讲,小米函数计算降低了技能开发的门槛,让不是工程师出身的你也能参与到技能开发中。

本文是一篇技术贴,让感兴趣的工程师了解小米函数计算为什么在共享资源的情况下,还能保证资源的隔离,提高利用率,非工程师出身的战斗人员如有兴趣,也可以看看~

————————————————————————————————————————————————
小米函数计算是事件驱动的服务器全托管的计算服务,它提供的计算资源的粒度最细,是以函数为单位的,在多租户的环境下,能够最大程度的提高资源利用率,减少浪费。但是,在资源共享的同时,也会带来另外一个问题,即多租户之间的隔离,那么如何保证多租户在共享资源的情况下还能够互不干扰的运行自己的函数,且只能够访问自己的计算或存储资源,就是本文所要探讨和解决的问题。

多租户隔离主要有两方面,一个是计算资源层面的隔离,一个是网络层面的隔离。

先说一下计算资源层面的隔离,计算资源主要指CPU和内存,主要解决的问题是多租户之间的函数能够独立的使用CPU和内存资源,互不干扰,小米函数计算采用了容器技术来实现计算资源的隔离,通过设置容器的CPU和内存来限制函数所使用的资源。

接下来重点介绍一下网络层面的隔离,所谓网络层面的隔离,是指多租户之间的网络是不通的,每个租户只能访问自己的函数,数据库,缓存等资源,而不能访问其他租户的函数,数据库,缓存等资源。

上图展示了函数计算的网络拓扑图,函数计算运行在IaaS主账号的VPC里面,通过VPC Peering和运行在其他IaaS账号VPC里面的数据库,缓存建立网络连接,从而能够保证函数计算是能够访问到数据库,缓存资源的。看到这里,大家可能有些疑问,为什么需要一个中间层的VPC,而不是直接建立VPC对等连接,原因是IaaS提供商每个账号所能建立的VPC Peering数量都是有限制的,为了突破这个限制,支持更多的租户,所以我们增加了中间层的VPC。

通过上述的网络方案,可以保证函数和数据库,缓存之间的网络是互通的,但是还是无法保证租户只能访问自己的函数,数据库,缓存等资源,同时不能访问到其他租户的资源,而这一点在多租户的环境下是尤为重要的。因此,我们在函数运行的容器里面做了一些设置,通过docker exec执行IPTABLES命令,首先拒绝所有的内网访问,然后再设置规则,只允许访问租户自己函数,数据库和缓存所在的子网,从而杜绝不同租户之间的相互访问,在网络层面保证了多租户之间的隔离。




【函数计算系列文章】

扫描二维码,手机查看本帖
发表
最新评论 | 正序排列
只看楼主|楼层直达:
回复