EDEN-MACE 1.6.0 发布,新增分布式锁,保证账务安全性
EDEN-MACE 是一套灵活的管理佣金的分销管理系统,它涵盖并且总结了目前流行的分销模式,并且提供后期完善的账务管理系统,让分销更加简单。
开源地址:https://gitee.com/codingdb/distribution_management
视频教程
链接:https://pan.baidu.com/s/1he3Tnk324JKoMPsbtEPcyw 提取码:p20v
此次更新是通过zookeeper对金额的操作进行分布式加锁,保证了账务的安全性.
如下图,分布式锁利用了zk的临时有序节点实现。
系统在类路径下的zookeeper.properties文件设置了开关,关的情况下是不加锁的,这里只讨论开的情况下,具体的加锁流程如下:
1.首先在 配置文件zookeeper.properties文件中设置zk的相关地址
2.系统在加载的时候会运行一个CuratorFramework并且启动
3.在相关spring组件中增加@AmoutLock注解
4.进入方法请前会根据配置情况判断是否进入加锁流程,进入的话 会通过 curator的InterProcessMutex类
5.创建一个/amount/{userId}的账户,这样能够保证多个用户进入此方法
6.通过lock.acquire()在zk下创建/amount/{userId} 下创建临时有序节点
7.执行账户操作
8.通过lock.release()是否节点,如果有下一个最小的节点,则通过watch机制通知下一个节点进入方法
优点:
1.对账户可以实现分布式的锁定,有利于分布式应用的部署
2.通过对每一个账户的监控保证了程序的健壮性
缺点
1. 由于需要访问zk进行加锁,由于网络原因等,会导致程序运行变慢
2.增加了程序的复杂性
部分代码
if(args!=null&&args.length>0&&curatorFramework!=null){ String path = "/amount/"+args[0]; final InterProcessMutex lock = new InterProcessMutex(curatorFramework,path); try { log.info("金额开始锁表{}",path); lock.acquire(); return point.proceed(); }finally { lock.release(); log.info("金额锁表完成{}",path); } }
具体操作可参照AmountMangeServiceImpl 类的实现和相关注释。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
免费建站系统,Joomla 3.9.12 发布
Joomla 3.9.12现以发布。这是Joomla 3.x系列的安全修复程序版本,解决了一个安全漏洞,并包含30多个错误修复程序和改进。 什么是3.9.12? Joomla 3.9.12包含一个安全漏洞修复程序以及一些错误和改进,包括: 安全问题已修复 低优先级-核心-默认模板徽标参数中的XSS(影响Joomla 3.0.0至3.9.11) 错误修复和改进 在日历中修复minyear和maxyear 在Protostar中处理Google字体的粗细和样式 在mssql服务器上修复用户会话 通过向CLI Finder索引器添加暂停机制来保护SQL Server 修复Imagelist自定义字段默认图像 下载 下载Joomla 3.9.12 完整包 下载Joomla 3.9.12 升级包
- 下一篇
Serverless 1.53.0 发布,无服务器架构开发框架
Serverless 架构开发框架 Serverless Framework 1.53.0 发布了,该框架使用 AWS Lambda、Azure Functions、Google CloudFunctions 等技术,可以构建 Serverless 架构的 Web、移动和 IoT 应用。 新版更新说明如下: 遵从 websocket 日志组中的 logRetentionInDays 删除对 sls 软件包命令中的现有 AWS 配置文件的要求 添加有关使用 captureError 的文档 对 CONTRIBUTING.md 进行较小的更正 [文档] 添加了有关指定 SNS ARN 的说明 修复 aws 插件中的正则表达式转义 更新 Azure 快速入门和 Azure Node.js 项目的README 更新 Azure CLI 参考文档 文档:更新和清理 Hello World 应用程序文档 更新 Azure 提供程序指南文档 更新 Azure Node.js 模板 将通用测试工具移至 @serverless/test 添加测试文档 添加阿里云提供商 更新 package.json 中...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16