名称解释

1.消息服务器

消息服务器,是一种功能单一的用来接受、传递、转发消息的服务器

其实这个不是一个专业的定义词汇 。
消息服务器作为网络的节点,专门用来存储、转发网络上的数据、信息(例如:聊天信息)。做一个形象的比喻:消息服务器就像是邮局的交换机,而微机、笔记本、PDA、手机等固定或移动的网络终端,就如散落在家庭、各种办公场所、公共场所等处的电话机。我们与外界日常的生活、工作中的电话交流、沟通,必须经过交换机,才能到达目标电话;同样如此,我们利用个人电脑,PDA,手机等,发送消息,也必须经过消息服务器,因此也可以说是消息服务器在“组织”和“领导”这些接收消息设备。
它是网络上一种为客户端计算机提供各种消息服务的高性能的计算机。它的高性能主要体现在高速度的运算能力、长时间的可靠运行、强大的外部数据吞吐能力等方面。
为什么需要消息服务器?
可以解决并发量大,数据发送量大的问题,可以把部分数据先放到消息队列里面,如果有数据库插入操作, 然后由消息服务器定时的插入数据库,这样可以防止大并发性的插入数据库导致数据库崩溃,读取的时候可以从消息服务器和数据库中读取信息。
 
2.消息引擎

系统 A 发送消息给消息引擎系统,系统 B 从消息引擎系统中读取 A 发送的消息。
 
最基础的消息引擎就是做这点事的!

  • 消息引擎传输的对象是消息;

  • 如何传输消息属于消息引擎设计机制的一部分。

既然消息引擎是用于在不同系统之间传输消息的,那么如何设计待传输消息的格式从来都是一等一的大事。试问一条消息如何做到信息表达业务语义而无歧义,同时它还要能最大限度地提供可重用性以及通用性?稍微停顿几秒去思考一下,如果是你,你要如何设计你的消息编码格式。

一个比较容易想到的是使用已有的一些成熟解决方案,比如使用 CSV、XML 亦或是 JSON;又或者你可能熟知国外大厂开源的一些序列化框架,比如 Google 的 Protocol Buffer 或 Facebook 的 Thrift。这些都是很酷的办法。那么现在我告诉你 Kafka 的选择:它使用的是纯二进制的字节序列。当然消息还是结构化的,只是在使用之前都要将其转换成二进制的字节序列。
 
消息设计出来之后还不够,消息引擎系统还要设定具体的传输协议,即我用什么方法把消息传输出去。常见的有两种方法:

  • 点对点模型:也叫消息队列模型。如果拿上面那个“民间版“的定义来说,那么系统 A 发送的消息只能被系统 B 接收,其他任何系统都不能读取 A 发送的消息。日常生活的例子比如电话客服就属于这种模型:同一个客户呼入电话只能被一位客服人员处理,第二个客服人员不能为该客户服务。
  • 发布 / 订阅模型:与上面不同的是,它有一个主题(Topic)的概念,你可以理解成逻辑语义相近的消息容器。该模型也有发送方和接收方,只不过提法不同。发送方也称为发布者(Publisher),接收方称为订阅者(Subscriber)。和点对点模型不同的是,这个模型可能存在多个发布者向相同的主题发送消息,而订阅者也可能存在多个,它们都能接收到相同主题的消息。生活中的报纸订阅就是一种典型的发布 / 订阅模型。

 

 

posted @ 2019-10-17 15:57  创造我的生活  阅读(160)  评论(0编辑  收藏  举报