这并不是原理性的解释文章。而是快速入门,还有一个完整的Java例子。
一篇我觉得不错的文章推荐:深入浅出 RPC - 浅出篇
什么是RPC?
RPC(Remote Procedure Call)远程过程调用。见名知意 - 从远程主机调用一个过程/函数。
RPC的目标是:使得程序调用其它远程主机上的函数,好像调用本程序内的函数一样简单。并且屏蔽编程语言的差异性。
要实现上述目标,首先的是设计一种通讯协议,被称之为:RPC协议(Protocol)
RPC协议不是一个具体的协议,而是一个类型名,代表一类协议,这类协议叫做RPC协议;
RPC协议在TCP/UDP之上,广义上可以跨越平台、语言进行应用间通讯(说广义是因为可以开发一个协议且不支持跨语言);
为什么要用RPC?
其实这是应用开发到一定的阶段的强烈需求驱动的。
如果我们开发简单的单一应用,逻辑简单、用户不多、流量不大,那我们用不着;
当我们的系统访问量增大,业务增多时,我们可以将业务拆分成几个互不关联的应用,分别部署在各自机器上,以划清逻辑并减小压力。此时,我们也不太需要RPC。
(划清逻辑减小压力:一台机器运行一个集成了很的较大程序当然不如多台机器各自运行独立的小程序)。
当我们的业务越来越多应用也越来越多时,自然的,我们会发现有些功能已经不能简单划分开来或者划分不出来,应用之间的交互已经不可避免。此时,可以将公共业务逻辑抽离出来,将之组成独立的服务Service应用。而原有的、新增的应用都可以与那些独立的Service应用交互。此时,我们急需一种高效的应用程序之间的通讯手段来完成这种需求,所以你看,RPC大显身手的时候来了!
其实3描述的场景也是服务化、微服务和分布式系统架构的基础场景。即RPC框架就是实现以上结构的有力方式。
有哪些RPC?
有很多RPC框架:CORBAR、Thrift、Dubbo等等。基本上他们分为两种类别:
一种是跨语言的;
一种是同语言的,如果你的分布式应用架构主体都是Java应用,显然我们不应该使用跨语言的RPC来多一层中转浪费效率。
就Java来说,我认为其本身API提供的RMI就是一种RPC协议,但是其毕竟太原始,需要自己去添加很多机制才能上生产环境。所以,今天介绍下我最近使用的Dubbo框架。
什么是Dubbo?
Dubbo是阿里巴巴为Java开发的RPC,据网上评价来看,非常不错。在Dubbo开源后很多公司都使用其来构建自己的分布式架构。今天我来做一个使用实例。
由于Dubbo官方文档已经把一切都说的很详细了,我就不没意思的摘抄了,放上地址:官网
官网上也有详细使用方法,那我为什么还要写个使用实例呢?
是因为,似乎到2012年,Dubbo已经比较稳定的完成了所有开发,所以现在Dubbo其实是在一个松散的维护状态下的。有些文档内容已经失效:地址无法访问,一些错误没有明确说明。
所以参照官网会有一些问题,我这里就是解决了某些问题而完成的一个实例,放在这里供大家参考。
建议大家先去看文档,形成一个整体概念再做实例。dubbo框架
所以,我的整体架构是这样的:
使用Dubbo来服务化(基于Spring);
使用Zookeeper集群作为Dubbo服务的注册中心(Zookeeper简介与安装);
使用Dubbo提供的一个JavaWeb项目作为Dubbo服务管理控制台;
创建了一个服务提供者项目(pom父项目) - 叫dubbo-practice-provider;
创建了一个服务消费者项目(pom父项目) - 叫dubbo-practice-consumer;
另外说一点,这两个只是练习项目,实际上一个项目可以既是提供者也是消费者。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-39219-1.html
萌死我啦
只是在阴沟里不容易被发觉
你是马总浱来吗
上高中学文的