怎么样做一个 SaaS 平台

本贴最后更新于 2766 天前,其中的信息可能已经水流花落

随着互联网的普及和带宽的提升,软件的卖法再也不像以前那样,每个公司都搞个小服务器布置一套了

采用了 sass 平台的方案,对于用户来讲更加的方便

而对于我们这种只会 curd 的程序员来说,又多了很多要学习的地方。

那么 saas 平台架构到底该怎么做呢?,简单来说就是拆解一个巨石模块为很多单一的模块,有人算过如果平均每台 google 服务器的负载,其实非常低,要把那么多的服务器组合起来,才是一个麻烦的事情

根据我的想象和猜测,

第一种: 业务的模块切割

就是把一个大网站的业务拆的很小,每个模块放组个机器(带负载),每个模块一个数据库(带主备)

比如黑客派有 1 亿用户的时候可以把网站按照 登陆,文章,评论,积分,游戏分成好多的子网站,后台还有推送等辅助的模块

相关的技术据说有管理这么多模块(服务)的 Dubbo,zookeeper,有 HBase,redis 这种 kv 数据库等,谁能提供一个比较完整的图呢
数据存储我就不懂了,到底是用数据库路由,还是全部仍在一个可扩展的 kv 数据库?

但我还是觉得有很多不懂的地方,
比如每个模块都是独立的,靠接口交互,那些复杂的关联查询怎么搞,比如评论和用户是两个模块,要知道一个每个月发了多少评论,原来的系统一句 sql 搞定,现在只能搞成两句很大的 sql 做合并了?
还有这种架构是不是只适功能无定制化的需求?对于 crm oa 这样的,是不是不适合用这种,因为定制化意味着每个业务模块都不一样,难道 A 用户访问的是 A1 评论系统,B 用户就能访问 A2 评论系统?

是不是这种方式适合互联网和无区别软件的平台,比如黑客派

第二种:

如果把 solo 做成第一种架构,那么要定制化就非常麻烦了,不是吗

于是我们换一个思路,按照老的方式,我们中心端放很多很多 app,每个 app 有独立的数据库和主机,然后全部一起统一管理,很多多租户系统的做法

比如 solo 的 sass,可以把免费的用户放在一个 web 服务器里,这个服务器里是多租户版的 solo,完全是标准的一个机器(可以带负载),一个数据库,用户多了也可以放 n 组,按照 ip 路由
把收费的,高级的用户分别放在不同规格和容量的 web 服务器里,限制每台的容量,还是用的多租户版的 solo
把高级用户就放在一台机器里,用单机版的 solo

这样每个 app 都是完整的一套程序,要定制化只要替换就行,隔离性十分的好,如此的技术估计是 docker,这样的系统我认为最大的问题是统计,比如所有租户的一些统计数据,排序数据,由于都是分离的,需要每个 app 定时收集数据?

spring cloud 到底是哪一种我还不知道,要研究下,

大家把知道的架构都写出来吧

  • 分布式
    78 引用 • 149 回帖 • 4 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    139 引用 • 441 回帖 • 1 关注
  • SaaS
    7 引用 • 29 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • yangyujiao

    1474442114380

    我们貌似即将开始做微服务。。。 这几天在折腾单点登录。

推荐标签 标签

  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 439 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    77 引用 • 1741 回帖
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    395 引用 • 3408 回帖
  • sts
    2 引用 • 2 回帖 • 146 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    273 引用 • 679 回帖 • 1 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    16 引用 • 53 回帖 • 118 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    172 引用 • 990 回帖
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    207 引用 • 2031 回帖
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 5 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    40 引用 • 40 回帖 • 1 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    333 引用 • 323 回帖 • 71 关注
  • 分享

    有什么新发现就分享给大家吧!

    242 引用 • 1746 回帖 • 1 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 12 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 550 关注
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1398 回帖 • 1 关注
  • V2Ray
    1 引用 • 15 回帖
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    138 引用 • 268 回帖 • 201 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 547 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 3 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 1 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 696 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 628 关注
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 176 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 9 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 420 关注
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 401 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 43 关注