GPS部标监控平台的架构设计(十一)-基于Memcached的分布式Gps监控平台
部标gps监控平台的架构,随着平台接入的车辆越来越多,架构也面临越来越大的负载挑战,我们当然希望软件尽可能的优化并能够接入更多的车辆,减少在硬件上的投资。但是当车辆增多到某一个临界点的时候,仍然要面临的三个问题:
1)连接的限制
服务器软件接入终端的连接数是有限的,无论如何优化,都是有限的,接入的增多就会排队,超时timeout重置reset等问题就会出现;
2)部标808服务器软件的内存限制的问题
内存的限制,服务器操作系统中一个进程所承受的内存是有限制的,超过则导致服务器软件进程内存溢出而退出。
3)数据库承受的并发压力和数据压力越来越大,随着gps数据和报警数据海量增长,数据库备份、数据库服务器响应速度变慢,进而网站的响应速度等都会变慢。用户体验效果会越来越差。
对于第一个问题,我们采用多个分布式的gps服务器或者负载均衡来解决,对于后面两个问题,我们引入Memcached这个分布式的缓存服务器,来解决内存和数据库并发压力这两个问题,关于Memcached的介绍,网上有很多,官方中文网站:http://memcache.com.cn/。

这里重点说一下,Memcached在部标监控平台架构中的位置和应用。
1.GPS监控平台包含了808服务器、809服务器、web服务器、油耗里程定位计算服务等多个子系统,这些系统对于实时数据和静态数据的调用特点是高频次调用,基于Memcached的分布式缓存,解决了各个子系统之间共享缓存的问题,也解决了采用本地缓存造成的数据同步困难的问题,如车辆信息中的车牌号用户在web界面上进行更改,采用本地缓存,则只是更新到web子系统,如果采用EHcache,需要做比较复杂的配置,这完全没必要。
2.不同于电子商务平台的订单数据对于事务一致性要求很高,监控系统的特点是实时,它对于数据的时效性要求较高,所以即使Memcached没有集群,是一个单点的缓存服务,即使缓存服务不运行或者运行故障,我们在架构设计的时候,只要考虑到这点,整个系统在Memcached故障的情况下,仍然可以运行或者支撑住一直到Memcached恢复服务。
3.对于gps监控,我们需要看到实时的gps数据和报警,这些实时的数据,我们可以放在内存当中,而不是直接保存在数据库中,这样可以减少数据库的压力。运行在不同进程的模块,可以共享实时的gps数据,而不用不断的查询和更新数据库。所以我们把Memcached作为一个中央缓存系统,然后对Memcached client封装成一个ICacheService接口的标准Memcached实现,里面做了Memcached故障失效的判断,由各个子系统引用,各个子系统共享信息,一个系统负责更新和维护数据,由于数据放在缓存服务器上,这样808gps服务器的内存压力就大大减小了。这样我们可以肆无忌惮的调用车辆信息而不用担心频繁查询数据库的性能损失了。
Memcached架构如下图所示:

Memcached作为服务器端,要想调用,还需要各个模块集成Memcached缓存,网上提供了.NET和.java的客户端,我们需要结合自己系统的数据结构和架构,封装成面向对象的缓存服务。
GPS部标监控平台的架构设计系列文章已经写到十一章了,如果需要阅览以前一到十的文章,请阅读》GPS部标监控平台的架构设计系列
GPS部标监控平台的架构设计(十一)-基于Memcached的分布式Gps监控平台的更多相关文章
- GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台
在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的 ...
- GPS部标监控平台的架构设计(八)-基于WCF的平台数据通信设计
总体来讲,GPS部标平台的软件开发是一个对网络通信和应用程序之间通信的技术应用密集型的开发工作,也是有一定设计技术含量的工作. 1.设计通信接口 在设计的时候,根据职责划分,拆分成不同的应用子系统,对 ...
- GPS部标平台的架构设计(三) 基于struts+spring+hibernate+ibatis+quartz+mina框架开发GPS平台
注意,此版本是2014年研发的基于Spring2.5和Struts2的版本,此版本的源码仍然销售,但已不再提供源码升级的服务,因为目前我们开发的主流新版本是2015-2016年近一年推出的基于spri ...
- GPS部标平台的架构设计(四)-百度地图设计
部标GPS软件平台之百度地图设计 地图是客户端中不可缺少的一个模块,很多人在设计和画图时候,喜欢加上地图引擎这样高大上的字眼,显得自己的平台有内涵,说白了就是用第三方的SDK来开发,早期的GPS监 控 ...
- 基于ROS的分布式机器人远程控制平台
基于ROS的分布式机器人远程控制平台 1 结构说明 HiBot架构主要使用C/S架构,其中HibotServer为服务器,Muqutte为消息服务器中间件,HiBotClient为运行在机器人上的 ...
- GPS部标平台的架构设计(九)-GPS监控客户端设计
交通部的部标过检,所有的测试都是从客户端发起的,也是在客户端体现的,在客户端承载了部标标准所要求的所有的功能,是整个部标平台当中工作量最大的部分,也是最繁琐的部分. 客户端设计面临两个问题: 1.基于 ...
- GPS部标平台的架构设计(一)
设计和开发一个GPS系统似乎并不太难,很多人马上就想到了地图,放大,缩小之类的功能,最多就是在加点报表之类的东西,就成了. 这种观点造成了业界内,很多GPS系统粗制滥造,不堪大用. 事实上,设计和开发 ...
- GPS部标平台的架构设计(二) 可扩展性设计
在设计的前夕,设计人员喜欢把领导对未来业务的期望带入到设计目标当中,比如当前业务也不过是接入几千辆车,未来业务增长也不过几万台,但领导很多激情,强势要求二期平台的接入能力要达到20万台,这个要求带入到 ...
- GPS部标平台的架构设计(六)-Android手机客户端和手机查车设计
对于GPS软件平台,虽然有功能非常丰富的PC端或BS客户端,但是客户也是需要移动客户端来作为自己的辅助工具,也是需要的.做为GPS平台的设计者和开发者,在开发移动客户端的时候,也需要从常规的服务器开发 ...
随机推荐
- android中四大组件之间相互通信
好久没有写有关android有关的博客了,今天主要来谈一谈android中四大组件.首先,接触android的人,都应该知道android中有四大组件,activity,service,broadca ...
- 分布式缓存技术memcached学习(二)——memcached基础命令
上文<linux环境下编译memcahed>介绍了memcahed在linux环境下的安装以及登录,下面介绍memcahed的基本命令的使用. Add 功能:往内存增加一条新的缓存记录 语 ...
- scala tail recursive优化,复用函数栈
在scala中如果一个函数在最后一步调用自己(必须完全调用自己,不能加其他额外运算子),那么在scala中会复用函数栈,这样递归调用就转化成了线性的调用,效率大大的提高.If a function c ...
- Windows平台下为Python添加MongoDB支持PyMongo
到Python官网下载pymongo-2.6.3.win-amd64-py2.7.exe 安装pymongo-2.6.3.win-amd64-py2.7.exe 参照官方的用例进行测试 打开命令提示符 ...
- 【转】ArrayList循环遍历并删除元素的常见陷阱
转自:https://my.oschina.net/u/2249714/blog/612753?p=1 在工作和学习中,经常碰到删除ArrayList里面的某个元素,看似一个很简单的问题,却很容易出b ...
- 我觉得好用的VS扩展(不定期更新)
首先向这些扩展的创作者致敬 这里都是2013版的 有些在给出的连接里有该扩展支持的其他版本连接 当然你也可以通过 VS->工具->扩展和更新->在线->搜索扩展名 来找到它们 ...
- 简单翻译工具--必应词典第三方api使用方法
之前做过一个桌面翻译工具,桌面每日一句--桌面翻译工具(有道翻译,微软翻译,Google翻译) 获取金山每日一句,目前因为 金山每日一句页面改变导致每日一句功能失败,不过这工具自己用得最多的还是翻译功 ...
- js面向对象总结(一)
在 js 中,对象由特性(attribute)构成,特性可以是原始值,也可以是引用值.如果特性存放的是函数,它将被看作对象的方法(method),否则该特性被看作对象的属性(property).在js ...
- WCF的同步和异步(以WPF连接为例)
2016-06-0711:05:44 在学习WCF时,学到WCF服务的同步和异步. 我理解的同步是: 当WCF服务是同步执行时,程序只有一条线程,代码只能按顺序一步一步来执行,当执行客户端/服务端某方 ...
- [转]RMAN检测数据库坏块
backup validate check logical database; select * from v$database_block_corruption; RMAN> backup v ...