2、Dubbo(RPC框架)+Zookeeper(注册中心)实现微服务架构项目创建

Zookeeper(注册中心)

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护域名服务分布式同步组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

总结:zookeeper是服务的协调调度服务器!!!

Zookeeper环境搭建

  1. 下载软件
  2. 解压文件、创建集群文件夹mkdir {zk1,zk2,zk3}/{data,log}(3个节点,集群最小单位)
  3. 在每个data文件夹中创建myid文件,内容为节点编号
  4. conf中的配置文件复制3份zoo1.cfg、zoo2.cfg、zoo3.cfg
  5. 修改配置,数据路径、日志路径、节点端口、集群端口配置
    2、Dubbo(RPC框架)+Zookeeper(注册中心)实现微服务架构项目创建_第1张图片
  6. 集群启动
sh zkServer.sh start   zoo1.cfg		启动
sh zkServer.sh stop    zoo1.cfg		停止
sh zkServer.sh status  zoo1.cfg		查看状态

参考文档
1、https://segmentfault.com/a/1190000012067673
2、https://blog.csdn.net/qq_26709459/article/details/90744500

Dubbo

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

工作原理

2、Dubbo(RPC框架)+Zookeeper(注册中心)实现微服务架构项目创建_第2张图片

  1. consumer 服务消费者
  2. provider 服务提供者
  3. registry 注册中心

基于SOA思想

项目环境搭建

1、创建springboot的分布式maven项目

https://blog.csdn.net/caomushi/article/details/107696712

2、引入Dubbo

<!--引入dubbo配置 -->
<dependency>
	<groupId>com.alibaba.boot</groupId>
	<artifactId>dubbo-spring-boot-starter</artifactId>
	<version>0.2.0</version>
</dependency>

3、配置文件

生产者1

#spring整合dubbo
dubbo:
  scan:
    basePackages: com.jt  #添加包扫描
  application:
    name: provider-user #服务提供者的服务名称
  registry:
  	#zookeeper若是单例就不需要后面备用地址
    address: zookeeper://192.168.1.11:2181?backup=192.168.1.11:2182,192.168.1.11:2183
  protocol:
    name: dubbo
    port: 20880   #服务通信端口,消费者链接提供者的端口

生产者2

dubbo:
  scan:
    basePackages: com.jt  #添加包扫描
  application:
    name: provider-user
  registry:
    address: zookeeper://192.168.1.11:2181?backup=192.168.1.11:2182,192.168.1.11:2183
  protocol:
    name: dubbo
    port: 20882

消费者

server:
  port: 8010
dubbo:
  scan:
    basePackages: com.jt
  application:
    name: consumer-user   #服务名必须唯一
  registry:
    address: zookeeper://192.168.1.11:2181?backup=192.168.1.11:2182,192.168.1.11:2183

4、创建第三方中立接口

接口存放在生产者消费者都需要引用的子项目中

public interface UserService {
	
}

5、消费者中创建controller层引入中立接口

@RestController
public class UserController {
	//超时时间,启动时不检查生产者服务,负载策略
	@Reference(timeout=3000,check=false,loadbalance = "randomLoad")
	private UserService userService;
	
}

6、生产者中创建service层实现中立接口

这个service注解是Dubbo的,不是Spring的

@Service(timeout = 3000)    //3秒超时
public class UserServiceImpl implements UserService {

}

同一个服务的不同生产者,实现相同,配置文件中的服务名称也要相同

7、Dubbo控制台监控

可以i自行百度打包,也可以直接下载别人打包好的文件,部署启动

至此,项目创建完成,启动测试,没有报错就可以完成业务逻辑代码了

参考文档
1、https://www.jianshu.com/p/69243fa4ddb0
2、https://www.jianshu.com/p/3090d63e9cb3
3、https://segmentfault.com/a/1190000019896723

你可能感兴趣的:(微服务,zookeeper,分布式)