合同管理系统技术架构
使用的开源组件完全基于开源产品打造。 的本身是使用 作为微服务架构,并使用了一些主流的开源工具进行及监控管理等。
. 应用前端前端使用 进行封装拓展。
核心组件有:
:一个用于构建用户界面的 库。
:基于的开箱即用的中台前端/设计解决方案。
.:采用打包、构建前端应用
. 微服务后端的微服务后端采用 作为微服务框架,使用 作为开发脚手架。
核心组件有:
: 是一个集成了众多开源的框架,利用 的开发便利性实现了服务治理、服务注册与发现、负载均衡、数据监控, 发布方式等,基本囊括了分布式框架所需要的所有功能。是一套易开放、易部署、易维护的分布式开发工具包,如下是用到的一些 的组件:
: 是由 团队提供的全新框架,其设计目的是用来简化新 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
:一款优秀的持久层框架,它支持定制化 、存储过程以及高级映射。
其他常用工具:
. 数据服务层采用 、、 作为关系型数据存储库, 作为缓存库。
核心组件有:
: 是最流行的开源关系型数据库管理系统。
: 是主流的企业级关系型数据库管理系统。
: 是主流的企业级关系型数据库管理系统。
: 是一个开源的使用 语言编写、支持网络、可基于内存亦可持久化的日志型、- 数据库,并提供多种语言的 。
. 运行环境. 可运行在 、、 上。核心组件有:
: 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 机器上,也可以实现虚拟化。
. 开发测试采用多个代码检查和测试工具,其中,、 作为后端 代码的测试工具; 作为前端测试的工具。
核心组件有:
: 是一个 语言的单元测试框架。
: 是一个用于或应用的测试框架。
: 是一套完整的 应用程序测试系统,包含了测试的录制( ),编写及运行( )和测试的并行处理( )。
系统监控
利用主流的开源监控工具,从日志、服务运行环境、调用链等进行全面监控,以便在发生问题时能够快速定位和解决问题。
核心组件有:
: 为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。
: 是一个开箱即用的可视化工具,具有功能齐全的度量仪表盘和图形编辑器,有灵活丰富的图形化选项,可以混合多种风格,支持多个数据源特点。
: 是由 开发的开源监控报警系统和时序列数据库()。
: 是一个监控指标的度量类库。
服务调用链路基础服务之间的关系以及调用链路。
. 访问网关、鉴权访问 网关服务,所有请求都会经过 过滤器,在过滤器中,会调用 - 鉴权。
进入 -,根过滤器包含了一系列过滤器来对请求进行鉴权,将按图中的过滤器顺序进行校验,其中任何一步返回 都会直接返回。一般服务出现、等问题可先检查 -- 的日志,看是哪一步校验不通过。
权限校验通过后,携带 返回到 。
. 获取用户信息其中,会带着 _ 访问 认证服务的 // 接口获取用户信息,并转换成 。之后,在里将 转成 。
. 访问权限校验通过后, 会将请求路由到具体的服务上,并带上 。
在服务内, 将 解析成 ,并放入 ,代表用户在这个服务内已经登录,之后的程序中就可以通过 .() 得到用户信息。若要开启此过滤器,需在启动类上配置 @ 注解开启此功能。
之后返回数据,经过网关,再返回到前端。如果服务响应比较慢,就需要调整网关的超时时间。
. 服务注册服务启动时,会向 注册中心注册自己。服务注册成功后,-、-、- 都会收到服务注册的消息, 会刷新文档信息, 刷新服务路由,刷新权限。
. 获取服务文档、、 收到服务注册成功的消息后,会调用服务的 ///- 接口获取服务文档信息。
注意:拉取服务文档时,服务可能还未完成启动,默认配置会每隔秒拉取次,如果次后都没拉取到文档,就无法刷新路由等信息了,需手动调用接口刷新。
. 通知服务刷新配置中,服务路由或配置创建成功后,会调用服务//接口通知服务刷新配置。
. 服务向配置中心获取配置服务收到通知后,再向配置中心拉取配置,、- 还会拉取路由信息。因此如果路由找不到时,检查表中是否有路由信息,没有可通过配置中心手动添加,再调用通知接口通知服务刷新路由和配置信息。
好未来合同项目相关. 对接方法具体的字段和返回需要之后的接口文档。
之后这边会有一个地址提供测试。
测试阶段,接口调用不涉及权限。但是生产机上会加上权限校验:
通过给定的长时间有效的 带到请求头上来调用我们合同系统的接口。
) 与造物神对接
. 通过造物神现在提供的接口,获取其人员和组织的全量数据,在自己系统内部做比对,得到新增修改的数据(这个操作耗时比较长,所以会是一个定时任务,而且频率会尽量降低)。
) 与采购系统对接
. 采购系统将包的字符串,通过方式将数据传入我们系统,我们直接将其创建为一份草拟合同。同时当发生错误的时候我们将返回特有的错误代码,这个在之后的接口文档中展现。
. 之后通过业务流程之后,将审批最终结果返回给采购系统。同样以格式的请求传过去信息。
. 采购系统接收到我们最终回传的数据,如果是被拒绝的审批,那么采购可以通过这个状态来判断是否可以修改,修改完毕之后还可以继续推送过来,我们将对这个合同进行修改之后推向。
. 如果我们返回的是审批通过信息,那么采购系统接收到数据之后,根据最终结果修改掉自身的合同数据。并且修改状态,然后自行向紫光获取扫描件。
. 从采购过来的数据在我们系统从始至终不能修改,唯一的修改途径是通过我们暴露给采购的合同创建接口(如果存在,我们会修改数据,会有外围系统编号这么一个字段)。
) 对接拓展系统
. 暴露一个接口给拓展系统,其将合同数据以请求传给我们,我们直接将其创建为一份草拟合同。所传的字段为合同业务标准字段和自身系统的个别特殊字段。同时当发生错误的时候我们将返回特有的错误代码,这个在之后的接口文档中展现。
. 之后通过业务流程之后,将审批最终结果返回给拓展系统。同样以格式的请求传过去信息。
. 拓展系统接收到我们最终回传的数据,如果是被拒绝的审批,那么拓展系统可以通过这个状态来判断是否可以修改,修改完毕之后还可以继续推送过来,我们将对这个合同进行修改之后推向。
. 如果我们返回的是审批通过信息,那么拓展系统接收到数据之后,根据最终结果修改掉自身的合同数据。并且修改状态,然后自行向紫光获取扫描件。
. 从拓展过来的数据在我们系统从始至终不能修改,唯一的修改途径是通过我们暴露给拓展的合同创建接口(如果存在,我们会修改数据,会有外围系统编号这么一个字段)。
) 与对接
. 业务人员在前台点击按钮触发合同的审批操作。
. 目前有已经有创建流程的接口,所以我们通过目前已有接口推送合同信息给,返回相应的请求状态。
. 在每一个节点审批完毕之后,通过我们发布的接口,以的方式以格式,将每个节点的审批结果推送过来。包含合同表单信息,审批备注,审批人,审批操作(同意或者拒绝),是否结束,审批时间。
. 每个节点审批完毕之后我们会记录审批日志。全部节点完毕之后,我们会将信息推送给采购和拓展。
) 与钉钉对接
. 与钉钉对接是通过造物神提供的钉钉消息推送接口来发送消息。
. 这方便主要是向其推送预警信息。
) 与天眼查对接
. 与天眼查对接,通过天眼查提供的工商信息和司法信息接口,根据公司名称查找其信息,然后展示成一个弹框给用户看。
. 字段信息由法务需求人员提供,但是我们目前只能展示一些重点信息。
. 然后在框中会有一个详情按钮,在点击详情按钮的时候会在浏览器打开一个新建的标签页,这样可以更仔细的查看信息。但是这个需要用户事先登录好天眼查系统。
. 统一认证合同系统将接入造物神的统一认证,不再与另外的系统单独做单点登录。
. 高可用方案) 使用的网关,可以通过部署多个网关服务集群+反向代理来实现高可用。
) 服务注册中心可以注册多个同名服务,这时中通过路由的配置取得服务名,通过服务注册中心可以找到一个当前可用的服务。支持建立集群,来实现注册中心的高可用。
) 数据库层面,我们可以通过配置多台数据库服务器来做互为主从,可以采用来实现高可用,当一台服务器挂了之后,另外一台检测不到心跳就会接管虚拟的请求。同时建议提供异地冷备机器,定期做好数据备份。
) 如果考虑到高可用,那么正式环境服务器建议参考如下配置
. 备注) 部署方式可为部署或者容器部署,如果直接使用包部署,则猪齿鱼不需要安装
) 服务器与服务器之间为快速提供扩容能力,建议不做精确端口管控,尽量可以暴露一段端口;外部到服务端口限制根据实际需求而定
) 正式环境配置只是建议,具体可能需要根据实际使用情况和部署要求调整
) 、内存、硬盘等,只要综合资源满足要求即可,服务器数量没有限制。如用户量增加,可以通过增加同名服务的方式来增强并发能力。
如果要重启某个服务,可以通过,或者使用后台脚本自行启动
) 建议使用目前已有的服务器,未包含在上面的资源推荐中。
还没有评论,来说两句吧...