前言:
本人小白一枚,博客为自己学习时课后笔记,如有不足,请大佬们多多指教。
关于dubbo简介:
Dubbo的介绍
Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。
Dubbo提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现
Dubbo架构图简介
架构说明
关于虚线和实线:虚线表示异步,实现表示同步。异步不影响线程阻塞,同步必须等待响应结果才能继续执行,相对性能低。
Provider
提供者。编写持久层和事务代码.
Container
容器(spring)容器,Dubbo是基于spring实现的。
Registry
注册中心。放置所有Provider提供的信息。包含Provider的IP,访问端口,访问遵守的协议,对外提供的接口,接口中有哪些方法等相关信息。
Consumer
消费者(RPC调用者,SOA调用服务的项目)开发中也是一个项目,编写service和controller(还可以报页面等)。调用XXXXServiceImpl中的方法。
Monitor
监控中心。监控Provider的压力情况等。每隔2分钟Consumer和Provider会把调用次数发送给Monitor,由Monitor进行统计。
执行流程
statr:启动spring容器时会启动Provider
register:将provider中相关信息注册到registry中
subscribe:Consumer从Registry中订阅Provider的信息
notify:通知给Consumer
invoke:Consumer根据Registry通知的信息进行调用Provider中方法。
count:Consumer和Provider把调用次数信息异步发送给Monitor进行统计。
搭建一个简单的Dubbo项目
整体结构如下:
api:负责提供对外的接口
provider:提供者
consumer:调用者
父项目DubboParent中Pom导入依赖项
4.0.0 com.cowain DubboParentpom 1.0-SNAPSHOT api provider consumer org.springframework.boot spring-boot-starter-parent2.1.10.RELEASE org.springframework.boot spring-boot-starter2.1.10.RELEASE org.springframework.boot spring-boot-starter-web2.1.10.RELEASE org.apache.dubbo dubbo-spring-boot-starter2.7.3 org.apache.curator curator-recipes4.2.0 org.apache.curator curator-framework4.2.0
api中代码结构:
provider结构:
Pom.xml
DubboParent com.cowain 1.0-SNAPSHOT 4.0.0 provider api com.cowain 1.0-SNAPSHOT org.springframework.boot spring-boot-starterorg.apache.dubbo dubbo-spring-boot-starterorg.apache.curator curator-recipesorg.apache.curator curator-framework
DubboServiceImpl
package com.cowain.service.impl; import com.cowain.dubbo.service.DobbuService; import org.apache.dubbo.config.annotation.Service; @Service public class DubboServiceImpl implements DobbuService { @Override public String testDemo(String param) { System.out.println("执行demo"); return param+":hello"; } }
apploication.xml
只要配置zookeeper的ip与端口
dubbo: application: name: dubbo-provider registry: address: zookeeper://192.168.153.129:2181 protocol: port: 20884
consumer结构:
Pom.xml
DubboParent com.cowain 1.0-SNAPSHOT 4.0.0 consumer api com.cowain 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-weborg.apache.dubbo dubbo-spring-boot-starterorg.apache.curator curator-recipesorg.apache.curator curator-framework
ConsumerController
package com.cowain.controller; import com.cowain.service.ConsumerService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class ConsumerController { @Autowired private ConsumerService consumerService; @RequestMapping("/demo") @ResponseBody public String testDubboDemo(){ return consumerService.demo(); } }
ConsumerServiceImpl
package com.cowain.service.impl; import com.cowain.dubbo.service.DobbuService; import com.cowain.service.ConsumerService; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Service; @Service public class ConsumerServiceImpl implements ConsumerService { @Reference private DobbuService dobbuService; @Override public String demo() { return dobbuService.testDemo("李佳春"); } }
ConsumerService
package com.cowain.service; public interface ConsumerService { public String demo(); }
ConsumerApplication
package com.cowain; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableDubbo @SpringBootApplication public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class,args); } }
apploication.xml
dubbo: application: name: dubbo-consumer registry: address: zookeeper://192.168.153.129:2181
测试:
zookeeper:
总结
代码虽然简单,但是得明白dubbo的执行流程,此篇博客仅供学习使用,如有不足,请多多指教。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)