您的位置:首页 > 其它

中间件--消息中间件(一)应用背景和场景

2018-01-03 23:47 447 查看
背景:

应用集成面临的几个问题

1.网络是不可靠的

2.分布式下网络的速度不足够的快

3.任何两端的应用可能是不同的,应用实现方式、语言,不同数据格式等

4.应用随着需求改变难以避免,集成的方式方案必须能跟得上关联应用的变化

应用集成标准

1.应用耦合性,应该减少应用之间的依赖性;

2.干扰性,新加入应用尽量减少对现有应用改造性;

3.数据格式,所集成的应用必须协商好交换数据的格式,因为使用统一的数据格式而修改已有的应用是很困难,甚至不可能。与之相关的是数据格式的演化及其可扩展性—数据如何随着时间改变,以及这些改变对应用造成什么影响

4.数据时间特性,当某个应用决定共享一些数据,其他应用拥有这些数据时,集成要尽量缩短共享的时间。采用频繁交换少量数据的方式可以满足这一需求。(理想情况是,接收方应用在共享数据准备好时,能够立即得到通知)

5.数据或功能,应用之间不仅仅要能够共享数据,还必须要能够共享功能,共享功能可以在应用之间提供更好的抽象。

6.远程通信和可靠性,同步处理方式尤其远程调用要比本地过程慢,且不可靠。可能希望采用异步特性来提高效率,但是这种方式开发和调试都更为复杂。

几种集成方式总结:

1.文件



文件传输:

   一个应用写文件,另一个应用读该文件;

优点

   使用简单,适合准实时类业务场景

缺点

1)应用之间需要协商文件名、文件位置、文件格式,甚至读写时间,以及谁负责删除这个文件;

2)同时缺乏时间上的特性。

2.共享数据库



共享数据库:

  多个应用共享同一数据库,数据库位于独立的物理数据库中,由于共享因此不需要将数据在应用之间传递

优点:

  满足文件共享数据在时间上的特性要求,能够及时的共享并传递变更的数据。

  标准化的SQL支持,完善的配套工具

缺点:

  要求数据提供一个合适的设计,即使一定扩展性预留,还是会给应用带来限制

  未封装的数据结构,应用使用数据修改可能会触发数据库数据结构修改,数据库修改又会带来共享数据的应用改造,增加维护集成难度

3.远程过程调用



远程过程调用RPC:

 一个应用开放其部分功能,使得其它应用能够远程访问这些过程,它们之间的通信是实时、同步的。

优点:

 共享数据传递基础上,通过支持远程调用的方法能够及时触发对应应用做出响应,同时提供过程方通过方法封装也为共享数据提供了隐藏特性。

 共享应用功能。

缺点:

 虽然应用集成双方不需要共享统一的数据结构,但是应用还是需要紧密耦合在一起。

 性能可能会下降,尤其复杂的远程调用关系,导致的应用失败率可能会提升。

4.消息集成模式



消息集成模式:

 一个应用开放其部分功能,使得其它应用能够远程访问这些过程,它们之间的通信是实时、同步的。

优点:

 提供了一种更加松耦合的异步方式来集成应用,使用消息来频繁交换少量数据。同时存储数据结构和模式对应用隐藏,方便应用修改。

 能够为不同应用、系统提供及时的协作能力。

缺点:

 对应用使用的要求提升,异步事件开发模式改变过去基于远程过程调用和数据库共享数据、功能的模式。

 对于熟悉DB开发模式的团队,对消息屏蔽应用传递的方式可视、可管控提出挑战。

消息中间件应用场景

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件。


1.系统集成中屏蔽异构应用的细节

发送方、接收方系统之间不需要了解双方,只需认识消息标准格式定义。

2.支持异步传输,具备消息堆积能力,实现流量削峰

发送方接收方不需同时在线,具备消息堆积能力;发送方接收方不需同时扩容,方便实现流量削峰。

3.系统解耦

防止引入过多的API给系统的稳定性带来风险,屏蔽调用方使用不当和被调换用方处理不当给系统造成的压力和影响。因为交互系统之间没有直接的调用关系,只是通过消息传输,所以系统侵入性不强,耦合度低。

4.复用

一次发送可以多次消费,避免重复调用。

5.提高系统处理效率

一套业务流程可能涉及多个串行的业务逻辑处理才能完成。如果引入消息队列进行架构设计,就可将紧急重要(需要立刻响应)的业务放到调用方法中,响应要求不高的业务逻辑提炼成消息发送到消息队列中,让消费者继续进行后面的业务逻辑处理。我们通过在架构中引入消息队列可以提高系统的处理效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: