基于saas的一套基础版架构
Posted 佛学徒-代码搬运工
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于saas的一套基础版架构相关的知识,希望对你有一定的参考价值。
前言
本人安卓开发,成天想着自己弄一全套开发,刚好在公司给了个机会参与了后管开发,虽技术有点羞涩,但还说的过去,并且感觉后管原先代码里面漏洞过多(凡是我不清楚的逻辑都是漏洞!!!),所以在此利用业余时间耗时近3个月对这套saas平台做了梳理和改进,主要吃透了里面的业务逻辑。
在此感谢自己的务实和努力。更要感谢自己的兴趣爱好就是敲代码!未来的路扑所迷离,但是此时此刻的自己非常充实。
简介
saas简介
官方解释:摘自百度百科
SaaS即Software-as-a-Service(软件即服务)是随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。传统模式下,厂商通过License将软件产品部署到企业内部多个客户终端实现交付。SaaS定义了一种新的交付方式,也使得软件进一步回归服务本质。企业部署信息化软件的本质是为了自身的运营管理服务,软件的表象是一种业务流程的信息化,本质还是第一种服务模式,SaaS改变了传统软件服务的提供方式,减少本地部署所需的大量前期投入,进一步突出信息化软件的服务属性,或成为未来信息化软件市场的主流交付模式。
个人理解
一个系统端和多个企业端:
-
系统端管理企业端,
-
企业端管理本企业服务,服务包括基础服务、本企业业务服务、app或网站服务
-
企业端可以归类在同一类企业,例如都是购物类企业,那么系统端对当前类企业配置同一类模块即可,有利于结构的重复利用;
-
每一个app或网站是针对某一类企业服务的;例如购物类企业,如果该企业有app或网站,那么该app只服务于购物类企业;
- 注:当然也可以做成一个综合性saas app客户端,但是完全没这个必要,无论从代码还是业务逻辑角度来说都过于复杂。
项目简介
baseSaas是一个java ee平台,采用前后端分离技术,基于技术组合Spring Boot、springcloud+nocas微服务、Apache Shiro、MyBatis、Bootstrap等),分两大块:系统端管理平台和企业端管理平台。
- 系统端管理平台内置模块:就一个系统管理,系统管理下有
- (1)企业管理、
- (2)参数维护、
- (3)模块管理。
- 企业端管理平台内置模块:
- (1)基础功能模块:有系统管理和日志管理
- ①系统管理有用户管理、角色管理、架构管理、公司简介、字典管理;
- ②日志管理有登录日志和操作日志;
- (2)其他业务逻辑模块:客户管理,当然这里点击是404的,因为我没有实现;
技术选型
工具选型
-
idea 2019.2
-
webstorm 2018.3.4
-
mysql 8.0.16
-
navicat mysql可视化工具版本随意
开发环境
-
jdk1.8;
-
nocas 2.0.3
-
redis 版本随意
项目运行
-
肯定需要安装上面的工具和开发环境;
-
通过navicat数据库可视化工具新建一个saas-base数据库;然后将saas-base.sql中的文本复制到当前数据库中的命令行执行(直接运行好像会报错,建议脚本执行sql文件里面的文本内容);
-
baas-saas-service是服务端代码;base-saas-manage是后管vue代码;
-
服务端代码启动,在idea中打开,全局搜索redis修改成自己的密码。全局搜索datasource,修改里面的数据库用户名和密码;
-
后管vue代码,webstorm打开项目
- (1)先
npm install
,在执行npm run dev
- (2)http://localhost:8080/sys-manage表示系统端登录地址;
- (3)http://localhost:8080/和http://localhost:8080/ent-manage表示企业端登录地址
- (4)两个登录用户名和密码已默认存在于输入框,修改验证码后可直接用于登录。
功能
服务框架简介
当前存在三个服务,zuul,manager,common:
-
zuul-service是springcloud中的微服务网关,为了微服务架构中的服务提供统一的访问入口;
-
manage-service是当前saas的系统端和企业端提供api接口的服务;
-
common-service通用接口,现在存放提取和校验图形验证码 还有文件上传;
基础功能介绍
系统端
就一个系统管理,分为:模块管理,参数维护,企业管理
模块管理
新建模块,以及当前模块下新建菜单,当前系统架构仅支持二级菜单模式;
参数维护
分为基础参数和三方参数。
企业管理
新建企业,并且给当前企业分配参数维护模块的参数和模块。
企业端
主要讲解两个功能,日志管理和系统管理。日志管理分为登录日志和操作日志,都是针对当前企业的;系统管理分为:字典管理,公司简介,架构管理,角色管理,用户管理。
字典管理
比如配置一个商品类型,商品类型下分为普通商品,昂贵商品(当然完全可以重新生成一张表存储商品类型,方法不是唯一的)。
公司简介
当前公司简介,这里的配置会放到网站相应的公司简介部分显示。
架构管理
当前公司的组织架构。在系统端企业管理中新建企业时,会默认新建当前企业作为第一级企业架构。
角色管理
主要用于创建角色,以及给当前角色分配菜单,这里面还可以选择多个模块下的菜单;
用户管理
创建当前企业下的用户,并且给当前用户分配角色。
这里还有一个脱敏:如果在企业端-模块管理-业务功能下新建的菜单支持脱敏的情况下,那么这里可以对当前用户是否对当前菜单脱敏,如果脱敏,那么当前用户访问当前菜单功能一些重要信息将会以"*"号替代。
当前具体业务逻辑需要自己定,我这里并没有做脱敏处理。
登录日志
当前企业下的用户登录情况;
操作日志
当前企业下的用户操作了哪些后管菜单。
#总结
项目git地址
第一,水平有限,无论是写作水平还是开发水平,所以只能写的这么多了。
第二,感觉写那么多,那么高大上,把自己整的跟个神一样(其实土鳖一枚)也没用,毕竟我对自己负责,而不是其他人;主要还是在于自己的理解。
等你正在想要去理解吃透这里面的技术,沉下心来学习,不需要多少高大上的胡吹。
零售系统架构图
对零售系统分析了下,然后设计了个架构图,基本有了这个架构图,剩下就是对具体页面功能逻辑进行设计而已。在设计这个架构图的过程,有一些想法
1、业务是基于网上一个文章“新零售-从业务到产品”有兴趣可以看看,文章上面也有一套架构图。不过看了文章及架构,是基于自身业务逻辑来设计,而不是基于通用saas设计,所以抽离了下。
2、基于saas设计的一些考虑点:
A、要考虑客户可能没有WMS、TMS、ERP等系统情况,说白了,就是要考虑完全没有外部系统的情况下,单靠这套系统就能撑起来所有业务。一开始是没有增加“采购”、“仓库”、“物流”这些模块,但是考虑到这种情景下,的确需要添加这些模块,但是只需要最核心的功能即可
B、多账号中心:saas系统是多租户,每个租户的权限、数据都是独立。所以设计这套系统的时候,需要增加一个“多账号中心”,目的是独立授权。
C、模块之间都得提供行业标准接口,不过这种就是后端技术的了,在功能架构里面,其实比较难体现。主要是考虑这个系统肯定会存在只要某几个功能模块,其他功能服务,通过第三方系统满足的情况,这种情况下要做的只是提供行业标准的接口,然后让他们对接就好了。
3、模块大小划分问题:这个~~自身经验问题,所以模块划分也许存在不合理情况。不过对于saas系统来说,当系统复杂度去到一定程度,才需要拆分代码。在此之前有个大概范围划分就好。原因是很难完全一下子将业务梳理清楚,其次业务不停在发生变化,新业务不断产生,也许大模块下再拆分子模块,这种是很正常的。(试想下,一个CRM也可以做到非常非常复杂,非常非常精细,但是对于零售系统来说,起码现在这些模块设计可以满足80%的需求。)
因为没在这个行业从事过,分析是基于空想及一些文章,所以肯定存在不合理或者有场景不满足。但是saas系统本身就是不断成长,不断发展的系统,今天你看到的是这样,明天可能就会增加更多的服务。
刚入行的时候接触的是软件外包,软件外包转型产品,如果走saas之路,最缺乏的是对这个行业的深入了解业务及抽象设计能力,设计出来的东西能够通用。
以上是关于基于saas的一套基础版架构的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Alibaba+saas企业架构技术选型+架构全景业务图 + 架构典型部署方案