经验分享之会员 SaaS 系统

前言

2018年,这是不平凡的一年;互联网行业的中台战略、会员经济等模式如火如荼,同时也逐渐地走入我们公司每个人的视野。在南海集团的战略规划背景下,当时我所在的公司作为集团的研发中心,承担了对会员 SaaS 系统的建设。很庆幸当时我参与了这个项目,因此也提升了我对 SaaS 模式的基本认知、及技术架构的精进。借此机会,我把这段经历的主要内容分享给大家。

SaaS(Software-as-a-Service),意思为软件即服务,即通过网络提供软件服务。SaaS 平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得 Saas 平台供应商提供的服务。SaaS 是软件的开发、管理、部署都交给第三方,不需要关心技术问题,可以拿来即用。常见的产品有 Gmail、PayPal、淘宝、Shopify。

相关概念:

  1. PaaS(Platform as a Service),是指平台即服务。是一种云计算服务,提供运算平台与解决方案服务;抽象掉了硬件和操作系统细节,可以无缝地扩展。开发者只需要关注自己的业务逻辑,不需要关注底层。提供的服务,例如:操作系统、数据库、中间件、动态运行库等底层软件服务。
  2. IaaS(Infrastructure as a Service),即基础设施即服务。指把 IT 基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式。提供的服务,例如:服务器、存储、网络、CDN 等基础设施。

举个例子,假如要开发一个基于微信小程序商城系统。
IaaS 模式:需要购买服务器,数据库、域名,并且开发小程序商城。
PaaS模式:微信小程序提供云开发服务,免去了服务器、存储、域名等,只需开发程序即可。
SaaS 模式:微信提供商城程序,只需开通即可。

二、会员 SaaS 系统

架构示意图

架构描述

  1. 主控端分为租户系统、平台系统。
  2. 租户系统管理该租户下的数据及子系统,例如:会员数据、积分数据等。
  3. 平台系统管理所有的租户,例如:租户的创建、初始化、服务控制等。
  4. 每个租户以系统套件的方式,部署在 K8s 集群服务中;每个组件都容器化运行。
  5. 每个租户系统套件,都被服务调度系统管理和约束;且定期做服务健康检查。
  6. 每创建一个新的租户,服务调度系统会自动构建、部署新的租户系统套件,包括:组件的部署、数据库的创建等。
  7. 每个租户的数据都是单独的数据库进行存储,定期会被同步到大数据中心仓库。
  8. 每个租户的客户端,可以直接通过子域名调用到租户系统套件服务。
  9. 子域名的配置,是通过域名泛解析的方式实现;可直接解析到指定的套件系统上。

租户数据隔离模式

模式一:每个租户一个数据库
每个租户配置一个独立的数据库。

优点:

  • 数据隔离级别高、安全性好。
  • 简化数据模型,可满足不同租户的特定需求。
  • 某个租户出现故障,可快速回滚。
  • 便于支持私有化部署。

缺点:

  • 数据库数量多,维护成本及数据库费用成本高。
  • 设计、实现的难度比较高。

模式二:租户共享数据库,隔离数据结构
多个租户共享一个数据库,每个租户一个数据表,例如:tenant_a、tenant_b。

优点:

  • 逻辑数据隔离,每个数据库可支持多租户。
  • 硬件成本相对较低。

缺点:

  • 数据库出现故障,恢复难度大;会对其他的租户数据造成影响。
  • 跨租户进行数据统计会变得复杂。

模式三:租户共享数据库,共享数据结构
多个租户共享一个数据库,且共用一个数据表,通过租户 ID tenant_id 区分。

优点:

  • 硬件成本低。
  • 理论支持租户数量最大、运营成本相对较低。

缺点:

  • 数据隔离级别最低、安全性最低。
  • 数据恢复难度最大、备份数据困难。

小结:

  1. 模式一,称为桶模式;模式二、模式三,称为池模式。
  2. 数据的安全性要求极高的业务,或属于政府监管类的系统,最好是采用模式一。
  3. 成本控制比较严、预算有限的业务,可采用模式二、三。
  4. 当时我们公司的架构师在 Info Q 的《深圳全球架构师峰会》上与嘉宾还讨论了关于数据存储模式的问题。

安全策略

  1. 系统部署方面,尽量选择有基础保障能力和安全防护能力的云平台;云平台相对于普通的 IDC 机房来说,具有高可用性、安全性及弹性扩容的优势。
  2. 服务器运维方面,建立运维审核机制、安全堡垒机、访问控制、防攻击策略等。
  3. 租户系统方面,支持双因子认证、增强密码复杂度、提升验证码破击难度等。

总结

  1. 对于 Saas 系统的客户来说,客户比较关心自己的数据能不能得到有效的保护。
  2. 数据存储方式的选型上,在系统的设计之初需要着重的权衡。
  3. 服务调度及监控系统,在 SaaS 系统中尤为重要,是系统稳定性的根本保障。
  4. SaaS 系统需要具备一定的安全防护能力,来保障客户的服务、数据的安全。
  5. SaaS 系统是项长期工程,需要逐步的迭代和演化。

结束语

人生的每一段经历,可以很简单、很平凡;但是需要有一定的有收获,无论大与小,无论好与坏;会员 SaaS 系统的建设,使用到了很多的技术栈、技术架构。因对我来说收获颇多,扩充了我的技术视野。希望这次分享,可以让大家对 SaaS 系统有一些了解。

每一次的总结,是为了下一次更好的开始;与君共勉,感谢大家聆听!


欢迎关注、分享、点赞、收藏、在看,我是微信公众号「码农先森」作者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/862645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【小程序静态页面】猜拳游戏大转盘积分游戏小程序前端模板源码

猜拳游戏大转盘积分游戏小程序前端模板源码, 一共五个静态页面,首页、任务列表、大转盘和猜拳等五个页面。 主要是通过做任务来获取积分,积分可以兑换商品,也可用来玩游戏;通过玩游戏既可能获取奖品或积分也可能会消…

赛盈分销谈烧烤市场的未来,论创新与差异化出海的重要性!

过去几年里,海外旅游市场格外热闹,不仅景点火爆,露营烧烤活动也更加频繁,而这也催生了烧烤设备的市场增长。 全球烧烤用具市场在去年就达到了265.8亿美元,同比增长20.3%,Statista数据预测到2027年将超过515…

MySQL事务——Java全栈知识(31)

1、事务的特性 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。 隔离…

typescript学习回顾(四)

今天来分享下ts中的类,关于ts中的类的概念,面向对象的一种思想,以及类里面的一些属性成员,一些基础的用法,后面会有一个小练习。 类 基本概念 我的理解:类是编程语言中面向对象的一种思想,一…

ChatTTS超真实自然的语音合成模型

项目介绍 ChatTTS是一款专为优化对话场景而生的语音生成模型,尤其匹配大型语言模型(LLM)的交互需求,以及生成对话式音频、视频旁白等应用场景,无缝覆盖中英文双语。 通过汲取约100,000小时的高质量中英语音数据进行深…

RedHat9 | podman容器

1、容器技术介绍 传统问题 应用程序和依赖需要一起安装在物理主机或虚拟机上的操作系统应用程序版本比当前操作系统安装的版本更低或更新两个应用程序可能需要某一软件的不同版本,彼此版本之间不兼容 解决方式 将应用程序打包并部署为容器容器是与系统的其他部分…

鸿蒙北向开发 ubuntu20.04 gn + ninja环境傻瓜式搭建闭坑指南

ninja跟gn都是比较时髦的东西,由歪果仁维护,如果走下载源码并编译这种流程的话需要走github跟google官网下载,国内的用网环境相信各位傻瓜都知道,github跟google这几年基本是属于连不上的状态,好在你看的鸿蒙项目跟国内的一些软件大厂已经帮你爬过梯子了,ninja工具跟gn工具已经…

一文弄懂梯度下降算法

1、引言 在上一篇文章中,我们介绍了如何使用线性回归和成本损失函数为房价数据找到最拟合的线。不过,我们也看到,测试多个截距值可能既繁琐又低效。在本文中,我们将深入探讨梯度下降算法,这是一种更加强大的技术&…

go~缓存设计配合singleFlight

一个缓存设计,配合go的singleFlight 最开始的设计如下 添加分布式缓存 上线后分布式缓存上涨的流量并不等于下游下降的流量,而是下游下降的流量 * 2~3 究其原因,就是采用了go的singleFlight,假定请求缓存时长10ms&a…

学校消防巡检二维码卡如何使用

为了加强和规范学校消防安全管理,预防和减少火灾危害,保障公共财产和教师、职工、学生的生命安全;传统的学校消防巡检都是纸质巡检记录会存在浪费纸张、信息滞后、容易造假、容易丢失、信息更新不及时。 通过凡尔码平台生成学校消防二维码巡…

揭秘:国产化系统加密

随着信息化时代的到来,数据安全已成为国家、企业和个人共同关注的焦点。政府系统国产化作为提高信息安全和自主可控能力的重要举措,正逐步得到广泛实施。在这一过程中,沙箱技术作为一种先进的安全机制,其在国产化系统加密效果方面…

系统设计中的垂直扩展和水平扩展,该如何选择?

在系统设计时,我们需要预估系统的容量,但是,随着系统流量的增大,我们会通过扩容来应对流量,常见的扩容方式是垂直扩展和水平扩展,因此,这本文章,我们将深入探讨这两种扩展策略的优缺…

项目管理中常见的6种度量指标,你知道吗?

在项目管理中,为了有效地监控和控制项目的进展、成本、质量等方面,我们通常会采用一系列的度量指标。这些度量指标不仅可以帮助项目经理了解项目的当前状态,还能预测未来的趋势,从而作出相应的决策。以下是六种常见的项目度量数据…

AI产品活跃用户排名出炉!文心一言APP国内第一,Kimi疯狂掉队

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 6月28日,极光大数据旗下月狐数据发布2024年5月中国生成式AI行业市场热点月度分析报告,披露了国内移动端主流生成式AI应用…

BFS:队列+树的宽搜

一、二叉树的层序遍历 . - 力扣&#xff08;LeetCode&#xff09; 该题的层序遍历和以往不同的是需要一层一层去遍历&#xff0c;每一次while循环都要知道在队列中节点的个数&#xff0c;然后用一个for循环将该层节点走完了再走下一层 class Solution { public:vector<vec…

AUTOSAR以太网之IPv4

系列文章目录 返回总目录 文章目录 系列文章目录一、IPv4报文格式二、主要函数1.IPv4_Init()2.IPv4_Receive()3.IPv4_Transmit() 一、IPv4报文格式 二、主要函数 1.IPv4_Init() 这个函数除了对模块配置进行初始化&#xff0c;如果有分包和组包使能&#xff0c;则会对一些相关…

桌面提醒工具哪个好?简单好用的便签提醒app推荐

在日常的生活和工作中&#xff0c;我们经常会遇到各种各样的事情&#xff0c;有时候可能会遗忘一些重要的事情。这个时候&#xff0c;一个简单好用的便签提醒工具就显得尤为重要了。那么&#xff0c;哪款桌面提醒工具比较好用呢&#xff1f;下面&#xff0c;就为大家推荐一款我…

ONNX模型利用CUDA加速如何正确配置好环境?

目前onnx可选的执行引擎非常多&#xff0c;覆盖了从cpu、gpu到npu&#xff0c;从Intel平台到AMD平台等。如下是onnxruntime所有的执行引擎。 [TensorrtExecutionProvider, CUDAExecutionProvider, MIGraphXExecutionProvider, ROCMExecutionProvider, OpenVINOExecutionProvide…

基于公有云部署wordpress

云平台选择 腾讯云 阿里云 华为云 项目部署 一、架构讲解 1.1、定义与组成 LNMP是Linux、Nginx、MySQL&#xff08;或MariaDB&#xff09;和PHP&#xff08;或Perl、Python&#xff09;的首字母缩写&#xff0c;代表在Linux系统下使用Nginx作为Web服务器&#xff0c;MySQL作为…

Mongodb安装与配置

Mongodb的下载 这里下载的是MongoDB 7.0.11版本的 首先进入官网&#xff1a;https://www.mongodb.com/ 点击完上面两步后&#xff0c;加载来到该页面&#xff0c;选择自己的版本、系统&#xff0c;是压缩包(zip)还是安装包(msi)。 下载好之后能&#xff0c;来到安装包哪里&a…