摘要:本文是作者本人应邀参加本届全球架构师峰会中的演讲总结精华。

背景介绍

SaaS、PaaS、IaaS等云服务模式已经被大家普遍认可,在研发过程中借力一些PaaS和SaaS平台,能够提升产品的研发速度和功能稳定程度。本文将通过真实的商业平台案例-MaxWon研发实战,分享一下我们在项目研发过程使用SaaS和PaaS服务的技术要点和心得。
MaxLeap是一个为企业提供移动业务研发与运营的一站式云服务平台,提供云数据库、云容器、云代码等PaaS服务,云支付、云即时通信、云社交、云分析、云参数、推送营销等SaaS服务。

案例介绍

先介绍实践的案例,MaxWon一站式移动营销平台,案例有如下特点。

快速搭建全网营销平台

能够提供20多个营销模块灵活组合,个性化配置风格和首屏,一键生成App + 微信商城 + PC网站。

全网多渠道营销

能够让营销人员同时在App,微信商城,手机网站,PC网站平台展开营销,提升企业的业绩。

一站式管理,最小运营成本

有统一后台,同时管理多端营销,使用最小人员配置,获得最大运营效率。

数据驱动运营

提供多维度运营分析,快速反馈运营效果,数据驱动高效运营。

精准营销,高效转化

大数据分析全面洞悉客户消费行为,精准广告投放,提升销售转化。

案例模型

整个案例项目由“三端四平台”组成。“三端”指创作端、管理端和服务端。创作端负责生成各个平台应用,包括Android、iOS、网站、微官网。管理端用于管理应用、用户、权限,
管理后台数据和重要的信息设置等。服务端提供移动应用和后台管理所需的所有的API接口。“四平台“指iOS、Android、微信和移动官网。商户通过创作端生成各端应用和网站,营销和管理人员通过管理端运营和管理后台数据,
形成了制作、运营、营销的闭环。

接下来我们一起梳理下功能需求。创作端需要包含模板管理、布局管理、配置管理、构建应用等功能。管理端需要包含用户组织、权限、账户、数据、设置管理等功能。
组件服务部分,需要提供三大类别的服务,覆盖电商、设计、营销领域的二十多个功能组件。

接着梳理下架构上的需求,着重从数据和服务两个角度来看。数据对于商户至关重要,也是用户最关注的点,因为是多租户系统,商户的数据首先要做到隔离,并且当商户规模不断扩大时能够支持不断的扩容,
对于个别商户有数据迁出需求的也需要满足。服务是另外一个要点,如何在确保商户间服务不相互影响的前提下,合理控制资源,降低用户成本,是我们面临的挑战。服务需同时支持多租户共享模式、单租户独享模式、私有部署。

其它方面也有些要求,时间上,需要3个月左右上线运行,上线后能够快速迭代新功能。安全上,要支持数据容灾、传输加密、防止一些基层的网络攻击。

方案介绍

了解完需求后,就是方案选型阶段。实现这样的SaaS系统面临两种选择,一种方案是所有功能独立研发,保障整个系统的可控和灵活性。另一种方案是借力PaaS或者SaaS服务,提高研发速度,利用SaaS/PaaS的自适应、安全、专业等优势,降低研发难度和成本。

确定实施的最终方案如图所示,独立研发部分包括,创作端、管理端和服务端的多数电商类服务。确保核心业务系统的灵活性和可控程度,这部分功能的特点是业务具体、需求繁琐、定制性比较强。通过调用后发现,没有成熟的方案能直接满足项目需求,
并且这部分需求也会根据市场反应做出适当调整,因此保证研发的灵活和可控度非常重要。
使用的SaaS服务包括,即时通讯、推送、支付、客服系统、统计分析和社交/圈子等,这部分功能的特点是需求广泛存在,也有公认统一比较成熟的解决方案,单独实现却要花费不小精力,并且通用和扩展性很难做到非常成熟的程度,通过集成第三方SDK和API接口能够满足研发需求。
使用的PaaS服务包括,MySQL云数据库、MongoDB云数据库,使用统一的数据访问层,研发人员可以无需考虑数据库的底层架构、可用性、扩展等问题,完全透明,将精力专注在项目研发即可。

整体架构如图,研发重点为蓝色部分,MaxWon的API层和业务逻辑层。API层整合MaxWon的服务和MaxLeap的SaaS服务,实现具体接口功能,提供给各个终端,主要是各种接口业务实现,工作量大、业务需求多。
MaxWon的服务层,整合MaxLeap PaaS和SaaS的功能,并实现具体的业务需求。基础存储、缓存、全文检索、大数据计算由MaxLeap云的PaaS和SaaS服务提供。从架构图中可以发现,PaaS服务标准化了MongoDB、MySQL、缓存、队列等复杂的存储系统,
SaaS服务封装了大数据计算,Hadoop、Spark等复杂的计算系统。整个项目在实现的过程中,专注于业务模块的研发即可,节省了去研发、研究这些基础组件的时间和资源。

关键设计

为什么存储能够做到隔离、扩展

先看架构图,我们的数据库服务器主要采用两种。事物依赖或者强一致性要求的数据,用MySQL来存储。用户的数据库访问请求经过负载均衡和代理,到达目标数据库服务器和对应DB。
MySQL和MongoDB均是类似,差别在于MySQL和MongoDB的集群组织方式差别比较大。MySQL采用主备读写分离方式,我们通过MHA实现集群的高可用和Master节点的监控、故障自动转移,大型应用采用代理加数据分片。
MongoDB采用复制集方式,一个集群的最小组成是一个Master节点、一个Slave节点和一个Arbiter节点,通常情况下Master承担读写任务,通过oplog保证数据的最终一致性,Slave和Arbiter保证了系统的高可用和故障自动转移。
大型应用采用Mongos、MongoConfig和数据分片方案。
设计上遵循三个设计原则:第一个原则,一应用一库;第二个原则,一库一账户;第三个原则用户需求分级。通过分库将数据在物理上隔离,且方便扩展和迁移。
通过一库一账户原则,区分数据的访问权限。通过用户需求分级,规模比较小的用户可以共享数据库服务器资源,规模慢慢增大时,可以独享资源,继续增大是可以独享更多的服务器资源。

PaaS服务对数据接入进行了抽象。商户规模小的时候,使用共享的数据库资源,通过代理层控制数据请求的服务器,规模慢慢扩大后,使用独立的数据资源。我们通过自研的数据迁移工具,实现数据的平滑迁移。
MySQL实现的代理叫Circe,完全兼容MySQL5.7版本协议。MongoDB代理叫Pandora,兼容MongoDB3.0以上协议。在数据代理层实现了数据访问路由,鉴权,Metrics采集,流控能力,能够支持共享、独享、定制多种部署模式支持迁出。

和主流PaaS的云数据库对比

以AWS的RDS为例,资源申请以RDS实例数为单位,每个RDS是由两个配置相同的EC2实例以及运行在EC2上的主备数据库组成,在成本上也是按照两台EC2响应配置的主机来计算。如果做到应用间数据和权限的隔离,并且对应用代码透明、无侵入,
需要每个应用单独申请一台RDS。这样做显然能达到隔离的效果,但是成本也有点高。

相比之下,MaxLeap的云数据源,以应用为单位,在物理和访问权限上进行隔离,应用A和B规模较小,可以使用公共服务器,但是数据和访问权限独立。应用C规模一般,使用独立的数据服务器资源。应用X规模很大,可以根据需求定制集群方案。

因此,云数据源在成本和灵活性上有很大优势,小规模时期,使用共享资源,降低成本,中、大规模时变更为独享,甚至使用集群方案。

为什么服务能够做到隔离和扩展

架构图中,用户请求经过负载均衡器和网关,到达目标服务的容器,同一个服务为由多个无状态的容器组成,达到负载均衡和水平扩容的目的,通过Docker容器技术处理服务间的资源隔离,Docker的资源隔离使用了Linux Kernel中的Namespaces功能。
Namespaces主要是通过Linux的clone内核调用来使用,根据传入的不同参数组合来启用对应的Namespace隔离。通过cgroup控制不同Container之间抢夺CPU、IO、磁盘等资源。
可扩展性通过网关和容器技术同时保障,小规模的应用共享服务资源,规模扩大后可以启动独立的服务,并可以根据场景决定需要的资源数量。网关会根据用户的设定,动态路由请求到对应容器实例。
整个Docker容器环境,基于Mesos构建,Mesos是Apache基金会下的集群资源管理工具,它通过抽象主机的 CPU、内存、存储等计算资源来搭建一套高效、容错、弹性的分布式系统。Mesos生态本身支持水平无线扩展,通过Marathon对容器的资源调度进行管理。
Marathon是Mesos生态圈里的一个轻量级、扩展性很强的调度long-running service的调度框架。支持RESTful api来创建和管理app,自动为app做容错迁移,凡是能用shell起的任务,理论上都可以通过Marathon在Mesos上简单地启动和管理起来。
从底向上,IaaS层、Mesos层、Docker层,每层都可以水平扩展。

对架构进行总结和梳理。整个服务基于Docker容器构建,达到资源隔离、快速扩展的特性,Docker容器基于Marathon和Mesos构建,管理、调度、监控、Failover等方案成熟,
支持水平扩展。网关支持服务的路由。整个架构支持多租户共享服务和独享模式。

安全设计也非常重要。网络通过https对请求进行加密,针对DDOS对整个网络基础架构进行了部署,VPC内部对防火墙进行规划。服务中对不同级别的请求进行分级和鉴权操作,
服务针对不同领域进行了拆分,在设计和部署上相互独立。对敏感数据加密、数据访问支持ACL、应用分库物理隔离、每个度权限独立,访问隔离。业务数据进行容灾备份。

总结

基于MaxLeap一站式研发和云平台之上,构建MaxWon云平台,在短短的3个月,产品第一个版本上线,稳定运行至今。有效解决掉了隔离和扩展问题,降低运维团队的压力。MaxWon现在支持20多个营销模块的自由组合,
更多模块快速研发中,支持电商、社交、教育、餐饮等多个行业,支持上千家商户的稳定运行。

责编:我们将在微信公众号MaxLeap_yidongyanfa中公开演讲视频分享,敬请期待。


---------END---------

相关阅读
微服务系统中的服务发现机制
移动云平台的基础架构之旅(一):云应用
移动云平台的基础架构之旅(二)- 云代码篇

作者信息

作者系力谱宿云 LeapCloud 团队_云服务负责人:秦鹏【原创】

现任LeapCloud服务与架构部负责人,负责公司云平台、云应用的后端研发和维护工作。有多年分布式、高并发场景的实战经验;目前在分布式存储、缓存、中间件、容器技术、微服务、公有云等领域均有涉猎。毕业于上海交通大学,曾供职于SAP,后投身MaxLeap致力于为开发者提供快稳定、可靠的云服务。

力谱宿云 LeapCloud 团队首发:https://blog.maxleap.cn/archi...

作者译作:
微服务实战:从架构到发布(一)
微服务实战:从架构到发布(二)
从应用到平台 – 云服务架构的演进过程

欢迎扫以下二维码,关注微信公众号:MaxLeap_yidongyanfa

基于PaaS和SaaS研发的商业云平台实战 - 精华篇相关推荐

  1. 基于ShineBlink物联网开发板和机智云平台开发的“针对短期内宠物无人照顾的智能宠物屋”系统

    正式介绍作品前先说明一下,我是湖南文理学院计算机与电气工程学院的一名大三学生,我叫陈海涛.作品全部内容均为个人创意.个人设计并手工制作,后期会考虑写论文投期刊,So!!严禁抄袭!抄袭必究! 该作品是用 ...

  2. SWIFT PLM 介绍|基于微服务架构的Swift PLM云平台

    基于微服务架构的Swift PLM云平台 1.       Swift PLM 云平台基于微服务架构 杰信软件公司致力于一系列基于PLM系统的实施及二次开发的解决方案,并在近期取得巨大进展,自主研发了 ...

  3. 精品基于SSM的小学生课程资源网络云平台

    <基于SSM的小学生课程资源网络云平台>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 使用技术: 开发语言:Java 框架:ssm 技术:JSP JDK版本:JD ...

  4. 基于物联网网关的电表数采云平台

    随着智能电网和物联网的融合发展,使用3G/4G/5G/WIFI/以太网等网络进行电表数据采集传输业务发展迅速.由于电表终端分布区域广,所处环境复杂多样,导致电表维护困难.时间长等问题,经常出现因终端断 ...

  5. IaaS、PaaS、SaaS、DaaS——各种云服务模式一览

    导读:本文将详细科普云计算的概念.云服务的发展现状,并逐一介绍各种云服务模式(IaaS.PaaS.SaaS.DaaS),建议收藏! 01 云计算的概念 云是一种服务,可以像使用水.电.煤那样按需使用. ...

  6. 基于SkeyeVSS综合安防监控视频云平台实现智能视频监控系统解决方案

    智能视频监控系统 智能视频监控系统是指采用图像处理.模式识别和计算机视觉技术,通过在监控系统中增加智能视频分析模块,借助计算机强大的数据处理能力过滤掉视频画面无用的或干扰信息.自动识别不同物体,分析抽 ...

  7. 基于STM32的智能GPS定位系统(云平台、小程序)

    背景及目标 前阵子,准确的说是好几个月前买了一辆电瓶车,当时呢因为车停得很随意,所以想给小电驴装一个GPS,一方面是防盗,另一方面是为了测速和绘制骑行轨迹,要是能联动电瓶车状态远程监测就更好了.当然我 ...

  8. 野牛NBIOT 环境监测项目---基于QT 5.9 接入华为OceanConnect云平台(六)

    NBIOT-北向开发之PC桌面 基于QT 5.9 北向接入华为OceanConnect云平台 该软件与上一章节提供的的平台profile是对应的,如果profile的关键参数不一致,需要同步修改软件代 ...

  9. 多校园SaaS运营智慧校园云平台源码 智慧校园移动小程序源码

    智慧校园管理平台源码 智慧校园云平台源码 智慧校园全套源码包含:电子班牌管理系统.成绩管理系统.考勤人脸刷卡管理系统.综合素养评价系统.请假管理系统.电子班牌发布系统.校务管理系统.小程序移动端.教师 ...

最新文章

  1. 我的配置(vc可以禁止控制台输出)
  2. mysql 存在索引但不能使用索引的典型场景
  3. python方法查看_关于查看python的trace的方法
  4. 循环类里面的每一个属性
  5. python爬虫ip限制_简单爬虫,突破IP访问限制和复杂验证码,小总结
  6. 六年之后再次执行[BLQS]战略
  7. pythonwindows32位_windows7__32位下安装python2.6.6
  8. java枚举来实现单例_枚举实现单例模式
  9. Python isdigit() isalnum()
  10. php curl post上传图片,php curl上传图片问题
  11. python创建文件对象的函数_Python学习笔记之—— File(文件) 对象常用函数
  12. 博文视点读书节第九日丨大咖书单加倍放送!
  13. Visual C++ 2010 (中文)学习版 安装教程
  14. 伪原创工具哪个好用,自媒体伪原创文章生成器软件
  15. ssh_exchange_identification: read: Connection reset by peer
  16. 机械:二级注册建造师/二级建造师考试的报考条件、报考时间、考试科目的简介
  17. codevs 2833 奇怪的梦境
  18. 【Hadoop】Build and Execute
  19. 桥牌坐庄训练bm2000 level3闯关记录——A8
  20. 项目管理关键路径法解析

热门文章

  1. 2022-2028年中国铁合金市场投资分析及前景预测报告
  2. mysql 查询一个订单下多个商品_如何商品信息多个sql查询搜索
  3. 使用这10个随机网站生成器来丰富浏览器的首页
  4. Stopwatch常用方法,不积硅步无以至千里
  5. 一年期早过:Windows 10免费升级漏洞仍然敞开着
  6. LeetCode:917. 仅仅反转字母————简单
  7. exp-00003 错误
  8. java 求1-100之间的质数
  9. python光棍节快乐_光棍节快乐的祝福语12条
  10. 全球及中国射频器件市场规模格局与投资战略决策报告2022版