我的问题是这么个场景:
系统分为省、市、县、客户几个级别,客户本身存储自己运行所需的数据信息,客户系统每天产生大量的数据,客户隶属于一个县级系统,县级隶属市级,市级隶属省级;
要求客户的数据定时同步到县级系统数据库,然后县级向上级系统同步,直到最高级系统;
而且在县级(及以上)系统可以对客户的系统进行远程配置(配置内容基本上是数据库中数据);
客户数据库为mysql,其他高层次系统为SQLSERVER
问题是这样:
Q1:每级系统之间的数据该采用何种方式同步,我想到的是将数据表中的数据添加一个是否同步的标识,每次同步时将为同步的数据整理到一个同步文件中,再将此文件通过socket发送到上级系统,由上级系统进行解析处理。但是这样总感觉不妥:1.实时性下降;2.本来服务器就承受大量的socket连接,加上这一功能,可能会影响服务器性能;
Q2:远程配置系统要求实时性,如何将实时的修改信息传送到客户系统?纯socket通讯?
望各位高手指点,如有不明白我在详细描述。
想回家过年啊。。。。
只能说,比较佩服你们的老板。喝的是牛奶....
这个肯定是政府系统了,真怀疑12306是不是这么搞出来的。
不是政府项目,其实这种系统也比较多的,像全国各大连锁的公司,各地在一定程度上独立,但又受上级公司的管理,我感觉像联邦式分布数据库系统,很头疼。。。大哥有啥好想法没???求指导啊、、、
@Raysonxin:
这样的项目你是想明年春节回去过年,还是后年春节回去过年呢?
今年...表示无语...这个项目不会低于100万吧...
要考虑的细节太多了,单是考虑,推演,构架,测试,网络互联测试,三个月时间搞不定的...
不好意思,提供不了太有用的信息给你,你这问题太大了...
这类的项目,要有很明确的信息,具体多少个省份,多少个县,多少个客户端,
每个客户端每天产生的数据量等等,都是必须有一个定量标准出来,
不是说一个软件在一台电脑可以运行,就可以在3000台电脑运行的。
量变会造成质变的。
@爱编程的大叔:
大叔说的在理儿,今年就是需要一个想法,指望这几天实现肯定是不可能的。。。您这也是经验之谈,对我这个未出茅庐的菜鸟来说也是值得学习的。。。
另外,麻烦您推荐个比较好用的ORM框架吧,看您写了几篇关于NHibernate的文章,谢谢。。。
@Raysonxin:
哈哈,Nhibenate那几篇是抄的,我试过一两次Nhibenate,不对胃口。
和WCF一样,配置文件一个地方不对,找错误要找半死。
现在还是在用Linq to SQL,比较轻,有看了看Entity Framework,
不过有个特性Linq to SQL有,Entity Framework 默认是没有的,还没找出他藏在哪儿。
100个客户端以内反正没问题,现在还是用着,毕竟用了几年了,太对胃口了。
我的长处和最近写“我是这么利用数据的”那家伙类似,更关注商务流程,
所以博客写不太来,很多感悟都是细节性的。
毕竟咱们不开放淘宝,不研究大数据。
通常500以下客户端开发的项目,出问题经常是流程设计及代码性能差,
而不是选用的框架性能差。
@爱编程的大叔: 我也是看着配置太麻烦就没有用,linq to sql确实不错,现在也在用。
楼主的想法其实挺好的啊,做了再说,回去高高兴兴过年。
第一点打包成一份文件,过去了服务端再解析,定时可以定在闲时不?
第二点不是很明白,最终是修改了数据库中的数据是吧,那来个值守任务,监听更改事件,一个是定时重新读取数据。
1.我说的这个定时,其实也应该根据服务器的空闲时间来进行分配,接的客户端比较多,应该就是你说的闲时。。。
2.对,最终就是修改数据库,上层系统和客户系统都需要修改。。。毕竟要同步嘛。。。
您说的值守任务可否详细说一下,谢谢。。
@Raysonxin:
所谓值守,基本原理类似事件订阅。数据被修改后同步出去,和数据缓存依赖项很类似,可以参考下。
其实吧,好复杂的系统,就不能一个省一个系统?
如果都是sql server,用自带的订阅发布功能就能轻松搞定了,有了mysql就麻烦了,恐怕mysql->sql server的就需要自己写程序处理了。
1,建议同步标志字段改为版本号字段,这样好操作些,每次更新只要版本号加一就行了,不用更新数据的时候修改标志,同步完数据又修改一次
2,建议不使用socket编程,既费劲又容易出错,不如让上级系统提供web方法,下级系统调用,这样开发快一些
3,关于实时性,底层系统可以定时调用上层系统的web方法,查看其版本号是否高于本地的版本号,如果高,则同步,并且把本地版本号修改为和高层系统的版本号一直,如果定时比较复杂,可以用类似Quartz 的工具实现。
4,高层配置低层也一样,反正是操作数据库,就和同步数据一样处理
-------------------------------------------------------------
要不改为B\S系统,使用同一个数据库,部署到公网上(如果数据量很大,访问量很大,考虑上性能、安全问题,估计春节前搞不完)
嗯,您这建议不错,学习了,我们尝试一下。改为B/S目前来看是不可能的,监控类系统的搞B/S优点力不从心啊。。。
为0!