急求教:WEB省市两级数据库分布式访问的具体思路

zhllxt 2012-04-12 11:11:22
我们的项目需求是这样的:
在18个市部署数据库和WEB应用,市、县、乡的操作人员都访问该市里面的数据库和WEB应用;
现在的要求是:
省要部署一个数据库和WEB应用,省和18个市要实现互相访问相应的数据。
问题是:
项目的主要功能是类似电子邮件形式的功能(公文传输),比如县发一个公文给市,实际上是在数据里增加一条公文内容记录以及发送人记录和接收人记录,根据这些记录就可以实现发件箱和收件箱的功能。以前是仅仅在整个市级里面发(市县乡互相发),不往省里发,现在要求往省里发。省里面有自己的数据库和WEB应用,这样就麻烦了,项目该怎么做呢?比如市给省发一个公文,首先操作人登录的肯定是市的WEB应用,那么它发的公文就存放在市的数据上了,那么省怎么能知道有个市给他发公文了呢?同理省给市发公文,操作人登录的肯定是省的WEB应用,发的公文也就存放在省的数据库上了,那么市的用户又不知道省给他发公文了。
我们的想法是:将市的数据和省的数据完全同步(当然有一些细节这里不说了),市给省发时,在市数据库上存一份,在省的数据库上也存一份,这样可以解决这个问题。
但是我总是觉得这种做法并不是一个好的解决办法(邮件中有附件就比较麻烦了,还要考虑附件的问题),所以我想求教一下分布式的到底是怎么回事,像我们的这片情况到底该怎么做呢?我对分布式一点也不了解,像腾讯,门户网站等这种大型项目他们采用的什么方法呢,仅仅是数据库的同步还好操作一些,但是还要结合WEB上的功能,所以让我很头痛。
...全文
114 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
商科程序员 2012-04-12
  • 打赏
  • 举报
回复

如果实时性要求不强,可以每天县里把新数据报上去。
如果实时性强,那要不就实时同步数据,要不就要做接口去访问县里数据。只需要市和县做接口,县与县不做接口。
MiceRice 2012-04-12
  • 打赏
  • 举报
回复
啊哈,挺有兴趣探讨这个话题的,最近的项目也有这种需求,不过要求更复杂些。

早期的传统做法是直接实现省局集中,也就是市里的系统直接就不用了,省局集中建设一套系统,只要带宽足够也就没啥问题了,这种方案让应用系统最简单;坏处是出问题就全省瘫痪了。当然,这应该不是你这个问题的本意。

不过当省局升级到国家级的时候,这种方案就比较点力不从心了,这也是我所面临的问题。

可供选择的方案有几类:
◎ 从数据库层面解决:
——借助Oracle Goldren Gate之类的工具,实现数据的准实时双向同步;也就是你说的方式了。这种方式下,应用所需要注意的问题比较少,大概其也就几点(不过其实基本上哪种方案都需要注意这几点):
1、主键生成,分布式主键生成不能重复;
2、尽量消灭DELETE操作;
3、字段中建议保有lastModifyTime这种字段;
——中央数据库服务,省局建立中央数据库,各市用TimesTen做前置数据库,全部链接到省局中央数据库,部分表做缓存处理;其实是变相的做了省局集中。

◎ 从应用层面解决:
从架构设计上规定数据的流向和生命周期,并将核心功能全部服务化,然后用类似于邮件系统的方式来按照业务归属地来进行业务处理。这种情况下,一方面将各组织单位都当作一个独立系统来看待,但另一方面要同时建立一个总库。
比如某市发给省局的公文,就直接投递给省局这个系统;省局发给某市的公文则直接投递给该市的系统。
另一方面,所有各市和省局这些库,都要将数据周期性复制给总库,总库拥有全景数据;跨市或省级的监控和统计类查询由总库负责;必须注意的是,总库只负责提供查询,只读。


打字比较慢,还得写方案,回聊了。。。
zhllxt 2012-04-12
  • 打赏
  • 举报
回复
做接口这种方法我们也考虑过,也是觉得不是很合理的解决方法,我就是想了解一下,有没有更好的方法来实现,或者市面上有成型的解决这种问题的技术,我们拿来用一下也好。
我想大型门户网站用的肯定有专门的分布式的方案,不知道有没有人了解的能指导一下。

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧