一、环境准备
本章将通过手把手的教程一步一步教你如何从零开发一个微服务应用。
首先需要安装好 nacos
服务并启动。安装 nacos
服务请看作者的 【nacos 第一篇章】安装一下 nacos
文章。
二、初始化项目
如上图所示,可以建立一个基础的项目。
搭建了基础项目之后,我们还需要创建 springboot-dubbo-nacos-interface
、springboot-dubbo-nacos-provider
和 springboot-dubbo-nacos-consumer
三个子模块。
一、介绍
Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务框架下的服务治理和通信问题。官方提供了多种 SDK 语言实现。使用 Dubbo 开发的微服务具备相互之间的远程地址发现和通信能力。利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务智力诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。
二、Dubbo 能做什么?
1、微服务编程范式和工具
Dubbo 支持基于 IDL 或者语言特定方式的服务定义,提供多种形式的服务调用形式(同步、异步、流式等)。
一、概述
1、集群中的角色
2、集群为什么要搭建奇数个节点
- 如果部署单个节点,当节点宕机时,集群就会失效,就会出现单点故障。
- 如果部署两个节点,2的半数为1,半数以上最少为2,不允许有一台机器故障,不然投票机制不成立。
- 如果部署三个节点,3的半数为1.5,半数以上最少为2,允许有一台机器故障,投票机制可以成立。
- 如果部署四个节点,4的半数为2,半数以上最少为3,允许有一台机器机器故障,投票机制可以成立。
- 如果部署五个节点,5的半数为2.5,半数以上最少为3,允许有两台机器故障,投票机制可以成立。
- 所以部署zookeeper集群的时候一般部署的节点数量为
2n+1
台节点。
一、分布式锁
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。
二、zookeeper 分布式锁
1、客户端A创建临时顺序节点 demo
。并在节点下创建 x_00000001
。
2、客户端A判断是否自己是第一个节点,如果是就锁成功。
3、客户端B创建临时顺序节点 demo
。 并在节点下创建 x_00000002
。
一、概述
Curator是 Netflix
开源的一套 zookeeper 客户端框架,解决原生 Api 的好多问题。
二、添加依赖
<!-- 对zookeeper的底层api的一些封装 -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<!-- 封装了一些高级特性,如:Cache事件监听、选举、分布式锁、分布式Barrier -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.0</version>
</dependency>
一、新增 create 命令
格式:create [-s] [-e] path data
说明:用于创建节点并赋值。
[-s] [-e]
:-s 和 -e 都是可选的,-s 代表顺序节点, -e 代表临时节点,注意其中 -s 和 -e 可以同时使用的,并且临时节点不能再创建子节点。path
: 指定要创建节点的路径,比如 /test。data
: 要在此节点存储的数据。
一、Watcher 概述
zookeeper 提供了数据的 发布/订阅功能
,多个订阅者可同时监听某一特定的主题对象,当主题对象的自身状态发生了变化时(例如节点内容发生了改变、节点下的子节点列表发生改变等),会实时、主动的通知所有订阅者。
二、Watcher 架构
Watcher 由三部分组成 zookeeper服务端
、zookeeper客户端
、客户端的watchManager对象
。
一、linux 安装
1、基础环境
在 Linux 种安装 zookeeper 需要安装 jdk。具体的安装 jdk 方式就不再进行描述,根据你的 Linux 系统的不同安装的方式也会不同。
2、下载 zookeeper 安装包
通过此地址可以下载对应的安装包 https://zookeeper.apache.org/releases.html
。
3、解压 zookeeper 压缩包
一、简介
在过去,每个应用程序都是运行在一台计算机上的单程序单CPU。今天,情况变了。在大数据和云计算领域,应用程序是由运行在不断变化的计算机上的许多独立程序组成的。程序员不能够专注编写业务代码,反而要花费大量的时间维护各个服务之间的关系。为了解决程序员能够专注于业务代码的实现,zookeeper相关的应用应世而生
。
它支持分布式系统的调度任务,协调任务是涉及多个进程的任务。这样的任务是可以为了合作是为了规范争论。合作意味着各个进程需要共同努力,而主进程采取行动使其他进程能够正常运行。例如:在典型的主从架构中,主通知从进行工作。因此,主人可以分配任务给园丁。但是,我们确实希望有一个主进程,但是每个子进程又能称为主进程,因此,多个进程需要实现互斥。