轻量级分布式rpc框架-编程开发技术

轻量级分布式rpc框架-编程开发技术

ID:30875496

大小:344.87 KB

页数:30页

时间:2019-01-04

轻量级分布式rpc框架-编程开发技术_第1页
轻量级分布式rpc框架-编程开发技术_第2页
轻量级分布式rpc框架-编程开发技术_第3页
轻量级分布式rpc框架-编程开发技术_第4页
轻量级分布式rpc框架-编程开发技术_第5页
资源描述:

《轻量级分布式rpc框架-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、轻量级分布式RPC框架・编程开发技术轻量级分布式RPC框架原文出处:黄勇RPC,即RemoteProcedureCal1(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC可基于HTTP或TCP协议,WebService就是基于HTTP协议的RPC,它具有良好的跨平台性,但其性能却不如基于TCP协议的RPCo会两方面会直接影响RPC的性能,一是传输方式,二是序列化。众所周知,TCP是传输层协议,HTTP是应用层协议,而传输层较应用层更加底层,在数据传输方面,越底层越快,因此,在一般情况F,TCP一定比HTTP快。就序列化而言,Java捉供

2、了默认的序列化方式,但在高并发的情况下,这种方式将会带来一些性能上的瓶颈,于是市面上出现了一系列优秀的序列化框架,比如:Protobuf>Kryo>Hessian>Jackson等,它们可以取代Java默认的序列化,从而提供更高效的性能。为了支持高并发,传统的阻塞式10显然不太合适,因此我们需要异步的10,即NIOoJava提供了NI0的解决方案,Java7也提供了更优秀的NI0.2支持,用Java实现NI0并不是遥不可及的事情,只是需要我们熟悉NI0的技术细节。我们需要将服务部署在分布式坏境下的不同节点上,通过服务注册的方式,让客户端来自动发现当前可用的服务,并调用这些服

3、务。这需要一种服务注册表(ServiceRegistry)的组件,让它来注册分布式环境下所有的服务地址(包括:主机名与端口号)。应用、服务、服务注册表之间的关系见下图:每台Server上可发布多个Service,这些Service共用一个host与port,在分布式环境下会提供Server共同对外提供Service。此外,为防止ServiceRegistry;1;现单点故障,因此需要将其搭建为集群环境。木文将为您揭晓开发轻量级分布式RPC框架的具体过程,该框架基于TCP协议,提供了NTO特性,提供高效的序列化方式,同时也具备服务注册与发现的能力。根据以上技术需求,我们可使用

4、如卜•技术选型:1.Spring:它是最强大的依赖注入框架,也是业界的权威标准。2.Netty:它使N10编程更加容易,屏蔽了Java底层的NIO细节。3.Protostuff:它基于Protobuf序列化舟£架,面向POJO,无需编写.proto文件。4.ZooKccpcr:提供服务注册与发现功能,开发分布式系统的必备选择,同时它也具备天生的集群能力。1第一步:编写服务接口packagecom.king.zkrpc;/***定义服务接口*/publicinterfaceHelloService{Stringhello(Stringname);将该接口放在独立的客户端jar

5、包屮,以供应用使用。2第二步:编写服务接口的实现类packagecom.king,zkrpc;/***实现服务接口*/@RpcService(HelloService.class)//指定远程接口publicclassHelloServiceTmplimplementsHelloService{@0vcrridepublicStringhello(Stringname){return"Hello!"+name;}}使用RpcService注解定义在服务接口的实现类上,需要对该实现类指定远程接口,因为实现类可能会实现多个接口,一定要告诉框架哪个才是远程接口。RpcServic

6、e代码如下:packagecom.king.zkrpc;importorg・springframework・stcrcotypc.Component;importjava.lang.annotation.ElementType;importjava.1ang.armotalion.Relention;importjava・lang,annotation.RetentionPolicy;importjava・lang・annotation.Targct;/***RPC接口注解*/@Target({ElementType.TYPE})©Retention(RetentionPo

7、licy.RUNTIME)©Component//标明可被Spring扫描public@inlerfaceRpcService{Classvalue();该注解具备Spring的Component注解的特性,可被Spring扫描。该实现类放在服务端jar包屮,该jar包还捉供了一些服务端的配置文件与启动服务的引导程序。3第三步:配置服务端服务端Spring配置文件名为spring-zk-rpc-server.xml,内容如下:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。