RPC基础。
----------------------------03--------------------------------
灰度发布。
------------------------------------04-----------------------------
设计架构:
------------------------------------05-----------------------------
安装zookeeper:https://blog.csdn.net/qq_28764557/article/details/104943624
------------------------------------06-----------------------------
安装monitor:dubboadmin:https://blog.csdn.net/qq_28764557/article/details/104943624
------------------------------------07-----------------------------
代码:
把接口什么的都写到一个独立的过程,pom引入,到时候打包就可以打在一起了。
此时我们调这个方法要远程调用的:
------------------------------------08-----------------------------
1.将服务的提供者注册到注册中心。
2.消费者去服务的注册中心去订阅。
我们实现1:
第一步:导入dubbo依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency>
第二步:注册到注册中心,引入zookeeper的客户端,注意版本的问题
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
第三步:配置服务的提供者
<!-- 1、指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名) -->
<dubbo:application name="user-service-provider"></dubbo:application>
<!-- 2、指定注册中心的位置 -->
<!-- <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry> -->
<dubbo:registry protocol="zookeeper" address="192.168.244.130:2181"></dubbo:registry>
<!-- 3、指定通信规则(通信协议?通信端口) -->
<dubbo:protocol name="dubbo" port="20882"></dubbo:protocol>
<!-- 4、暴露服务 ref:指向服务的真正的实现对象 -->
<dubbo:service interface="com.atguigu.gmall.service.UserService"
ref="userServiceImpl01" timeout="1000" version="1.0.0">
<dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
</dubbo:service>
<!-- 服务的实现 -->
<bean id="userServiceImpl01" class="com.atguigu.gmall.service.impl.UserServiceImpl">
</bean>
配置文件的配置的步骤:
1.指定服务的名字
2.指定配置中心
3.协议,用什么通信,端口
4.暴露服务
没有应用任何注解的。
------------------------------------09-----------------------------
消费者:主要看下配置文件,这三步。
1.服务名称
2.注册地址
3.声明接口,生成远程服务代理
为了使注解生效,我们要启用包扫描,这个是spring的service
服务的提供者:
对应的配置文件:
服务的消费者:
对应的配置文件:
总览:
这个是纯的原生的spring配置方案。
------------------------------------10-----------------------------
监控中心要自己打包的:
修改或者jar包就可以。
保证整个正确就可以了。
我自己启动失败了。
服务端和客户端都要连接监控中心。
重启。
------------------------------------11-----------------------------
dubbo与springboot整合。
我们创建两个springboot应用。
配置服务的提供者:
1.导入dubbo的starter
注意导入的版本的规则:
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
2.导入dubbo的其他依赖
3.配置:
其他的配置:
之前我们不在impl里面写@Service直接使暴露的很麻烦的。
现在:
4.开启dubbo:
---------------------------------
客户端:
1.引入starter
2.
server.port=8081
dubbo.application.name=boot-order-service-consumer
dubbo.registry.address=zookeeper://192.168.244.130:2181
dubbo.monitor.protocol=registry // 这个是自己在注册中心根据协议找监控中心
3.注解
4.同样开启
测试:
暴露服务就是@Service,引用服务就是@Reference
------------------------------------12-----------------------------
dubbo配置文件的优先级:
第一个是java命令吧。
1的优先级大于2
------------------------------------13-----------------------------
启动检查,客户端:
<!-- 配置当前消费者的统一规则:所有的服务都不检查 -->
<dubbo:consumer check="false" timeout="5000"></dubbo:consumer>
------------------------------------14-----------------------------
默认是1000ms。
超时设置:调用服务的提供者时间过长就会引起许多线程的阻塞的。
精确优先。
超时会报错的。
我们可以全局设置的:
提供者也可以指定超时属性:
---
总结:同级别的消费者是优先的提供方次之。
不同级别的精确有限而不是消费者优先的。
------------------------------------15-----------------------------
重试次数,不包含第一次调用,超时时间配合重试次数的:
失败了 还可以重试其他的服务:
开启三个服务的提供方:
也是重试的其他服务器,不在一颗树上吊死了,重试次数是假如三个水平服务,失败了一个,再去第二个,再去第三个,凑足四次。
原则:
------------------------------------16-----------------------------
多版本的设置:灰度发布。
客户端测试:
可以是* 也可以是1.0.0
------------------------------------17-----------------------------
本地存根:
第一步:
消费者,必须有有参构造器,传入的远程接口的代理实现。
第二步:有参构造器
第三步:判断
第四步:配置
使用的时候放在接口里面。
------------------------------------18-----------------------------
springboot与dubbo整合的三种方式:
* SpringBoot与dubbo整合的三种方式:
* 1)、导入dubbo-starter,在application.properties配置属性,使用@Service【暴露服务】使用@Reference【引用服务】
* 2)、保留dubbo xml配置文件;
* 导入dubbo-starter,使用@ImportResource导入dubbo的配置文件即可
* 3)、使用注解API的方式:
* 将每一个组件手动创建到容器中,让dubbo来扫描其他的组件
第一种方式:
配置文件写了包扫描,就不用写这个注解了
这种方式是不能做到方法级别的精确的配置的。
----------------------------------
服务端第二种方式:这个可以精确的更细
暴露service不用写了
---------------------------------------
服务端第三种方式:配置类,这个和xml其实是一样的。
此时重点,指定扫描路径:
暴露服务
------------------------------------19-----------------------------
高可用:
dubbo直连:
这个要和提供者的端口是一样的都是20882。
------------------------------------20-----------------------------
集群的负载均衡:名称一样的搞一个集群启动
轮询是权重用完了就不来了。
测试负载均衡:
第一步:启动多个 服务端
第二步:启动一个消费者,dubbo默认是随机的
默认是Random。
第三步:如何改变?在服务端客户端都可以
自己定制:https://www.cnblogs.com/dalaoyang/p/11328748.html
可以在控制台调节权重。
------------------------------------21-----------------------------
服务的降级:
屏蔽掉一些服务。
直接在控制台设置:
第一个:
第二个:
服务的提供者:
超时容错。
------------------------------------22-----------------------------
服务容错:
集群的容错模式。5个。
实际我们整合Hystrix进行容错的。
第一步:
服务端引入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>
spring-cloud-starter-netflix-hystrix
</artifactId>
</dependency>
第二步:开启服务
第三步:
异常的容错。
第四步:写消费者导入pom,开启服务注册
Hystrix:https://blog.csdn.net/yunzhaji3762/article/details/84331296
Hystrix 是隔离、熔断以及降级的一个框架。
第五步:
------------------------------------23-----------------------------