当前位置:网站首页>路特软件戚俊:云原生助力SaaS类业务租户高效隔离
路特软件戚俊:云原生助力SaaS类业务租户高效隔离
2022-07-13 17:14:00 【CSDN云原生】

嘉宾 | 戚俊 整理 | 吴林锋
出品 | CSDN云原生
2022年6月21日,在CSDN云原生系列在线峰会第10期“华为云HCDE专场暨分布式技术峰会”上,南京路特软件CTO戚俊针对云原生如何帮助SaaS类业务租户高效隔离进行了分享。

租户隔离的层级
不论是SaaS类或是PaaS、IaaS类的厂商,租户隔离都是一个恒久的命题。从早期机房IDC时代到云计算时代、云原生时代,租户隔离一直扮演着商业模式命题人的角色。不同的隔离方式、隔离层次都会使商业模式发生改变。

IaaS层是最早的云厂商的初始阶段,它主要隔离所有用户的存储、算力、带宽、流量等,中后期的PaaS层隔离专用的服务池、服务的数量等。如今的SaaS层隔离的则是对展现量、数据量、用户量等进行隔离。我们会发现,从下向上距离数据越来越远,距用户越来越近。
为什么要做租户隔离呢?
在数据智能化改造的过程中,如果业务太过离散,公司的运营成本难以降低。当客户的服务成本变高后,公司也不能保证长期地为客户生产价值。所以在这样的背景下,服务厂商想尽一切办法节约成本、压缩预算,同时又要保证给客户带来更好的服务、更优秀的技术以及更好的用户体验。所以业务的集中化和规模化就显得尤为必要,与之而来就产生了租户隔离的需求。
业务集中化和规模化优势
我们因为“业务集中化和规模化”而产生租户隔离的需求,那么“业务集中化和规模化”会带来哪些优势呢?主要有以下四点。
降低运维成本。所有的业务在同一个系统环境下、网络环境下,从而降低了业务部署和运维的复杂程度、运维人员数量和成本。
加强数据汇聚能力。集中化天然带来数据的强汇聚属性,可以直接在业务层完成数据的汇入,也可以在底层进行统一收集,更好的建设自己的数据仓库。
强化敏捷开发效能。因为不存在环境差异性,所以在开发过程中没有历史包袱,能够更好地规划迭代和提高开发效率。
削峰填谷减低业务成本。通过集中资源配置,形成具有一定规模的资源池。单个业务很难触摸到资源/性能天花板,从而可以用更少的成本支撑更多的业务。
通过租户隔离改变原本的商业模式,也带来以下三个收益点。
收费分级。租户隔离后进行精准计费,从而实现相同业务、不同体量的租户支付不同的费用。
服务分级。针对不同体量的租户开通不同的功能清单、服务清单,实现相同业务、不同租户所用功能的差异化。
个性化增值。围绕不同租户的留存数据进行个性化的增值服务,比如:个性化分析、智能推荐、 BI服务等。
租户隔离的难点
难点1:业务波动难以控制
在构建租户隔离模式时,最常见的一个问题是业务波动难以控制。举个例子:我们将客户的业务部署上云,使用同一套服务器集群部署。由于每个用户业务的用量都较为均匀、容易估算,所以其平时用量和持续用量均具有记录的临界点。
一旦遇到突然的实时热点爆发,内容生产及传播操作会变多。这种情况会使业务用量的峰值瞬间提升,产生业务波动,并且无法提前预测。
针对此种情况,我们提炼了一个公式:每个租户(P)的基准用量(A)为1,资源(R)提供量为10,支持10个租户的业务。
R = A * P
但“按比例超售(U≤1)”是几乎所有平台厂商的利润来源之一,所以我们实际支撑了15家客户,因为不可能所有用户的用量同时“打满”,从而产生了差价,也就是利润。
R = A * P * U
在这个模式下,最显著的问题是:当U的值越接近A,风险越小,当U的值负偏离A越多,风险越大。所以如何评估U的值,是平衡风险与收益的要点,也是我们在构建租户隔离模式上遇到的第一个难点。
难点2:无法实现精准计费
在构建租户隔离模式上,我们碰到的第二个难点是无法实现精准计费。
举个例子:假设我们的系统是一个SaaS化的电商平台,承载了成千上万家店铺,每家店铺都会在平台上存图片、视频、商品信息,产生数据存储的同时也会因为用户来访问而产生带宽跟流量成本。同时,每一家店铺每天会产生不同的用户访问量、不同的业务压力。
那么在这种情况下,我们应该如何获取每一家店铺的数据存储成本?业务压力成本?每天、每月、每年的流量带宽成本呢?
若能精确获取以上数据,不但可以帮助我们分析用户在店铺中是否做了正向产出,还可以分析每一家店铺所消耗的公司的成本,以此帮助公司完成更详尽的商业决策,这是我们遇到的第二个难点。

云原生时代给我们带来了什么
云原生时代,我们通过容器技术来改造业务。因为容器技术的广泛运用,我们拥有了:
更细的资源颗粒——可以在原本的VM级之下再细分一层资源;
更标准的交付产物——容器镜像的出现,树立了新的交付标准;
更简单的部署模式——容器部署脱离了环境制约,简化了部署流程。
随着容器编排及管理技术的提升,我们拥有了:
分布式业务架构——通过容器集群模式实现业务分布于多机,真正做到业务的均匀;
弹性缩扩容策略——无状态的业务可以动态响应缩扩容策略,快速适应业务节奏;
业务模板式创建——通过容器编排模板,可以快速部署一整套业务。

通过云原生架构改造隔离逻辑
业务承载方面:从单一业务系统承载改造为按租户区分,部署不同的无状态容器服务组。
数据层面:从单一对象存储存放改造成按租户去区分,不同的Bucket或在Bucket中开辟不同租户的前缀去进行存储。
流量分析方面:原本是集中入口,无论是单机部署还是多机部署,其流量入口都是统一的,集中入口没有办法分析不同租户的流量情况。通过K8s集群负载区分不同的域名来路,并汇聚访问日志到大数据平台进行分析。

操作方案——平抑业务波动

之前的难点中,我们分析了大多数SaaS业务出现业务波动的原因在于“超售”导致的资源无法及时响应的问题,并得到以下公式:
R = A * P * U
上面公式中的“P(租户数量)”、“ U(超售比例)”是无法改变的。那么我们的思路就是:
使用容器集群承载我们的业务,比如使用华为云的CCE服务构建或管理Kubernetes(K8s)集群;
通过部署容器监控服务,监控“A(租户基 准用量)” ;
当一定比例的租户用量大于阈值时,触发容器集群扩容;
通过容器调度策略,自动均匀排布容器到各节点,实现波动平抑。
有两种方式在华为云上进行业务资源弹性缩扩容,实现平抑业务波动。
第一种是使用华为云CCE自带的“节点弹性缩扩容”功能,第二种是结合华为云的AOM+AOS服务,实现对自建K8s集群进行缩扩容。

方式一: 针对华为云上的CCE容器集群,可以直接使用CCE自带的“节点弹性缩扩容”功能进行CPU及内存分配量指标监控进行节点缩扩容。
缺点:只能按CPU/内存的分配量进行缩扩容,不对业务实时资源消耗进行缩扩容,应变能力差。
方式二:针对业务过程中的突发性能问题导致的扩容,需要使用华为云AOM服务实时监控集群资源的占用情况,在到达阈值后触发AOS服务进行集群节点按模板扩容。
缺点:需要自己编写AOM+AOS+CCE弹性脚本。

操作方案——实现精准计费
在之前的难点中,我们想要清楚地知道每一家店铺的数据存储成本,业务压力成本,每天、每月、每年的流量带宽成本,从而帮助公司去实现商业决策,具体的操作思路如下。
使用容器集群承载我们的业务,比如Kubernetes(K8s)。
按租户区分,部署不同的无状态容器服务组,不同的租户级使用不同的资源量级。容器架构可以很好地进行限制。
按租户区分,不同的Bucket或在Bucket中开辟不同租户的前缀进行存储,收集对象存储的用量日志到大数据平台。
在K8s的Ingress层开启全量日志,区分不同的域名来路并汇聚访问日志到大数据平台。
最终在大数据平台进行离线分析,实现T+1级别的用量统计。

根据上述思路,我们使用华为云相关服务构建我们的精准计费能力,主要涉及到的服务有:OBS、ELB、LTS、DGC这4个服务,需要通过流程将这几个服务的数据串联起来,并进行计算。
边栏推荐
猜你喜欢
随机推荐
数字孪生解决方案为化工园区建设注入新动能
(PC+WAP)织梦模板课程培训类网站
指针存储数组 C
谷歌、斯坦福联合发文:我们为什么一定要用大模型?
Introduction to C language compiler
数字孪生技术打造智慧矿山可视化应用
驾照科目一常考知识点
7万美金干到2个亿,这个江西女老板要IPO了
Knowledge points of driving license subject
【面试:并发篇12:多线程:线程八锁】
opencv的实战学习之信用卡识别(四)
See how Google uses pre training weights in target detection tasks | CVPR 2022
Paste source layer and history layer of data warehouse system
Detailed explanation of C language custom types - structure, enumeration, union
1252. 奇数值单元格的数目 : 简单计数模拟题
激活函数
[底层原理]Socket 究竟是什么? 为啥网络离不开 Socket?
Interesting and important JS knowledge collection (13) call/apply/bind source level implementation
明解C语言第三章习题
快速教你如何搭建数据驱动自动化测试框架?











