SpringBoot+Vue3打造企业级一体化SaaS系统(掌握一体化集成解决方案)

131 阅读7分钟

SpringBoot+Vue3打造企业级一体化SaaS系统

download:百度网盘

入口

有了域名作为入口之后,下一步就是客户端和效劳器之间的通讯协议,关于少数简单的 SaaS 系统来说只需经过域名和 HTTP 协议就能够完成一切效劳,但大局部 SaaS 系统都会存在双向通讯的需求,因而还需求维护长衔接通道,常用的如原生 TCP 协议,或 Websocket 协议。另外假如业务中有媒体传播输的需求,还会用到 UDP、RTP 协议等。当然,目前市场上关于各种场景和需求都有对应的成熟处理计划,因而 SaaS 系统通常不会去从 0 开端处理一切问题,如长链接和媒体流我们能够集成网易云信的效劳来处理。

接入层

接入层通常是各种路由协议以及多层代理组成,如运营商和 AS 之间通常用 BGP 协议或者三线,机房内部通常会有接入的三层交流机,四层代理等等。网易七鱼目前的接入计划如下图所示,而关于范围较小的业务,为了灵敏性和性价比,通常会在交流机和 Nginx 之间参加四层代理 nlb。这一层根本都是由集团的 SA 同窗担任搭建和运维。

业务层

这里我们不去讨论业务上的各种设计形式和分层,因而把接入层之后、数据层之前的一切效劳和设备统称为业务层。通常业务层是一个 SaaS 系统研发中投入资源最大的,线上问题如性能瓶颈、稳定性、平安破绽等大局部都来自于业务层,因而该层也是开发和线上运维的重点。

在业务层目前 SaaS 系统最常用的还是微效劳的架构,不同于 IaaS 或 PaaS,SaaS 业务的一个重要特征是其业务复杂度很高、业务链路很长,而微效劳的架构刚好能够很好地应对这种状况。当然在业务刚开端的时分,我们能够用简单的单体应用来快速完成原型考证,等业务开展起来后再开端逐渐微效劳拆分。

流量经过接入层后,普通为了系统的灵敏性,会经过 Nginx 的 upstream 来转发恳求到网关,由网关统一分发到对应的业务效劳,而业务效劳又能够拆分为许多独立的微效劳互相调用。这也就带来了 SaaS 系统中的大局部常见问题,如:

  • 谁能够运用什么效劳?(租户管理)
  • 效劳在哪里?(效劳发现)
  • 恳求应该由哪个效劳节点处置?(负载平衡)
  • 信息怎样传输?(传输协议)
  • 如何防止一个租户影响另一个租户?(资源隔离)
  • 输入和输出如何表示?(序列化协议)
  • 网络呈现分区、超时或者效劳出错了怎样办?(熔断、降级、效劳管理)
  • 效劳权限如何管理?(认证受权)
  • 如何保证通讯平安?(网络平安)
  • 重要水平和依赖关系怎样样?(效劳分级)
  • 如何保证不同机器的效劳状态分歧?(散布式数据分歧性)

等等...这些全都需求研发人员投入大量的精神,每个点展开细说都是一个很大的话题。基于业务和技术的思索,通常还需求引入音讯队列、缓存、配置中心、定时任务等组件。

数据层

一切业务逻辑,最后一定都会在数据存储上得到表现。在一个 SaaS 系统中,最常用的存储仍然是关系型数据库,如我们的 DDB、另外常用 HBase、TiDB 等作为冷数据存储,ES、MongoDB 等作为对应功用的数据存储。因而 SaaS 系统中多个数据存储之间的分歧性是一个需求注重的中央。

对象存储方面,我们集团内有 Nos,市面上的云厂商也都有相应的效劳,不需求本人构建。不管客户存储的对象还是系统中的某些资源,为了进步客户的访问速度,我们都需求有 CDN 的存在。

SaaS 业务中还有一个常见的需求就是 BI,这请求系统具有数据剖析才能,OLAP 数据库也是必不可少的,网易云商采用的是 ClickHouse。

在某些特定的业务场景,或许还需求用到 TSDB,录入智能设备的传感器读数,用户的活动轨迹,系统的状态变化等。

数据层还有一个十分重要,但经常被无视的话题就是数据合规。特别是关于 SaaS 业务,由于面向的客户都是企业和组织,因而数据的平安合规是十分重要的。例如网易云商有特地的中间件用于数据库的敏感数据加密。

运维才能

到目前为止,一个 SaaS 系统根本曾经搭建成型能够提供效劳了。但是我们对系统的状态还一无所知,因而还要构建足够强大的运维才能。其中包括了可观测性、计量计费、快速恢复、毛病演练、系统管理各个方面。以可观测性为例,我们需求采集系统中的各种数据并经过大量技术手腕来观测系统的状态,如系统资源、业务指标、安康状态、链路追踪、业务埋点、报警管理、错误统计、流量水位、趋向剖析、变卦管理等。针对 SaaS 业务的特性,还需求特别对系统停止租户维度的监控和管理。

部署形式

SaaS 系统依据隔离水平的不一样能够分为三种部署形式,每种部署形式都会触及到架构的调整适配,都有各自的优缺陷。

专属形式

指 SaaS 系统中简直一切资源都是租户独占的,这种部署形式的优势是每个租户有完整隔离的环境,租户之间不会有影响,能够针对不同租户提供个性化的效劳。但是缺陷也很明显,这种部署形式的资源应用率低、本钱高、运维难度高、管理复杂。通常会被用于一些特定行业或者特殊需求的客户场景。

混合形式

指 SaaS 系统中有局部资源是一切租户共享的,还有局部资源是租户独占的,这种形式是如今大型 SaaS 系统常见的部署形式,能够统筹上面种形式的优缺陷,针对不同的客户提供不同的处理计划。

将来开展

上面扼要引见了搭建一个 SaaS 系统的主要过程,虽然 SaaS 的设计初衷是快速为特定业务场景提供垂直处理计划,但企业对跨业务跨部门的需求也越来越激烈,例如营销效劳一体化、私域运营等场景。因而,业界无论在业务还是技术方面都还在不时地探究之中,例如关于 SaaS 的本钱控制,合规性,可扩展性,针对不同租户的差别化效劳等等,都是 SaaS 厂商经常面临的难题。有人在探究部署方式的优化,有人在探究产品的设计计划,有人在探究低代码的形式,还有人在探究生态协作的计划。无论如何,大家的的努力都是在为了客户的胜利,回到我们的起点,只要客户胜利了,SaaS 才有存在下去的价值。