dubbo笔记

http://www.cnblogs.com/umgsai/p/5836925.html


一、什么是dubbo?
dubbo是一个分布式服务框架,用于提高性能和透明化的rpc远程服务调用方案,以及soa服务治理方案。


核心:
1、远程通讯:
提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求”
只要简单配置,就能像调用本地方法一样调用远程方法。
2、集群容错:
失败容错,软负载均衡
3、自动发现:
服务自动注册与发现,基于注册中心目录服务,使服务提供方可以平滑增加或减少机器


二、架构图:




Provider: 服务提供方
Consumer:服务消费方
Registry:注册中心
Monitor:监控中心,统计服务调用次数和时间
Container:服务运行容器


1、服务容器启动、加载、运行服务提供者
2、服务提供者向注册中心注册
3、服务消费者启动,订阅所需服务
4、注册中心返回服务提供者列表给消费者,如果有变更,注册中心
将基于长连接推送变更数据给消费者
5、服务消费者基于软负载均衡算法,从提供者列表中选一台提供者进行调用,
如果失败,再选另外一台调用
6、服务提供者跟消费者,在内存中累计调用次数和时间,定时发送统计数给监控中心


三、Dubbo服务的运行方式 


1.使用Servlet容易运行(Tomcat Jetty等) 不可取 
缺点:增加复杂性(端口、管理) 浪费资源(内存) 
2.自建Main方法类来运行(Spring容器) 不建议(本地调试可用) 
缺点:Dubbo本身提供的高级特性没用上,自己编写的启动类可能有缺陷 
3.使用Dubbo框架提供的Main方法类来运行(Spring容器) 建议使用 
优点:框架本身提供(com.alibaba.dubbo.container.Main) 可实现优雅关机(ShutdownHook)
   注意点:spring-context.xml <import resource="classpath:spring/spring-xxx.xml"/>


四、Dubbo主要配置
1、提供方 provider.xml


<!-- 提供方应用信息,用于计算依赖关系 -->
 <dubbo:application name="demo-provider" /> 


<!-- 使用zookeeper注册中心暴露服务地址 --> 
<dubbo:registry protocol="zookeeper" address="172.24.51.28:2181" /> 


<!-- 用dubbo协议在20880端口暴露服务 --> 
<dubbo:protocol name="dubbo" port="20880" /> 


<!-- 用户服务接口 --> 
<dubbo:service interface="com.demo.service.UserService" ref="userService" />


2、消费方 consumer.xml


<!--消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
 <dubbo:application name="demo-consumer"/>


 <!--zookeeper注册中心 -->
 <dubbo:registry protocol="zookeeper" address="172.24.51.28:2181" /> 


<!--使用multicast广播注册中心暴露的服务地址 --> 
<!--<dubbo:registryaddress="multicast://10.57.41.19:1234" /> --> 


<!-- 生成远程服务代理,可以和本地bean一样使用demoService,
默认check="true",如果为false,则可以先启动消费方不报错
-->
 <dubbo:reference id="userService" interface="com.demo.service.UserService" />


五、Dubbo管理控制台
Dubbo管控台可以对注册到zookeeper注册中心的服务或服务消费者进行管理

一般把包放置/webapps目录下

六、Dubbo协议


Dubbo允许配置多协议,不同服务支持不同协议或者同一服务同时支持多种协议
比如大数据用短连接协议,小数据大并发用长连接协议
1、Dubbo
Dubbo缺省使用dubbo协议,单一长连接和NIO异步通讯,适用于小数据大并发,消费
服务机器数量远大于提供者情况,不合适大数据量,比如传文件,视频等


2、RMI
短连接,jdk序列化,适用:传入传出参数数据包大小混合,消费者与提供者个数差不多。可传文件


3、Hessian
底层http通讯,适用:传入传出参数数据包较大,提供者大于消费者,可传文件


4、其他
http、webservice、thrift、mencached、redis


### 关于 Dubbo 3.0 的学习笔记与使用教程 #### dubbo-demo 工程结构概述 在探讨 Dubbo 3.0 的具体应用之前,了解其工程构建方式至关重要。dubbo-demo 是 Maven 父工程,而 dubbo-api 则作为 Maven 子模块存在[^1]。此设计模式有助于更好地管理依赖关系和服务接口定义。 #### Dubbo 3.0 新特性介绍 相较于早期版本,Dubbo 3.0 增加了许多新功能来提升性能并简化开发流程。这些改进包括但不限于: - **协议优化**:引入了更高效的通信机制; - **API 变化**:调整了一些核心 API 设计以适应现代微服务体系架构需求; - **配置增强**:提供了更加灵活多样的配置选项和支持多种格式的外部化配置文件; #### 实际案例分析 - HTTP 调用实现 为了加深理解,在实际项目 `dubbo-http` 中实现了通过 HTTP 协议访问远程服务的功能。这里的关键在于如何正确设置 URL 映射以及处理请求参数传递等问题。例如,在 com.crossoverJie.api.DemoApi 接口中定义了一个名为 readMsg 的方法用于接收来自客户端的消息,并接受一个 Map 类型的对象 parames 来携带附加数据[^5]。 ```java public interface DemoApi { String readMsg(Map<String, Object> params); } ``` #### 安全性考量 当涉及到网络传输时,安全性始终是一个不可忽视的话题。因此,在真实环境中部署此类应用程序时,建议采用 SSL/TLS 加密技术或其他适当措施确保敏感信息的安全交换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值