基于saas的一套基础版架构

Posted 佛学徒-代码搬运工

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于saas的一套基础版架构相关的知识,希望对你有一定的参考价值。

前言

本人安卓开发,成天想着自己弄一全套开发,刚好在公司给了个机会参与了后管开发,虽技术有点羞涩,但还说的过去,并且感觉后管原先代码里面漏洞过多(凡是我不清楚的逻辑都是漏洞!!!),所以在此利用业余时间耗时近3个月对这套saas平台做了梳理和改进,主要吃透了里面的业务逻辑。

在此感谢自己的务实和努力。更要感谢自己的兴趣爱好就是敲代码!未来的路扑所迷离,但是此时此刻的自己非常充实。

简介

saas简介

官方解释:摘自百度百科

SaaS即Software-as-a-Service(软件即服务)是随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。传统模式下,厂商通过License将软件产品部署到企业内部多个客户终端实现交付。SaaS定义了一种新的交付方式,也使得软件进一步回归服务本质。企业部署信息化软件的本质是为了自身的运营管理服务,软件的表象是一种业务流程的信息化,本质还是第一种服务模式,SaaS改变了传统软件服务的提供方式,减少本地部署所需的大量前期投入,进一步突出信息化软件的服务属性,或成为未来信息化软件市场的主流交付模式。

个人理解

一个系统端和多个企业端:

  1. 系统端管理企业端,

  2. 企业端管理本企业服务,服务包括基础服务、本企业业务服务、app或网站服务

  3. 企业端可以归类在同一类企业,例如都是购物类企业,那么系统端对当前类企业配置同一类模块即可,有利于结构的重复利用;

  4. 每一个app或网站是针对某一类企业服务的;例如购物类企业,如果该企业有app或网站,那么该app只服务于购物类企业;

  • 注:当然也可以做成一个综合性saas app客户端,但是完全没这个必要,无论从代码还是业务逻辑角度来说都过于复杂。

项目简介

baseSaas是一个java ee平台,采用前后端分离技术,基于技术组合Spring Boot、springcloud+nocas微服务、Apache Shiro、MyBatis、Bootstrap等),分两大块:系统端管理平台和企业端管理平台。

  1. 系统端管理平台内置模块:就一个系统管理,系统管理下有
  • (1)企业管理、
  • (2)参数维护、
  • (3)模块管理。
  1. 企业端管理平台内置模块:
  • (1)基础功能模块:有系统管理和日志管理
  • ①系统管理有用户管理、角色管理、架构管理、公司简介、字典管理;
  • ②日志管理有登录日志和操作日志;
  • (2)其他业务逻辑模块:客户管理,当然这里点击是404的,因为我没有实现;

技术选型

工具选型

  1. idea 2019.2

  2. webstorm 2018.3.4

  3. mysql 8.0.16

  4. navicat mysql可视化工具版本随意

开发环境

  1. jdk1.8;

  2. nocas 2.0.3

  3. redis 版本随意

项目运行

  1. 肯定需要安装上面的工具和开发环境;

  2. 通过navicat数据库可视化工具新建一个saas-base数据库;然后将saas-base.sql中的文本复制到当前数据库中的命令行执行(直接运行好像会报错,建议脚本执行sql文件里面的文本内容);

  3. baas-saas-service是服务端代码;base-saas-manage是后管vue代码;

  4. 服务端代码启动,在idea中打开,全局搜索redis修改成自己的密码。全局搜索datasource,修改里面的数据库用户名和密码;

  5. 后管vue代码,webstorm打开项目

功能

服务框架简介

当前存在三个服务,zuul,manager,common:

  1. zuul-service是springcloud中的微服务网关,为了微服务架构中的服务提供统一的访问入口;

  2. manage-service是当前saas的系统端和企业端提供api接口的服务;

  3. common-service通用接口,现在存放提取和校验图形验证码 还有文件上传;

基础功能介绍

系统端

就一个系统管理,分为:模块管理,参数维护,企业管理

模块管理

新建模块,以及当前模块下新建菜单,当前系统架构仅支持二级菜单模式;

参数维护

分为基础参数和三方参数。

企业管理

新建企业,并且给当前企业分配参数维护模块的参数和模块。

企业端

主要讲解两个功能,日志管理和系统管理。日志管理分为登录日志和操作日志,都是针对当前企业的;系统管理分为:字典管理,公司简介,架构管理,角色管理,用户管理。

字典管理

比如配置一个商品类型,商品类型下分为普通商品,昂贵商品(当然完全可以重新生成一张表存储商品类型,方法不是唯一的)。

公司简介

当前公司简介,这里的配置会放到网站相应的公司简介部分显示。

架构管理

当前公司的组织架构。在系统端企业管理中新建企业时,会默认新建当前企业作为第一级企业架构。

角色管理

主要用于创建角色,以及给当前角色分配菜单,这里面还可以选择多个模块下的菜单;

用户管理

创建当前企业下的用户,并且给当前用户分配角色。

这里还有一个脱敏:如果在企业端-模块管理-业务功能下新建的菜单支持脱敏的情况下,那么这里可以对当前用户是否对当前菜单脱敏,如果脱敏,那么当前用户访问当前菜单功能一些重要信息将会以"*"号替代。

当前具体业务逻辑需要自己定,我这里并没有做脱敏处理。

登录日志

当前企业下的用户登录情况;

操作日志

当前企业下的用户操作了哪些后管菜单。

#总结

项目git地址

第一,水平有限,无论是写作水平还是开发水平,所以只能写的这么多了。

第二,感觉写那么多,那么高大上,把自己整的跟个神一样(其实土鳖一枚)也没用,毕竟我对自己负责,而不是其他人;主要还是在于自己的理解。

等你正在想要去理解吃透这里面的技术,沉下心来学习,不需要多少高大上的胡吹。

零售系统架构图

 

技术图片

对零售系统分析了下,然后设计了个架构图,基本有了这个架构图,剩下就是对具体页面功能逻辑进行设计而已。在设计这个架构图的过程,有一些想法

1、业务是基于网上一个文章“新零售-从业务到产品”有兴趣可以看看,文章上面也有一套架构图。不过看了文章及架构,是基于自身业务逻辑来设计,而不是基于通用saas设计,所以抽离了下。

2、基于saas设计的一些考虑点:

    A、要考虑客户可能没有WMS、TMS、ERP等系统情况,说白了,就是要考虑完全没有外部系统的情况下,单靠这套系统就能撑起来所有业务。一开始是没有增加“采购”、“仓库”、“物流”这些模块,但是考虑到这种情景下,的确需要添加这些模块,但是只需要最核心的功能即可

    B、多账号中心:saas系统是多租户,每个租户的权限、数据都是独立。所以设计这套系统的时候,需要增加一个“多账号中心”,目的是独立授权。

    C、模块之间都得提供行业标准接口,不过这种就是后端技术的了,在功能架构里面,其实比较难体现。主要是考虑这个系统肯定会存在只要某几个功能模块,其他功能服务,通过第三方系统满足的情况,这种情况下要做的只是提供行业标准的接口,然后让他们对接就好了。

3、模块大小划分问题:这个~~自身经验问题,所以模块划分也许存在不合理情况。不过对于saas系统来说,当系统复杂度去到一定程度,才需要拆分代码。在此之前有个大概范围划分就好。原因是很难完全一下子将业务梳理清楚,其次业务不停在发生变化,新业务不断产生,也许大模块下再拆分子模块,这种是很正常的。(试想下,一个CRM也可以做到非常非常复杂,非常非常精细,但是对于零售系统来说,起码现在这些模块设计可以满足80%的需求。)

 

因为没在这个行业从事过,分析是基于空想及一些文章,所以肯定存在不合理或者有场景不满足。但是saas系统本身就是不断成长,不断发展的系统,今天你看到的是这样,明天可能就会增加更多的服务。

刚入行的时候接触的是软件外包,软件外包转型产品,如果走saas之路,最缺乏的是对这个行业的深入了解业务及抽象设计能力,设计出来的东西能够通用。

以上是关于基于saas的一套基础版架构的主要内容,如果未能解决你的问题,请参考以下文章

零售系统架构图

基于Dubbo分布式系统架构附第三方支付系统简易版源码学习

Spring Cloud Alibaba+saas企业架构技术选型+架构全景业务图 + 架构典型部署方案

Spring Cloud Alibaba+saas企业架构技术选型+架构全景业务图 + 架构典型部署方案

SaaS 架构基础理论

.NET SAAS 架构与设计 -SqlSugar ORM