刚来时搞不清楚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. Windows证书的生成导出以及使用证书验证文件是否被修改

    本文介绍了如何使用Windows自带的证书生成器生成,导出,使用证书.并以验证文件是否被修改举例 1.证书相关辅助类 public sealed class DataCertificate { #re ...

  2. NUGET源不存在,安装Nuget包提示“本地源不存在”

    困扰了两天的问题,终于找到原因了.因此来这里记录一下~ 前两天写项目时,要从NUGET上安装个第三方库,但不管是从可视化的管理器还是管理器控制台安装,都提示“本地源‘*******’不存在”.然后到网 ...

  3. thinkphp5 phpexcel基本设置

    //引入类 header('Content-type: text/html; charset=utf-8'); import('Org.Util.PHPExcel'); import('Org.Uti ...

  4. Win8 Metro(C#)数字图像处理--2.51图像统计滤波算法

    原文:Win8 Metro(C#)数字图像处理--2.51图像统计滤波算法  [函数名称]   图像统计滤波   WriteableBitmap StatisticalFilter(Writeab ...

  5. Android 开发中,as或者idea对gradle的使用

    原文:Android 开发中,as或者idea对gradle的使用 本文属于转载收藏,侵删,出处:私人博客 ---------------------------------------------- ...

  6. winform picturebox设置布局样式

    这里分背景图和直接显示的图片的布局 背景图的布局为BackgroundImageLayout设置为strecth即为自动拉伸 图片的布局为SizeMode 设置为StretchImage即自动拉伸

  7. xen学习(一)

    添加镜像源 [root@xen xen]# cat /etc/yum.repos.d/xen.repo [xen] name=xenserver baseurl=http://mirrors.163. ...

  8. ML:吴恩达 机器学习 课程笔记(Week7~8)

    Support Vector Machines Unsupervised Learning Dimensionality Reduction

  9. FMXUI中的三大杀器:TView、TLinearLayout、TRelativeLayout

    好了,今天我们来介绍下FMXUI中的三大杀器:TView.TLinearLayout.TRelativeLayout. [名词定义] 非布局组件: 组件名不是以Layout结尾的组件,Delphi自带 ...

  10. [書訊]《.NET 依賴注入》 (2014-12-08 更新)

    书 名:.NET 依赖注入 页 数:235 格 式:PDF.EPUB.MOBI难易度:中阶至进阶出版日期:2014 年 12 月 8 日ISBN:9789574320684 简介 本书内容是关于 .N ...