如何开发电商系统?先来半打分布式调度系统/框架 | 码云周刊第 19 期
项目简介:
- iBase4J是Java语言的分布式系统架构。 使用Spring整合开源框架。
- 使用Maven对项目进行模块化管理,提高项目的易开发性、扩展性。
- 系统包括三个模块:公共模块、系统管理模块、Web展示模块。
- 公共模块:公共功能(AOP、缓存、基类、调度等等)、公共配置、工具类。
- 系统管理模块:包括用户管理、权限管理、数据字典、系统参数管理等等。
- 每个模块都是独立的系统,可以无限的扩展模块,模块之间使用Dubbo或MQ进行通信。
- 每个模块服务多系统部署,注册到同一个Zookeeper集群服务注册中心,实现集群部署。
主要功能:
- 数据库:Druid数据库连接池,监控数据库访问性能,统计SQL的执行性能。 数据库密码加密,加密方式请查看PropertiesUtil,decryptProperties属性配置需要解密的key。
- 持久层:mybatis持久化,使用MyBatis-Plus优化,减少sql开发量;aop切换数据库实现读写分离。Transtraction注解事务。
- MVC: 基于spring mvc注解,Rest风格Controller。Exception统一管理。
- 调度:Spring+quartz, 可以查询、修改周期、暂停、删除、新增、立即执行,查询执行记录等。
- 基于session的国际化提示信息,职责链模式的本地语言拦截器,Shiro登录、URL权限管理。会话管理,强制结束会话。
- 缓存和Session:注解redis缓存数据,Spring-session和redis实现分布式session同步,重启服务会话不丢失。
- 多系统交互:Dubbo,ActiveMQ多系统交互,ftp/sftp/fastdafs发送文件到独立服务器,使文件服务分离。
- 前后端分离:没有权限的文件只用nginx代理即可。
- 日志:log4j2打印日志,业务日志和调试日志分开打印。同时基于时间和文件大小分割日志文件。
- QQ、微信、新浪微博第三方登录。
- 工具类:excel导入导出,汉字转拼音,身份证号码验证,数字转大写人民币,FTP/SFTP/fastDFS上传下载,发送邮件,redis缓存,加密等等。
2、分布式任务调度框架 light-task-scheduler
项目简介:LTS(light-task-scheduler)主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务。有较好的伸缩性,扩展性,健壮稳定性而被多家公司使用,同时也希望开源爱好者一起贡献。
架构图
项目简介:XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
特性
- 简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
- 动态:支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,即时生效;
- 调度中心HA(中心式):调度采用中心式设计,“调度中心”基于集群Quartz实现,可保证调度中心HA;
- 执行器HA(分布式):任务分布式执行,任务”执行器”支持集群部署,可保证任务执行HA;
- 任务Failover:执行器集群部署时,任务路由策略选择”故障转移”情况下调度失败时将会平滑切换执行器进行Failover;
- 一致性:“调度中心”通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行;
- 自定义任务参数:支持在线配置调度任务入参,即时生效;
- 调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞;
- 弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务;
- 邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件;
- 状态监控:支持实时监控任务进度;
- Rolling执行日志:支持在线查看调度结果,并且支持以Rolling方式实时查看执行器输出的完整的执行日志;
- GLUE:提供Web IDE,支持在线开发任务逻辑代码,动态发布,实时编译生效,省略部署上线的过程。支持30个版本的历史版本回溯。
- 数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性;
- 任务依赖:支持配置子任务依赖,当父任务执行结束且执行成功后将会主动触发一次子任务的执行, 多个子任务用逗号分隔;
- 推送maven中央仓库: 将会把最新稳定版推送到maven中央仓库, 方便用户接入和使用;
- 任务注册: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址;
- 路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移;
- 运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
- 脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python等类型脚本;
4、基于 zookeeper 的分布式任务调度组件 uncode-schedule
项目简介:基于 zookeeper 的分布式任务调度组件,非常小巧,使用简单,只需要引入 jar 包,不需要单独部署服务端。确保所有任务在集群中不重复,不遗漏的执行。支持动态添加和删除任务。
功能概述:
- 基于zookeeper+spring task/quartz/uncode task的分布任务调度系统。
- 确保每个任务在集群中不同节点上不重复的执行。
- 单个任务节点故障时自动转移到其他任务节点继续执行。
- 任务节点启动时必须保证zookeeper可用,任务节点运行期zookeeper集群不可用时任务节点保持可用前状态运行,zookeeper集群恢复正常运期。
- 支持动态添加、修改和删除任务,支持任务暂停和重新启动。
- 添加ip黑名单,过滤不需要执行任务的节点。
- 后台管理和任务执行监控。
说明:
- 单节点故障时需要业务保障数据完整性或幂等性
模式架构:
项目简介:模仿国内知名B2C网站,实现的一个分布式B2C商城 使用Spring Boot 自动配置 Dubbox / MVC / MyBatis / Druid / Solr / Redis 等。
使用技术:
- 后台
- 使用
Spring Boot
构建整个项目 去除 XML 配置 Maven
构建项目Jenkins
作为持续集成- 采用
Dubbox
作为RPC框架 kryo
序列化- 使用
Spring
+Spring MVC
+MyBatis
SSM框架 - 数据库连接池使用
druid
- 数据库使用
MySQL
和Redis
- 页面引擎采用
Beetl
- 网页采用
freemarker
生成静态化页面 - 存储采用
FastDFS
存储图片等文件 - 采用
Solr
实现搜索服务 Swagger2
生成 RESTful Apis文档- 负载均衡使用
Nginx
、keepalived
实现高可用 - 采用
Spring Scheduled
做任务调度 - 消息中间件采用
RabbitMQ
- 在分布式事务上则采用了TCC解决订单支付方面时效性要求性高的分布式事务,可靠的消息服务则来解决如会计记录等时效性要求低的分布式事务.
- 使用
- 前台
- 采用基于AdminLTE的roncoo-adminLTE(主要增加了Ajax的布局模式)
- AdminLTE集成太多Js这里就不一一列举了
Copyright@OSChina.NET
制版编辑:Zico丨
本页刊发内容未经书面许可禁止转载及使用
公众号、报刊等转载请联系授权
欢迎转发朋友圈,投稿:chenyang@oschina.cn
关注码云官方微信公众号:码云Gitee
查看更多有趣的开源项目资讯,请前往:码云开源项目广场