ZooKeeper实现分布式锁

1.什么是分布式锁

一般的锁:一般我们说的锁是但进程多线程的锁,在多线程并发编程中,用于线程之间的数据同步,保护共享资源的访问

分布式锁:分布式锁指的是在分布式环境下,保护跨进程,跨主机,跨网络的共享资源,实现互斥访问,保证一致性

查看更多

分享到

zookeeper集群搭建

通过 VMware ,我们安装了三台虚拟机,用来搭建 zookeeper 集群,虚拟机网络地址如下:

1
2
3
4
5
6
7
hostname           ipaddress           subnet mask             geteway    

1、 master     192.168.146.200    255.255.255.0      192.168.146.2

2、 slave1      192.168.146.201    255.255.255.0      192.168.146.2

3、 slave2      192.168.146.202    255.255.255.0      192.168.146.2

  在搭建 zookeeper 集群之前,我们首先要明白为什么要选择三台机器搭建,2台不可以吗?4台不可以吗?

查看更多

分享到

Zookeeper集群部署流程

ZooKeeper是一个开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现。ZooKeeper为分布式应用提供一致性服务,提供的功能包括:分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)、分布式锁(Distributed Lock)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。

ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。

1. 服务器环境准备

我们这次环境搭建,将采用5台主机来完成。其中两台主要用来做控制ZKFC(Zookeeper Failure Controller),另外三台作为客户端。

主机 IP地址 ZK OS
master 192.168.137.100 CentOS7
secondary 192.168.137.101 CentOS7
slave1 192.168.137.102 Y CentOS7
slave2 192.168.137.103 Y CentOS7
slave3 192.168.137.104 Y CentOS7

1.1 关闭网络防火墙

为了保证系统能够正常运行,我们先关闭网络防火墙,在CentOS7下这样完成:

1
2
sudo systemctl stop firewalld
sudo systemctl disable firewalld

查看更多

分享到

ZooKeeper深入探讨

1. 数据模型

1.1. 只适合存储小数据

Zk维护着一个逻辑上的树形层次结构,树中的节点称为znode,个znode都有一个ACL(权限控制)。Zookeeper是被设计用来协调服务的,因此znode里存储的都是小数据,而不是大容量的数据,数据容量一般在1MB范围内。

1.2. 操作的原子性

Znode的数据读写是原子的,要么读或写了完整的数据,要么就失败,不会出现只读或写了部分数据。

1.3. Znode的路径

和Unix中的文件系统路径格式很想,但是只支持绝对路径,不支持相对路径,也不支持点号(”.”和”..”)。

查看更多

分享到

ZooKeeper快速入门

ZooKeeper快速入门

1. 概述

Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务、名字服务、分布式同步、组服务等。

它有如下的一些特点:

  • 简单

Zookeeper的核心是一个精简的文件系统,它支持一些简单的操作和一些抽象操作,例如,排序和通知。

查看更多

分享到

Kafka监控-主要性能指标

Kafka是什么?

Kafka是一个分布式,有分区的,有副本的日志服务系统,由LinkedIn公司开发,并于2011年开源。从本质上来说,Kafka拥有一套可扩展的发布/订阅消息队列架构,并组成了一套分布式的日志系统,这套系统的创建,是为任何一家大公司搭建一套可处理实时数据的统一平台。

和许多其他消息队列系统相比(RabbitMQ,ActiveMQ,Redis),Kafka有一些主要的区别:

查看更多

分享到

RabbitMQ-Java客户端API指南-上

RabbitMQ-Java客户端API指南-上

客户端API严格按照AMQP 0-9-1协议规范进行建模,并提供了易于使用的附加抽象。
RabbitMQ Java客户端使用com.rabbitmq.client作为其顶层包。关键的类和接口是:

  • Channel
  • Connection
  • ConnectionFactory
  • Consumer

协议操作可通过Channel接口获得。Connection用于打开通道,注册连接生命周期事件处理程序,并关闭不再需要的连接。 连接是通过ConnectionFactory实例化的,这就是你如何配置各种连接设置,如虚拟主机或用户名。

Connections和Channels

1
2
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;

连接到Broker

查看更多

分享到

RabbitMQ-Java客户端API指南-下

RabbitMQ-Java客户端API指南-下

使用主机列表

可以将Address数组传递给newConnection()。的地址是简单地在一个方便的类com.rabbitmq.client包与主机 和端口组件。
例如:

1
2
Address[] addrArr = new Address[]{ new Address(hostname1, portnumber1), new Address(hostname2, portnumber2)};
Connection conn = factory.newConnection(addrArr);

查看更多

分享到

RabbitMQ-vhost配置

RabbitMQ vhost 配置

rabbitmqctl set_vhost_limits是用来定义虚拟主机限制的命令

配置最大连接限制

要限制vhost vhost_name中并发客户端连接的 总数,请使用以下限制定义:

1
rabbitmqctl set_vhost_limits -p vhost_name'{“max-connections”:256}'

要禁用到虚拟主机的客户端连接,请将限制设置为零:

1
rabbitmqctl set_vhost_limits -p vhost_name'{“max-connections”:0}'

要解除限制,请将其设置为负值:

1
rabbitmqctl set_vhost_limits -p vhost_name'{“max-connections”:-1}'

查看更多

分享到

RabbitMQ吞吐量测试-PerfTest上

RabbitMQ吞吐量测试-PerfTest上

PerfTest

RabbitMQ有一个基本的吞吐量测试工具PerfTest(文档,源代码和版本),它基于Java客户端,可以配置为模拟基本工作负载。PerfTest有额外的工具可以生成输出的HTML图形。RabbitMQ集群可能受到很多因素的限制,从基础设施级限制(如网络带宽)到RabbitMQ配置和拓扑到发布和使用的应用程序。PerfTest可以演示节点或节点集群的基准性能。

安装

PerfTest也是从Bintray和 GitHub发布的二进制版本库中分发的 。 如果需要将它作为库,也可以在Maven Central上使用。

Bintray:https://bintray.com/rabbitmq/java-tools/perf-test
GitHub:https://github.com/rabbitmq/rabbitmq-perf-test/releases
Maven Central:http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.rabbitmq%22%20AND%20a%3A%22perf-test%22

查看更多

分享到