前面给大家介绍了一下什么是dubbo,那么下面要给大家介绍的就是dubbo的工作原理,以及dubbo的使用。
工作原理:
Provider:暴露服务方将它叫做服务提供者
Consumer:调用远程服务方将它叫做服务消费者
Registry:服务注册和发现的中心目录服务将它叫做服务注册中心
Monitor:统计服务的调用次数以及调用时间的日志服务将它叫做服务监控中心
以下是dubbo的原理图,大家可以参考一下。
给大家介绍完了dubbo的工作原理,那么下面要给大家介绍的就是dubbo的使用了,下面我们通过几段代码来了解一下。
服务端定义一个Service Interface:(HelloService.java)
package com.alibaba.hello.api; public interface HelloService { String sayHello(String name); }
接口的实现类:(HelloServiceImpl.java)
package com.alibaba.hello.impl; import com.alibaba.hello.api.HelloService; public class HelloServiceImpl implements HelloService { public String sayHello(String name) { return "Hello" + name; } }
Spring配置:(provider.xml)
<?xmlversion="1.0"encoding="UTF-8"?> <beans......> <!--Applicationname--> <dubbo:applicationname="hello-world-app"/> <!--registryaddress,usedforservicetoregisteritself--> <dubbo:registryaddress="multicast://224.5.6.7:1234"/> <!--exposethisservicethroughdubboprotocol,throughport20880--> <dubbo:protocolname="dubbo"port="20880"/> <!--whichserviceinterfacedoweexpose?--> <dubbo:serviceinterface="com.alibaba.hello.api.HelloService"ref="helloService"/> <!--designateimplementation--> <beanid="helloService"class="com.alibaba.hello.impl.HelloServiceImpl"/> </beans>
测试代码:(Provider.java)
importorg.springframework.context.support.ClassPathXmlApplicationContext; public class Provider { public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(newString[] { "provider.xml" }); //启动成功,监听端口为20880System.in.read();//按任意键退出 } }
客户端Spring配置文件:(consumer.xml)
<?xmlversion="1.0"encoding="UTF-8"?> <beans xmlns=......> <!--consumerapplicationname--> <dubbo:applicationname="consumer-of-helloworld-app"/> <!--registryaddress,usedforconsumertodiscoverservices--> <dubbo:registryaddress="multicast://224.5.6.7:1234"/> <!--whichservicetoconsume?--> <dubbo:referenceid="helloService"interface="com.alibaba.hello.api.HelloService"/> </beans>
客户端测试代码:(Consumer.java)
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.alibaba.hello.api.HelloService; public class Consumer { public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(newString[] { "consumer.xml" }); HelloService helloService = (HelloService) context.getBean("helloService"); //getserviceinvocationproxyStringhello=helloService.sayHello("world"); //doinvoke!System.out.println(hello); //cool,howareyou~ } }
以上就是关于dubbo的工作原理和使用的具体内容。
现在有很多人都想成为java架构师,java架构师入门内容,可以通过奇Q工具网的java架构师专栏学习哦。