1 分布式系统
-
建立在网络上的若干独立计算机软件系统的集合
-
RPC:远程过程调用;服务器之间通信,参数传递通过对象的序列化与反序列化;序列化机制效率和通信机制是RPC的重要参考
2 Dubbo
-
意义:面向接口代理的高性能RPC调用
-
智能的负载均衡:每个服务器有均衡的负载/工作量
-
服务自动注入与注册:注册中心保存正常的服务,分发合适的服务
-
运行期流量调度:主要为灰度发布,即一部分使用新服务,部分使用老服务,然后慢慢全部过度到新服务
-
可视化的服务治理与运维
-
-
角色划分:
-
Registry:注册中心;注册服务和推送服务;常用Zookeeper
-
Provider:服务提供者,去注册中心注册服务
-
Consumer:服务消费者,向注册中心订阅服务,以及接收注册中心的推送即通知服务的变化或更新;获取服务后调用服务
-
Monitor:服务监控
-
Container:容器,启动服务
-
-
流程:
-
编写服务Service接口,比如几个简单的方法
-
注册服务,即将服务暴露出去:
-
导入dubbo的maven依赖,使用Zookeeper作为注册中心
-
创建dubbo的xml配置文件,这类似于Spring的配置,dubbo底层也是基于Spring,配置服务;
-
在main()中加载xml配置文件即发布服务
-
-
搭建注册中心:下载ZoopKeeper并安装,打开zkServer可执行脚本,在bin目录下cmd,输入zkServer.cmd;如果报错找不到zoo.cfg文件,则需要在conf目录下备份zoo_sample.cfg并改名为zoo.cfg,修改其中的数据临时存储路径(新建data目录,dataDir=../data);运行bin下的ckClin可执行脚本,命令get /或者根路径,ls /列举所有的节点,默认存在一个zookeeper节点,get /节点名获取节点,create -e /节点名 内容-自定义一个节点并写入内容
- 搭建监控中心dubbo-admin:
-
页面输入localhost:7001进入控制台,默认用户名和密码为root
-
在pom.xml目录中进入cmd,以mvn clean package打包;在生成的target目录下找到jar包,以java -jar xxx.jar启动项目;端口号7001
-
修改配置文件中配置的dubbo.registry.address=zookeeper://127.0.0.1:2181
-
下载安装Dubbo,可看到它实质就是一个jar包
-
编写各个微服务,注册服务
-
导入dubbo依赖和Zookeeper客户端
-
配置provider.xml:
<!-- 服务名称,唯一 --> <dubbo:application name="serviceProviderName" /> <!-- 注册中心位置,两种方式 --> <dubbo:registry address="zookeeper://ip:port" /> <dubbo:registry protocol="zookeeper" address="ip:port" /> <!-- 通信规则,协议,端口 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 暴露服务供使用,ref指向服务真正的实现 --> <dubbo:service interface="UserService" ref="UserServiceImle" /> <bean id = "UserServiceImle" class="UserServiceImle" />
-
启动服务,即可注册
-
-
服务消费者去订阅服务:
-
配置consumer.xml:
<!-- xml配置方法注意需要扫描包,使注解有效 --> <context:component-scan bace-package="使用服务的包" /> <dubbo:application name="serviceConsumerName" /> <dubbo:registry address="zookeeper://ip:port" /> <!-- 需要调用的远程服务几口:生成服务代理 --> <dubbo:reference interface="UserService" id="UserService" loadbanlence="负载均衡机制" />
-
@Autowired或@Reference 注入服务,使用即可;参数可指定负载均衡机制
-
-
简单的监控中心dubbo-montor-simple
-
-
整合SpringBoot:
-
导入dubbo-start依赖
-
配置:
dubbo: application: name: serviceProviderName registry: address: 127.0.0.1:2181 protpcol: zookeeper protpocol: name: dubbo port: 20880 monitor:
-
声明和暴露服务:在服务service上使用dubbo的注解@Service
-
开启:启动类上@EnableDubbo
-
-