navicat怎么添加check约束
321
2022-11-20
Hadoop之——再谈Hadoop的PRC机制
今天,我们重温一下Hadoop的RPC机制,同样的,我们还是基于之前的示例程序为大家讲解Hadoop的RPC机制,那我们直接进入正题吧。
被调用方(也可称为服务端)的业务代码中必须有一个接口,而业务的具体实现写在 此接口的实现类中(jdk的动态代理必须要有接口的),而通过org.apache.hadoop.ipc.RPC(在hadoop-common-2.2.0.jar包中)的一系列方法来发布服务供调用方调用:
LoginService接口:
public interface LoginService { public static final long versionID = 1L; public String login(String username, String password); }
注意,接口中要指定静态的、final的成员变量versionID,否则到时候客户端调用的时候会报异常。
接口实现类LoginServiceImpl:
public class LoginServiceImpl implements LoginService { public String login(String username, String password) { return username + " logged in successfully"; } }
接口实现类只需重写接口的方法。
启动服务的代码,需要写在某个类的main方法中,任意类,甚至可以是上述接口实现类:
public static void main(String[] args) throws HadoopIllegalArgumentException, IOException { Builder builder = new RPC.Builder(new Configuration()); builder.setBindAddress("192.168.1.6").setPort(10000).setProtocol(LoginService.class) .setInstance(new LoginServiceImpl()); builder.build().start(); }
首先是创建了一个org.apache.hadoop.ipc.RPC的内部类Builder的实例(构造方法Builder(Configuration config),此Configuration类是org.apache.hadoop.conf.Configuration,也在hadoop-common.jar包中,此处只需new出来一个Configuration对象即可),然后用这个实例设置一些必须的属性(socket通信的服务端设置的属性),有ip地址、端口号、协议(这里的协议指的就是接口)、接口实例(即接口实现类对象)。最后,调用Builder实例的build()方法得到org.apache.hadoop.ipc.RPC.Server对象,调动该Server对象的start()方法即启动了服务,或者说是发布了服务。
调用方(也可以称为客户端)也必须有和服务端一样的一个接口,代码一致,且所在包也需得一致(实测如果包名不一致的话,会报org.apache.hadoop.ipc.RpcServerException): Unknown protocol 异常):
LoginService接口:
public interface LoginService { public static final long versionID = 1L; public String login(String username, String password); }
调用服务代码
@Test public void test1() throws IOException { LoginService proxy = RPC.getProxy(LoginService.class, 1L, new InetSocketAddress("192.168.1.6", 10000), new Configuration()); String result = proxy.login("liuyazhuang", "123"); System.out.println(result); }
主要就是利用org.apache.hadoop.ipc.RPC的getProxy(Class
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~