黑马程序员技术交流社区

标题: 【上海校区】系统间通信(2)——概述从“聊天”开始下篇 [打印本页]

作者: wuqiong    时间: 2018-6-12 11:40
标题: 【上海校区】系统间通信(2)——概述从“聊天”开始下篇
4-3、NIO通信框架

目前流行的NIO框架非常的多。在论坛上、互联网上大家讨论和使用最多的有以下几种:

这个系列的博客文章中,我们将花费一些篇幅讲解java 5.0以后提供的java原生NIO框架(IO复用模式)来深入实现原理,然后我们再以Netty 4.0.X框架为线路进行重点讲解。主要是为了让您理解Channel、Buffer、Selection(SelectableChannel、SelectionKey、Selecotor)在NIO思想中的重要地位。

5、通信方式

我们都是通过声带发声,通过口型和舌头控制音调、音量。声音传到对方的耳朵里,经过对方的大脑处理,再通过对方发声传到我们的耳朵里,于是我们的大脑得到了答案。

5-1、直接使用单纯HTTP请求

您对“简洁”的理解是什么样的呢?快速开发,快速部署、快速理解,还是调用速度快,并发支持高呢?无论您怎样理解“简洁”,有一个是事实您是无法否定的,很大一部分公司都是用单纯Http协议(使用标准WEB容器)+JSON信息格式的方式进行系统间通信。这种做法有几个好处:

5-2、直接使用HTTP调用的问题

但是直接使用HTTP,还是有一些问题:

5-2、RPC

本来在规划这个系列的文章指出,我没有计划要专门写RPC调用方式的,因为RPC的实现错中复杂,根本不可能几篇文章就说清楚。例如:在能够找到的文章中,有的人把protocol buffer归结为一种RPC的实现;而更多的文章会直接将RPC和服务治理联系起来;还有文章将RPC框架作为一种SOA(面向服务的架构)的实现进行讲述。当然以上的说法都是有依据的,后面我们会具体来讲;(但是有的文章的概念我确实不敢苟同,所以一定要懂得去伪存真啊^_^)

实际上RPC技术之所以难以和其他技术/规范 区分开,除了上面描述的表面现象外,更重要的原因是,目前实现了RPC框架的软件,往往都是把各种相互交错的技术规范/定义进行整合实现,又或者借鉴了RPC中的部分思想。例如,阿里的RPC框架Dubbo,除了遵循RPC规则以外,重要的功能还放在了服务治理的实现;

几位大神告诉我,如果不写RPC,那么这个系列的博文称为“系统间通信”就会变得有名无实或者文不对题了。所以,不管怎么都必须写。我大致的写作思路是:首先讲解RPC的概念、发展情况、工作原理。然后以自己实际工作中用到的RPC实现,进行使用的讲解。除了讲解使用,我们还会讲解几款HTTP-RPC、非HTTP-RPC的性能比较。当然,要写RPC就注定了这个系列中的一些观点,会被推到风口浪尖进行批判,到时候各位随意吐槽就是了。在这个系列的博文中,我们将重点讲解 特殊的RPC服务——JAVA RMI、阿里的RPC框架Dubbo(服务治理也会一起讲解)、Apache Thift。

5-3、MQ

消息队列又是另外一种系统间通信方式的实现。消息队列的规范目前有恩多种,针对的场景和实现的性能各不相同。这个系列的博文我们将花一定的篇幅介绍JMS、AMQP两种消息队列协议和实现(特别是AMQP协议),然后介绍Kafka消息队列和使用场景,最后前瞻一下目前号称最快的消息队列ZMQ。

6、整合手段——ESB和服务治理6-1、ESB

ESB(企业服务总线)是SOA的典型实现,各种ESB软件它们的共同特点是:将各个(有访问权限的)系统所提供服务集中在一起(进行管理、控制、协调),请求方只需要访问ESB软件,然后再由ESB软件代其访问指定的服务,最后返回处理结果。ESB的功能特点是代理。

这个系列的博文,我们将花比较大的篇幅,讲解Apache Camel的原理和使用,从而间接讲解ESB中的若干重要概念(服务顺序编排/定义,服务实现隔离、多协议支撑、协议翻译、转发代理、事务控制等)。如果有多出来的富裕时间,我们将讲解一个基于Apache Camel的真实工程。

目前市面上的共享/商用的ESB软件还有很多,例如JBossESB、普元EOS、还有IBM和ORACLE的ESB产品。不过还是那句话,理解原理和技术特点才是最关键的。

6-2、服务注册中心

服务注册中心,是SOA的另一种实现方式,和ESB最大的不同点是:“服务注册中心”主要提供各原子系统的服务注册、服务治理、服务隔离、权限控制。当客户端进行请求时,“服务治理”将告诉客户端到哪里去访问真实的服务,自己并不提供服务的转发。Dubbo就是一个典型的服务治理框架。

6-3、自行实现分布式调用服务

这个系列的博文,我们将基于zookeeper实现一个注册和管理中心,当然是一个简单的,只是为了说明服务注册中心的工作方式。

7、后文介绍

下篇文章我们就从“NIO、BIO通信框架”开始介绍了。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2