本人是大连理工大学的一名研三学生,研究生主要从事的是电力市场的研究与系统落地。一次偶然的机会,从在阿里工作的同学口中得知了飞天加速计划,准备借助云平台对原有的系统进行DDD的改造与开发。电力市场平台目前已经发展到第二期了,随着实际业务的发展,一期系统运行速度慢,不够灵活的缺点也开始显现出来,二期结算子系统应运而生。为了使系统更具有灵活性、用户友好性,采用了新的MVC设计思想,新的页面划分,新的权限设置。主要完成了以下功能点:
1.交易中心操作界面:具有信息发布、方案管理、市场管理、市场运营、调度校核、交易参数、资格统计、保证金管理、合同管理、交易服务费管理、集团用户管理、偏差管理、统计报表、优先电量管理、中长期曲线分解、历史电量查询等功能。
2.发电企业操作界面:发电企业自身的合同管理、交易服务费管理、偏差管理、统计报表、中长期曲线分解、历史电量查询、交易参数、信息发布及市场总览等功能。
3.售电公司操作界面:售电公司自身的合同管理、交易服务费管理、保证金管理、统计报表、中长期曲线分解、历史电量查询、交易参数、信息发布及市场总览等功能。
4.用电企业操作界面:用电企业自身的合同管理、交易服务费管理、统计报表、中长期曲线分解、历史电量查询、交易参数、信息发布及市场总览等功能。
但是基于MVC三次架构的分层方式往往使用贫血模型进行开发,容易陷入一种数据驱动的高耦合方式,往往业务不清晰,可拓展性较差。想使用DDD的设计模式对原有代码进行完善,并进行毕业论文的撰写。
项目收获:
技术实现:SpringCloud + SpringBoot + MyBatis + Redis + Oracle + RabbitMQ + FastDFS
1.使用SpringCloud搭建项目,集成Eureka实现服务注册与发现,使用Config+GitLab私有服务器实现统一配置,使用Zuul配置各服务间的路由规则,构建鉴权中心,实现单点登录与服务间的调用鉴权。
2.开发实时挂牌交易算法,引入RabbitMQ处理高并发订单,使用Redis保存和恢复宕机数据。
3.为提升用户体验,采取异步化设计,使用CompletableFuture反馈异步结果,开发业务监控功能集中监控任务进度,引入xxl-job异步化定时任务,调度次数达432万余次。
4.为提升查询效率,对于可变数据使用Redis缓存,固定数据使用CommandLineRunner在启动时加载。
5.为满足多主体的结算规则,开发定制化算法,结果幂等,使用深拷贝对特殊用户进行处理,已产生结算数据1200万余条,利用池化技术对数据进行高效的获取与归档,并使用联合业务主键控制数据幂等。
6.基于JXML+easyPoi+itextpdf实现了EXCEL/PDF文件的解析与生成,开发电子签章通用接口,保障数据可信,使用FastDFS构建分布式文件服务器,并解决了高并发场景下的错单问题,已出具结算清单130万余张。