| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> dubbo笔记 -> 正文阅读 |
|
[网络协议]dubbo笔记 |
Dubbo简介源自于阿里巴巴的开源的轻量级的java RPC 框架,可以与spring框架无缝集成 RPC?全称为remote procedure call?及 远程调用 Dubbo架构dubbo架构里有五个重要的节点,(Registry,provider,consumer,monitor,container)。
虚线都是异步访问,实线是同步访问,蓝色虚线是在服务启动时完成,红色虚线是在服务运行中执行的 0:服务容器负责启动服务,启动服务提供者。 1:服务提供者启动时,把提供的服务注册到注册中心。 2:服务消费者启动时,从注册中心订阅自己所需要的服务。 3:注册中心返回提供者的服务地址列表给消费者,如果服务有所变更,注册中心将基于长连接推送更新数据给消费者。 4:消费者从提供者的服务地址列表,基于随机调用负载均衡算法,选择需要的服务进行调用,如果失败,则选择另一台服务调用。 5:服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。 注册中心zookeeper的使用zookeeper是hadoop的一个子项目,十大数据技术产品中的一个产品是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用 。 ?服务提供者(Provider)启动时: 向 /dubbo/com.foo.BarService/providers 目录下写入自己的 URL 地址 服务消费者(Consumer)启动时: 订阅 /dubbo/com.foo.BarService/providers 目录下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址 监控中心(Monitor)启动时: 订阅 /dubbo/com.foo.BarService 目录下的所有提供者和消费者 URL 地址 zookeeper使用命令进入zookeeper的bin目录? 开启zookeeper:./zkServer.sh start 停止zookeeper:./zkServer.sh stop 查看服务状态:./zkServer.sh status 连接客户端:./zkCli.sh? (加端口号,不加则连接本地) Dubbo案例的重要知识点dubbo的xml配置 在web.xml中加载spring的xml文件
?
注册服务提供者
注册服务消费者
在消费者工程的开发中controller中要定义一个远程调用的接口,添加@Reference注解
我们可以提高代码的高可复用性,为了避免代码的耦合度高,可以将接口单独放在一个maven工程中,这样,就不需要在消费者工程中再复写接口类,直接添加对应的maven坐标即可。 包的扫描服务提供者和服务消费者都需要配置,表示包扫描,作用是扫描指定包(包括子包)下的类,来发布服务和引用服务 协议
一般情况下协议选用”dubbo“,还有rmi、hessian、http、webservice、rest、redis等 dubbo 协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机 器数远大于服务提供者机器数的情况。不适合传送大数据量的服务,比如传文件,传视频等,除非请求 量很低。 也可以在同一个工程中配置多个协议,不同服务可以使用不同的协议,比如:
负载均衡在集群负载均衡时,Dubbo 提供了多种均衡策略(包括随机、轮询、最少活跃调用数、一致性 Hash),缺省为random随机调用。 配置负载均衡属性: 提供方配置:在@Service注解中用loadbalance属性 消费方配置:在@Reference注解中check属性设置false,loadbalance属性 解决dubbo无法发布被事务代理的service类的问题问题原因:在事务代理时,spring默认采用基于jdk的动态代理方式来创建代理对象,代理对象的完整类名是com.sun.proxy$42,导致跟dubbo配置文件中标签扫描的路径下的类名不匹配,则无法发布服务 问题解决:解决方式操作步骤: (1)修改applicationContext-service.xml配置文件,开启事务控制注解支持时指定proxy-target-class 属性,值为true。其作用是使用cglib代理方式为Service类创建代理对象
(2)修改HelloServiceImpl类,在Service注解中加入interfaceClass属性,值为HelloService.class, 作用是指定服务的接口类型
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 12:50:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |