微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

dubbo

1.基础知识

分布式

理解:分布式系统是若干独立计算机的集合,这些计算机对与用户来说像是单个相关系统。
解决问题:随着网站应用规模的不断扩大,常规的垂直应用架构已经无法应对。
为什么使用dubbo:由于分布式之间各个模块或应用之间有着相互调用的关系,需要用Dubbo进行RPC通信(远程过程调用协议 Remote Procedure Call Protocol)。

RPC基本原理

服务调用过程


在这里插入图片描述

过程简述:
1.客户端服务想要调用服务端的服务方法;
2.通知一个助手去调用
3.客户端小助手通过Sockets通信去连接服务器端;传输信息给服务端端,(如方法名,参数等)
4.服务端小助手收到客户端的消息,将消息传送给服务端进行方法调用
5.方法调用完成,返回参数值,按返回路程传送给客户端。

影响RPC性能的因素《待深挖》

1.《序列化》 序列化机制和反序列化机制
2. 《通信 》能否快速建立起RPC连接

2.dubbo

Apache Dubbo

Dubbo结构图

主要组件:
Container容器
Provider服务提供者
Registry注册中心
Consumer服务消费者
Monitor监控中心

dubbo执行流程

  1. Container启动
  2. Provider将自身的服务注册到注册中心《后期的Zookeeper》
  3. Consumer启动向注册中心发布自己要订阅的服务
  4. Consumer同步调用Provider提供的服务
  5. Consumer根据负载均衡算法,去调用Provider服务。
  6. 运行状态可以在Monitor去查看

dubbo配置

dubbo-xml配置
dubbo-注解配置

SpringBoot整合

服务端配置

dubbo.application.name=user-service
dubbo.registry.address=127.0.0.1:2181
dubbo.zookeeper=zookeeper
dubbo.protpcol.name dubbo
dubbo.protocol.name=dubbo
dubbo.protocol.port =20880
dubbo.registy.monitor=registry


<!--SpringApplication启动项-->
主程序类
@SpringBootApplication
@EnableDubbo
<!--Service端-->
@Service 注解

消费端配置

dubbo.application.name=user-consumer
dubbo.registry.address=127.0.0.1:2181
dubbo.moniter.protocol=registry

实现类
@Service
public class xxx implements xxxService{
   //@Autowired 改为Reference
   @Reference
   UserService userService;
}

超时

<!--超时默认是1秒-->
<!--单个服务设置超时-->
<dubbo:reference interface=“com.awin.xxx.UserService” id="UserService" timeout="4000"></dubbo:reference>

<!--配置全部-->
<dubbo:consumer check=“false” timeout=“4000”></dubbo:consumer>

配置覆盖

以 timeout 为例,下图显示了配置的查找顺序,其它 retries, loadbalance, actives 等类似:

方法级优先,接口级次之,全局配置再次之。
如果级别一样,则消费方优先,提供方次之。
其中,服务提供方配置,通过 URL 经由注册中心传递给消费方。

在这里插入图片描述

重试次数

retries

<dubbo:consumer timeout="5000" retries="3"/>
<!--幂等(设置重试次数)【查询,删除,修改】,重试过程对结果不发生改变-->
<!--非幂等(不能设置重试次数)【新增】-->

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐