经验分享之会员 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.rhkb.cn/news/363407.html

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

相关文章

一个人 三个月 干了二十万

相信很多人是被这个标题吸引进来的,但我并不是标题党,我也很讨厌标题党,这篇文章也不在乎流量,更多的是想记录下。 出来创业三个多月了,给大家汇报一下这段时间的业绩吧。一个人,三个多月,干了…

北邮《计算机网络》传输层笔记

内容一览 缩写复习单词复习传输层前言传输协议的要点拥塞控制UDPTCP VS UDPTCP 缩写复习 AIMD XCP ECN WFQ max-min-fair ARQ PAWS TSAP NSAP TCP UDP RTT SCTP SACK NAK RST MSS 单词复习 inverse multiplexing(SCTP) convergence crashed machine protocol scenarios asym…

针对VMWare无法使用鼠标功能键问题

在使用 VMWare 虚拟机的Ubuntu系统时发现无法使用许多鼠标带有额外的功能键,比如常用的前进后退,但是双系统中的Ubuntu没有问题,后来一搜发现是,虚拟系统中不支持这些功能键。因此我们对这个问题进行了解决。 解决方案 1.找到自…

bable 【实用教程】

简介 bable 用于将 ES6 的语法编译为 ES5 只关心语法,不关心 API 是否正确。不处理模块化(webpack 会处理) 搭建开发环境 安装相关的包 npm i babel/cli babel/core babel/preset-env新建文件 .babelrc,内容为 { "presets…

已解决javax.transaction.InvalidTransactionException:事务无效的正确解决方法,亲测有效!!!

已解决javax.transaction.InvalidTransactionException:事务无效的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 1. 确保事务的正确启动和结束 Spring中的事务管理 2. 避免嵌套事务问题…

Linux显示服务器Wayland切换到X11

1、临时切换 : 注销当前用户账户,返回到登录屏幕。 在登录屏幕上,选择您要登录的用户账户。 在输入密码之前,在登录屏幕的右下角可能有一个齿轮图标,点击它以展开更多选项。 在选项中选择“Ubuntu on Xorg”或“Ubu…

【uml期末复习】统一建模语言大纲

前言: 关于uml的期末复习的常考知识点,可能对你们有帮助😉 目录 第一部分 概念与基础 第一章 面向对象技术 第二章 统一软件过程 第三章 UML概述 第四章 用例图 第五章 类图 第六章 对象图 第七章 顺序图 第八章 协作图 第九章 状态…

【应用开发二】GPIO操控(输出、输入、中断)

1 操控GPIO方式 控制目录:/sys/class/gpio /sys/class/gpio目录下文件如下图所示: 1.1 gpiochipX目录 功能:当前SoC所包含的所有GPIO控制器 i.mx6ull一共包含5个GPIO控制器,分别为GPIO1~5分别对应gpiochip0、gpiochip32、gpi…

基于java语言+springboot技术架构开发的 互联网智能3D导诊系统源码支持微信小程序、APP 医院AI智能导诊系统源码

基于java语言springboot技术架构开发的 互联网智能3D导诊系统源码支持微信小程序、APP 医院AI智能导诊系统源码 一、智慧导诊系统开发原理 导诊系统从原理上大致可分为基于规则模板和基于数据模型两类。 1、基于规则推理的方法通过人工建立症状、疾病和科室之间的对应规则实现…

【uniapp】uniapp开发微信小程序入门教程

HBuilderx中uniapp开发微信小程序入门教程 一、 环境搭建 1. HBuilderx下载安装 HBuilderx下载安装地址 2. 微信开发者工具下载安装 微信开发者工地址具下载安装 二、创建uniapp项目 选择:文件>新建>项目>uni-app 输入项目名称>选择默认模板>…

GPT-5

欢迎来到 Papicatch的博客 文章目录 🍉技术突破预测 🍈算法进步 🍈理解力提升 🍈行业推动力 🍉人机协作的未来 🍈辅助决策 🍈增强创造力 🍈复杂任务中的角色 🍈人…

Unity | Shader基础知识(番外:模型的制作流程)

目录 一、前言 二、模型的诞生 三、模型的表面 四、模型的贴图 五、上完材质的模型 六、材质的来源 七、作者的碎碎念 一、前言 up发现,初学程序,除非你是美术,模型出生,要不然对这些都是萌萌哒(蒙蒙哒&#x…

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

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

十步学习法,赋能程序员

大家好,我是码农先森。 引言 最近看了《软技能:代码之外的生存指南》这本书,对其中的 “十步学习法”。 有一些感触,所以将其中的内容记录并总结了下来,分享给大家。 程序员在学习成长的过程中,除了关注…

MySQL高级-SQL优化-小结

文章目录 1、insert 优化2、主键优化3、order by 优化4、group by 优化5、limit 优化6、count 优化7、update 优化 1、insert 优化 insert:批量插入、手动控制事务、主键顺序插入 大批量插入:load data local infile 2、主键优化 主键长度尽量短、顺序插…

unity 导入的模型设置讲解

咱们先讲Model这一栏 Model Scene:场景级属性,例如是否导入灯光和照相机,以及使用什么比例因子。 Scale Factor:缩放因子(也就是模型导入后大小如果小了或者大了在这里直接改是相当于该模型的大小的,而且在…

如何打造安全DNS以保障业务可用?一文解读

DNS自1987年被实施以来,已成为网络通信中最重要的核心基础设施,同时也是企业对外提供数字服务的关键。没有正常安全的DNS服务,企业经营也就无从谈起。在DNS攻击逐年上升且容易被忽略的现代应用时代,如何打造安全DNS?本…

LLaMA2模型训练加速秘籍:700亿参数效率提升195%!

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID | 计算机视觉研究院 学习群 | 扫码在主页获取加入方式 开源地址:https://github.com/hpcaitech/ColossalAI 计算机视觉研究院专栏 Column of Computer Vision Ins…

mov和mp4区别是什么?苹果的原创和时代的宠儿

在数字媒体领域,视频格式的选择往往决定了观看体验的质量和文件的兼容性。在众多视频格式中,MOV和MP4无疑是最具代表性的两种,它们分别承载着苹果和互联网世界的技术革新与历史变迁。本文将带您穿越时间的长廊,探索MOV与MP4的发展…

嵌入式Linux的浮点运算能力测试

嵌入式Linux的浮点运算能力测试 今天需要对一款ARM CPU的浮点数运算能力进行测试,采用了台式机上常用的SuperPI相同的原理:计算一定小数位数的圆周率来测试硬件的浮点数计算能力和稳定性。 首先下载计算软件的源代码,可以使用下面命令&#…