刚来时搞不清楚POC什么意思,查了下在这也普及下:Proof Of Conception,概念证明。

背景:

属于中途介入、二次分包项目,之前的分包商做出的东西性能上稍微有些弱,架构上有些不合理。

设计:

数据推送流程:总部->大区->城市,考虑到总部压力大,将压力分摊到大区来做,总部只做数据入库。与甲方探讨此设计时,直接被毙掉,理由是出于安全考虑,大区不能直接访问总部DB。无奈,只能将压力再次压到总部系统。[甲方对此项目的理解并不完全清晰,有些需求也很不确定]数据过滤,数据分发,结果反馈,数据入库全部压到总部系统,大区只成了一个向城市分发数据的过道,不做任务处理将数据分下去,谈不上任何压力,也谈不上存在的必要性。只是简单的降低了一些数据分发时积压量。同时,还需要一套监控程序,来监控数据包在各个阶段流转的情况以及各个SERVER的状态。

实现:

消息系统:IBM Websphere MQ,Apache ActiveMQ,监控:Apache MINA,代码框架:Spring+MyBatis,数据库:MYSQL

测试指标:

100W数据入库+消息分发+结果反馈+关键数据入库,2-3分钟【数据到大区不下发,直接返回总部】。

关键点:

1、消息组包后分发,单纯从分角度讲,组包分发与单条分发效率上区别不大,但后期包的反馈结果要入库,此时若是单条返回,效率可想而知,即便是多消费者、多线程操作,效率上不及按包回馈。

2、数据批量操作,100W单条入库,相当耗时,分包后可一次入库,比如可分成200/包,只需处理5000次即可完成100W;同时消息反馈时,也可以一次入库。

3、接收IMQ消息时,可以单消费者接收数据,前提是采用多线程,数量不会有太多积压在通道中。

4、采用多线程处理数据,效率上能提升不少,但会出现数据安全性方面问题,所以代码实现时,多考虑些线程安全的对象来使用,一些非线程安全的对象谨慎使用。eg:SimpleDateFormat使用时需要每次都new一个对象,而不是写一个常量只同使用,;对象存储时只能Hashtable,而不能使用HashMap。

5、接口要畅通,避免接口使用前要加工成规则数据才能使用,造成不必要的时间浪费。

6、架构设计上可以更近一步,将总部与大区合并,形成虚拟大区,配合总部完成数据下发。

7、充分利用MyBatis的动态SQL功能,批量操作数据库。

手机扫一扫,欢迎关注公众号

关注程序员成长

南京POC项目总结-采用ActiveMQ进行项目实现的更多相关文章

  1. Spring Boot学习笔记:传统maven项目与采用spring boot项目区别

    项目结构区别 传统的maven构建的项目结构如下: 用maven构建的采用springboot项目结构如下: 二者结构一致,区别如下:传统项目如果需要打成war包,需要在WEB-INF目录结构配置we ...

  2. Java中数据库连接池原理机制的详细讲解以及项目连接数据库采用JDBC常用的几种连接方式

    连接池的基本工作原理 1.基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理.我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式 ...

  3. ActiveMQ服务器之间传输对象,项目A发送对象到项目B接收发送对象《二》

    ActiveMQ服务器之间传输对象,项目A发送对象到项目B接收发送对象<一> 上一篇文章写到对象之间传输使用线程方式 ,无法使用监听方式,最近解决了使用监听方式接收对象,本次使用配置文件方 ...

  4. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-2.快速搭建SpringBoot项目,采用IDEA

    笔记 2.快速搭建SpringBoot项目,采用IDEA     简介:使用SpringBoot start在线生成项目基本框架并导入到IDEA中 参考资料:         IDEA使用文档    ...

  5. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-1.快速搭建SpringBoot项目,采用Eclipse

    笔记 1.快速搭建SpringBoot项目,采用Eclipse     简介:使用SpringBoot start在线生成项目基本框架并导入到eclipse中 1.站点地址:http://start. ...

  6. 在基于ABP框架的前端项目Vue&Element项目中采用电子签名的处理

    在前面随笔介绍了<在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理>的处理,有的时候,我们在流程中或者一些文件签署的时候,需要签上自己的大名,一 ...

  7. Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍

    网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edisonchou/p/4458219.html 网站日志分析项目案例 ...

  8. 潭州课堂25班:Ph201805201 tornado 项目 第十二课 项目部署(课堂笔记)

    运行多个Tornado实例 网页响应不是特别的计算密集型处理 多个实例充分利用 CPU 多端口怎么处理 Linux 常见应用服务配置模式 nginx 和 supervisord:采用主配置文件 + 项 ...

  9. 使用eclipse构建Maven项目及发布一个Maven项目

    开发环境: Eclipse Jee Mars(截止2015年12月1日目前的最新版eclipse4.5),下载地址:http://www.eclipse.org/downloads/ 因为此版本已经集 ...

随机推荐

  1. DJango xadmin 表头和标底设置,显示隐藏和显示

    xadmin文件中的xadmin.pyfrom xadmin import views class GlobalSetting(object): site_title = "zwb" ...

  2. 自定义View实现图片热区效果

    我司主要从事工业物联网领域软件的开发,现有个需求,在外废品处理时需要对产品的不良位置进行标记,点选图片实现图片网格的着色功能. 需求是通过自定义view来实现,实现思路如下: 首先将点击的小方格对象实 ...

  3. 解决win10开机出现recovery there was a problem with a device connected to your pc

    问题描述: 开机无限重启并提示 recovery there was a problem with a device connected to your PC An unexpected I/O er ...

  4. stdlib.h,string.h,wchar.h的函数列表(cplusplus.com就有,很清楚)goodx

    Multibyte characters mblen Get length of multibyte character (function ) mbtowc Convert multibyte se ...

  5. Android开发环境搭建(原创)

    1,我的环境: win8 64位 2,软件安装: 1) jdk-7u40-windows-i586.exe 下载合适的版本,我下载的是 jdk7u40 32位 for windows 安装JDK,配置 ...

  6. 学习Java,值得你留意的问题(1)更名为《学习Java,容易被你忽略的小细节(1)》

    记得大二快要结束的时候,有个女孩子突然问我“你会Java吗,帮我做大作业好吗?” 实话说,那个女孩真的很漂亮,我当时也非常想帮她.但是我从来没有接触过Java,让我在短短的几天内完成Java程序设计课 ...

  7. vue补充

    一.安装vue-cli脚手架 1.淘宝镜像下载 用淘宝的国内服务器来向国外的服务器请求,我们向淘宝请求,而不是由我们直接向国外的服务器请求,会大大提升请求速度,使用时,将所有的npm命令换成cnpm即 ...

  8. 为什么Python中“2==2>1”结果为True

    在Python中,你可能会发现这样一个奇怪的现象: >>> 2 == 2 > 1 True >>> (2 == 2) > 1 False >> ...

  9. ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理

    在前面两篇随笔<ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理>和<ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程>开始 ...

  10. linux运维人员常用150个命令汇总

    命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) l ...