1 引包
不用spring的包,用dubbo原生的包,添加包完成之后,刷新maven工程
1.1 dubbo的包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.5</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
1.2 zookeeper的包
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
1 dubbo是什么?
是一个分布式的服务框架——>微服务
2 dubbo能做什么
2.1 透明化的远程方法调用,调用远程方法就跟调用本地方法一样
2.2 软负载均衡及容错机制,服务集群,动态增加、减少服务器
2.3 服务自动注册与发现
3 dubbo与http的区别
3.1 http好比普通话,rpc好比团伙内部黑话
讲普通话的好处就是谁都听得懂,谁都会讲
讲黑话好处是更精简、保密、可定制;坏处就是要求client也要懂,并且大家都说一种黑话了,再换就困难了
4 为什么要用rpc
4.1 因为良好的rpc是面向服务的封装,针对服务的可用性和效率都做了优化,单纯使用http调用则缺少这些特性
4.2 http可以过防火墙,可以利用各种丰富的分析工具,http是文本协议,适合短连接,http跨网络易扩展
4.3 dubbo通讯层用的netty走socket,socket是二进制协议,安全性更高,数据有效率更高
5 socket在http的下一层
6 dubbo的架构
第一层:
Registry 注册中心
第二层:
Consumer 客户端
Provider 服务提供者
Container 容器
第三层:
monitor 监控
6.1 服务提供者Provider发布一个服务后会把这个服务注册到注册中心Registry
可以在注册中心看有哪些服务(就是一个服务管理的地方)
服务行右侧的no Consumer就是还没有客户端连接到该服务上
6.2 同样一个Consumer想要消费(调用一个服务的时候),该Consumer也会注册到注册中心上,并且之间是长连接的关系
7 dubbo的配置
dubbo是采用全spring配置方式,对应用没有任何api的侵入,只需要加载dubbo的配置即可(就是引包即可),dubbo基于spring的schema扩展进行加载
7.1 schema是.xml文件中最上面的那部分,如下图:xml文件中能使用哪些标签都是通过下图中的schema定义的
8 举例
房产拥有者 = 服务提供者(因为他有房源)
中介 = 注册中心
买房的人 = 客户端(服务的消费方)
房产拥有者将房子挂在中介
买房的人也是去中介找房子
中介将房产拥有者与买房的人联系起来
9 注册中心
注册中心是zookeeper,也是一个中间件,用来注册服务于负载均衡的
zookeeper通过心跳机制可以检测宕机的(挂掉的、已经停止运行的)服务器,并将挂掉的服务器IP与服务对应关系从列表中删除
10 dubbo的调用
10.1 集成spring(研发人员调用dubbo接口都是采用集合spring的调用方式)
10.2 generic泛化调用
10.3 Telnet调用
作为服务的发布者都是采用第一种方式发布
作为服务的消费者可以用3种方式调用
dubbo比较