中国式SaaS技术架构
来源:原创 时间:2017-05-17 浏览:0 次老外是多租户SaaS技能架构,也即是说,一套分布式运用代码、一套分布式数据库存储,在运用架构层面做的强壮,满意各个租户的自定义和体系集成。
我国呢,曩昔的3年现已证实面向中小公司、创业公司根本是不靠谱,所以从上一年下半年,咱们都纷繁杀入中大型公司、大型公司。这些我国公司,要么恳求在他们的私有云中布置,要么恳求在公有云为他们拓荒一个专区专门独立布置,并且都恳求和他们现有的内部ERP软件一致用户账号登录、运用逻辑打通、数据打通。
这即是我国的现实,那怎么满意我国的这种需要呢?所以,这就呈现了我国式SaaS技能架构。
一、客户端UI
不相同的岗位工作环境有不相同适用的运用技能:
1、关于一线现场(如生产制作、仓储物流配送),通常采纳扫码POS或微信小程序,扫码后简略操作几下就把事务要害点记录了下来。
2、关于一线零售店面收银,现在大多数白牌平板App
3、关于来回跑中间分销、渠道、收购、督导的外勤,根本是手机App来处理事务
4、关于坐在后端的运营人员、人事法务财政,根本用的即是台式电脑Web运用来处理事务
二、后端事务逻辑层
由于客户端是不相同岗位、不相同本质能力水平、不相同事务重心、不相同工作环境,所以功用不相同、用户体会不相同,所以后端的效劳层事务逻辑也都不相同。
这层由于涉及到客户端接入,所以需要API网关中间件,由于对比轻(由于还有一层公共事务逻辑处理层),所以采纳微效劳中间件(如SpringCloud),这些不相同的微效劳都打包在一个个的Docker中,为了迅速弹性发动扩容。前面有API网关中间件能够做分流限流、路由导流,这么后边微效劳容器怎么扩容,对前端都通明。
可是总有一些事务逻辑是这四种端运用都要处理的,所以还得分出一层叫做公共事务逻辑处理层。这些公共事务逻辑处理层按功用责任也分红一个个的效劳,放在Docker容器中,受Swarm或Kubernetes集群办理。
三、分布式技能中间件层
API网关中间件就归于这一层,只不过客户端来的恳求都首要通过它再路由到事务逻辑微效劳。
别的一个主要的分布式技能中间件是数据传输。能够采纳Kafka分布式音讯队列来做数据管道。
咱们也能够运用ZooKeeper分布式中间件进行各种后端处理效劳的装备以及履行调度。
这些分布式中间件也都布置在Docker Swarm集群办理下,用API方式供上下层调用。
四、数据存储层
有些数据需要放在内存里为了迅速查询,所以咱们需要用到分布式Redis集群。
有些数据需要持久性放在联系型数据里,咱们能够用MySQL联系数据库。为了分布式存储,咱们能够在MySQL之前再放一个MyCAT分库分表分布式中间件。为了读写别离进步功用,咱们能够在MyCAT之前再放一层MySQLProxy,用于主备读写别离。
有些数据是文件方式,如图像、音频视频,咱们能够用分布式文件体系和方针存储体系来存放。咱们还能够运用CDN技能来做这些静态文件的分发加速。
有些数据是特别的数据构造,如时刻序列数据(IM音讯通常是这么特色)、如图数据(交际网络通常是这么特色)、如大文本数据(点评评论通常是这么特色),为了加速这些特别构造的数据存取,咱们能够用时序数据库、图数据库、文档数据库等等。
这些数据库引擎能够为了加速功用,布置在物理效劳器上。而这些数据库引擎存取的数据,能够放在块存储云硬盘卷上。
五、主数据模块
这是个模块,会用到后端事务逻辑层、分布式中间件层、数据存储层的各项技能。
这个模块主要有两大功用:
1、用户登录验证。在API网关这么的纯技能中间件基础上,咱们还需要研制一个用户登录网关,用于区分不相同的公司用户登录进来,进行身份认证、路由指定。这个用户登录网关需要和API网关进行合作运用。由于登录是每个用户拜访的第一步,这块最容易会变成功用瓶颈,所以要尽量做到高功用编码、分布式扩容/分流负载均衡。
2、主数据办理。主数据办理有以下主要动作:主数据同步仿制、主数据分发、主数据更新(有先后顺序有存取锁疑问)。所以主数据需要独立出来,供各个体系运用。为了防止主数据存取变成瓶颈,数据库这块也需要留意主备读写别离、分库分表、可便利分布式布置。当然也需要有后台图形化的主数据办理体系来做人工的干涉保护。
六、大数据仓库
方才以上咱们讲的都是事务逻辑处理需要的技能以及架构堆砌方式,关于报表核算、前史查询、归纳查询、商业方针对比剖析,咱们有必要把这些工作放到大数据套件中来处理,和真实迅速事务处理的体系分开。
不仅仅是要核算资本分开,还要存储资本也分开。由于关于大数据,存储容量要大(但不一定存储拜访功用要高),内存要大(要进行很多数据取出进行核算),CPU功用要高(要密布核算)。所以关于核算、查询、剖析这些功用,效劳器云主机和云存储都要和运用事务处理别离。
别离后,就需要从运用事务处理体系中抽取数据。
所以,关于数据抽取层:咱们有一系列的ETL东西,还有数据爬虫引擎用于爬表里静态数据,还有用Flume、Logstash、Splunk搜集IT资本日志和运用体系运行日志。
抽取来的数据能够放在大数据仓库中,咱们能够采用Hadoop HDFS、Hbase、Hive等等开源中间件。
要核算处理时,咱们能够在YARN或MapRedurce核算调度框架下运用Spark、Storm来进行内存核算和流式核算。
处理后的数据,咱们能够用presto查询,咱们也能够用ElasticSearch来查找。
最终,咱们运用一些可视化东西把成果用图表方式输出出去。
七、最终总结
按照这么的技能架构建立好后,每一个客户要在公有云上专属独立布置,那么给它用DevOps东西新启几个效劳层Docker,假如公共事务逻辑方式也要改变,那就新启几个公共事务逻辑Docker。究竟咱们有分布式用户登录验证网关和API网关,所以不管是公有云专属布置仍是私有云布置,都没疑问。
关于主数据办理模块,由于也有UI层、逻辑层、数据层,所以主数据这些各层的代码和数据和中间件,能够打包成一个布置单元,用一套专门的DevOps东西及脚本进行自动化布置、装备改变、晋级。
关于数据层,咱们有KV分布式数据库、分布式联系数据库、主备读写别离中间件、分库分表中间件、CDN分发、时序数据库/文档数据库/图数据库、咱们确实需要在API网关路由层面用DevOps东西及脚本、集中装备中间件Puppet来做到自动化布置拓展、装备改变、晋级。这么不相同的公司指向了不相同的分布式数据库引擎地址和分布式数据库存储卷。这么就便利了既能做公有云专属布置又能做私有云布置。
但要记住,这么的架构对比合适我国式SaaS。关于国外老美的SaaS,人家一开始方针即是要满意大中小不相同规划客户,要满意全世界公司,所以假如做成我国式SaaS技能架构,那以后会越来越费事。所以老外人家的技能架构是一开始很难设计与建立,一开始的保护也很费事(需要编写很复杂的自动化运维东西与脚本),但随着规划越来越大(比方几十万甚至几百万家公司),那老美的SaaS技能架构就显示出复杂性优势了。
不相同发展阶段,运用不相同的完成技能架构。你也不必梦想着用一套架构逐渐演化和层层建立,就能逐渐从满意中小公司拓展到满意跨国公司。当然作为一个特定的SaaS公司,谁也不能既能满意了创业公司的需要,又能满意跨国公司的需要。所以想想国内如用友这么,既有畅捷通商品与架构、又有U8商品与架构,又有NC商品与架构,分而治之就好。连SAP,也还能有SAP ERP套件和Businees One中小公司两套不相同商品线不相同技能架构。