`
卡拉阿风
  • 浏览: 101246 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

由单点登陆引发的问题(二):用户数据同步

阅读更多
用户数据同步:A系统在自己的数据库里有用户数据表,B系统在自己的数据库里有用户数据表,即他们相互独立。现在要求他们表里的用户名和密码能保持同步。A系统w r,B系统r;在A系统中进行用户的CRUD。B系统用户数据必须进行同步的CRUD。

针对这个场景,立哥给我提出了2个思路。
实时性要求比较高的: 
*A系统w,发送一条mq消息。B系统监听mq,收到消息,做单条数据同步   
实时行要求不高的: 
*可以考虑数据库同步--定时任务

由于用户在2个系统里来回浏览相对频繁,实时性要求较高。我们都偏向于第一个思路。

原先我打算采用httpclient。
即在A系统修改用户数据,通过httpclient来对B系统的进行操作。即按照传统的思想同步操作,但这样又带来了一个问题:增加了A系统和B系统的耦合度。

考虑异步方式:JMS (ActiveMQ)
引用

JMS
* 它可以把不影响用户执行结果又比较耗时的任务(比如发邮件通知管理员)异步的扔给JMS 服务端去做,而尽快的把屏幕返还给用户。
* 服务端能够多线程排队响应高并发的请求,并保证请求不丢失。
* 可以在Java世界里达到最高的解耦。客户端与服务端无需直连,甚至无需知晓对方是谁、在哪里、有多少人,只要对流过的信息作响应就行了,在企业应用环境复杂时作用明显。

ActiveMQ的特性:
* 完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,也是Apache Geronimo默认的JMS provider。
* POJO withdout EJB Container,不需要实现EJB繁琐复杂的Message Bean接口和配置。
* Spring Base,可以使用Spring的各种特性如IOC、AOP 。
* Effective,基于Jencks的JCA Container实现 pool connection,control transactions and manage security。


JMS两种实现方法
Topic==>消息主题     是发布/订阅机制 一个消息产生多个对应 1:N 
Queue==>消息队列     是点到点机制    一个消息产生一个对应 1:1 

无论采用哪种实现方式,在两个系统中,对应的physicalName必须相同,这样才能接收到消息。

JMS消息类型
1.使用 TextMessage 类
2.使用 BytesMessage 类
3.使用映射消息
4.使用流消息
5.使用对象消息

我采用的是第5种,注意对象必须实现java.io.Serializable接口,不然会抛出java.io.InvalidClassException。在A和B系统中的两个POJO必须完全一样,serialVersionUID也一样。

使用JMS集成两个应用,需要两个应用连接同一个jms server。
所以首先要确保B应用连接到A应用启动的embedded ActiceMQ。
<!--  embedded ActiveMQ Broker -->
	<amq:broker useJmx="false" persistent="true">
		<amq:persistenceAdapter>
			<amq:amqPersistenceAdapter directory="/home/dylan/JavaPro/amq"/>
		</amq:persistenceAdapter> 
		<amq:transportConnectors>
			<amq:transportConnector uri="tcp://localhost:61616" />
		</amq:transportConnectors>
	</amq:broker>
	
	  ActiveMQ connectionFactory  -->
	<!--连接自己的activeMQ -->
	<amq:connectionFactory id="jmsConnectionFactory" brokerURL="vm://localhost" />


<amq:connectionFactory id="jmsConnectionFactory" brokerURL="tcp://localhost:61616" />


关于ActiveMQ,可以参考
Apache ActiveMQ > Using ActiveMQ > Xml Reference > XBean XML Reference 5.0
http://activemq.apache.org/xbean-xml-reference-50.html#XBeanXMLReference5.0-connectionFactoryelement

ActiveMQ5.0实战一、二、三
http://www.iteye.com/topic/153171

引用来自:ActiveMQ4.1 +Spring2.0的POJO JMS方案
http://wiki.springside.org.cn/display/springside/ActiveMQ
分享到:
评论
3 楼 saiskysky 2010-02-24  
卡拉阿风 写道
saiskysky 写道
那请问如果有三个系统呢,也是这样做吗??

JMS采用topic

请问是否意思是当我其中一个系统中修改了数据,然后通知JMS 服务端,然后JMS会自动帮忙通知另外的系统做修改呢??有个问题是,如果两个系统的用户表信息均不同,那么需要怎么做比较好呢??(例如: 一个表里面信息有用户名,密码,邮箱,地址;另一个表信息:用户名,密码,邮箱,电话,如果修改的是邮箱,那么两个表都需要修改,但修改的是电话,另一个表也要做修改吗??)请指教,谢谢
2 楼 卡拉阿风 2010-02-23  
saiskysky 写道
那请问如果有三个系统呢,也是这样做吗??

JMS采用topic
1 楼 saiskysky 2010-02-22  
那请问如果有三个系统呢,也是这样做吗??

相关推荐

    简单实用的跨库数据同步工具FDataX

    FDataX是一款强大的数据同步工具,专为解决跨数据库的数据迁移和实时同步问题而设计。在IT行业中,数据同步是确保多个数据库之间数据一致性的关键环节,尤其在分布式系统、大数据环境以及云服务中,这样的需求更为...

    datax数据从hive导入mysql数据缺失解决

    如果文件块大小超过这一限制,可能会导致部分数据无法正确读取,从而引发数据缺失问题。 #### 解决方案 考虑到修改 DataX 源码的难度和复杂性,本次采取了一种更为简单的解决方案:通过调整 Hive 中的参数配置来...

    Android 线程同步Demo

    然而,如果没有正确地管理线程,可能会引发数据竞争、死锁等问题,这正是线程同步所关注的重点。线程同步是为了确保多个线程在访问共享资源时能按照预定的顺序进行,避免出现不一致的状态,保证程序的正确性和稳定性...

    企业用户管理研究与应用.docx

    综上所述,基于LDAP标准协议、Web技术和数字证书技术的统一用户管理和认证方案,能够有效解决企业内部用户数据异构问题,实现用户数据的集中管理、单点登录等功能,进而提高工作效率、降低维护成本并增强系统安全性...

    省级业务运营支撑系统业务技术规范-数据一致性管理机制分册

    5. 数据同步:通过主从复制、双活架构等方式,确保多副本间数据的一致性。 三、数据一致性与业务流程集成 1. 异步处理:通过消息队列实现业务解耦,确保关键操作的顺序,保证数据一致性。 2. 业务补偿机制:对于...

    最新亲测可用时间同步工具.rar

    对于企业环境,可能需要配置多个NTP服务器以确保冗余和可靠性,同时避免单点故障。 时间同步的重要性体现在多个方面: 1. 数据一致性:在分布式系统中,时间同步有助于确保所有节点在同一时间点进行操作,避免因...

    网络游戏-在DBC和蜂窝网络之间控制通道的同步.zip

    同时,为了防止单点故障,数据会在多个节点间复制,确保即使部分服务器失效,游戏仍能正常运行。 6. **事务处理**:在DBC中,事务处理是确保数据一致性的重要手段。比如,玩家购买道具的操作,必须保证在DBC中成功...

    在ASP.NET 2.0中操作数据:批更新数据(源码)

    批处理通常在处理大量数据更改时使用,例如在后台处理或数据同步场景。 批更新数据的基本思想是将多个更新操作组合成一个或几个SQL语句,而不是为每个单独的数据更改执行一次数据库查询。这不仅可以减少网络延迟,...

    数据库原理与应用习题参考答案解析.doc

    - 数据不一致性,当一处数据更新,其他地方未同步,可能引发错误。 - 数据联系弱,部门间的文件数据难以共享和整合。 2. 数据库阶段的数据管理: 进入数据库阶段,数据管理呈现出新的特色: - 数据模型的引入,...

    采用FPGA实现合并单元同步采样的方案.pdf

    由于晶振的频率稳定性受温度、时间和外部环境的影响,其内部频率的微小变化会在同步采样中引发误差。 ### 同步方式 MU的同步方式通常遵循IEC 60044-8协议,并采用分层分布式结构。MU接收电或光的秒脉冲(PPS)信号...

    报关单录入系统模版

    5. 在实际操作中,应遵循国家的海关法律法规,如实、准确地填写报关单,以免引发法律问题。 综上所述,【报关单录入系统模版】是提升报关效率、保证数据质量的重要工具,其功能丰富,易于使用,能有效协助企业和...

    九年级历史下册第二单元第二次工业革命和近代科学文化第6课工业化国家的社会变化同步练习新人教版.doc

    5. **环境污染与工业革命**: 全球变暖和早期的环境污染问题与工业革命密切相关,标志着人类社会开始面临由工业化引发的环境挑战。 6. **工业革命与环境立法**: 文件名称揭示了当时为应对环境污染而制定的法律,表明...

    NTP 同步及服务器软件

    - 负载均衡:在大型网络环境中,可能需要设置多个NTP服务器,以实现负载均衡和冗余,防止单点故障。 - 客户端配置:确保局域网内的所有设备都配置为使用NTP服务器进行时间同步,这可以通过系统设置或脚本自动化完成...

    时间同步软件源码

    8. **安全性考虑**:虽然时间同步本身不会引发重大的安全问题,但攻击者可能会尝试篡改时间信息,以逃避某些基于时间的安全策略,如登录限制或证书有效期检查。因此,软件应该设计为只从可信的NTP服务器同步时间。 ...

    火山PC取字节集数据和置字节集值的深度错误解析

    2. 并行访问:在多线程环境下,不正确的同步可能导致数据冲突,应确保对共享资源的访问是原子的或已加锁。 3. 对齐问题:某些硬件或操作系统对数据存储有对齐要求,不满足对齐条件可能导致性能下降或错误。 三、...

    数据链路层.pptx

    数据链路层是计算机网络协议模型中的第二层,它的主要任务是确保数据可靠、高效地在物理链路上进行传输。这一层将不可靠的物理连接转化为逻辑上的无差错的数据链路,为网络层提供服务。以下是数据链路层的关键知识点...

    手机端测试问题表11.11 - 副本.doc

    - **解决建议**:确保数据同步机制的准确性,优化数据传输过程中的处理逻辑,确保两端显示的信息一致。 3. **发货时间设置异常** - **现象描述**:用户可以将收货时间设置为过去的日期,系统不会进行任何错误提示...

    智能变电站同步系统对测量设备的影响及其处理策略.docx

    在组网模式下,如果主时钟设备出现故障或时钟源切换不当,将导致采样数据不同步,从而影响测量结果,例如功率计算错误、调度端数据异常,甚至可能引发保护设备的错误动作。此外,如果站内主时钟或扩展时钟出现损坏或...

    linux 同步进程

    为了解决这些问题,Linux系统采用了多种机制来确保进程间的同步: 1. **临界区管理**:通过锁定机制确保每次只有一个进程可以进入临界区,从而避免资源访问冲突。 2. **信号量与PV操作**:信号量是一种同步工具,...

Global site tag (gtag.js) - Google Analytics