cluster

Redis Cluster分区实现原理

試著忘記壹切 提交于 2019-12-01 04:55:55
摘要 Redis Cluster本身提供了自动将数据分散到Redis Cluster不同节点的能力,分区实现的关键点问题包括:如何将数据自动地打散到不同的节点,使得不同节点的存储数据相对均匀;如何保证客户端能够访问到正确的节点和数据;如何保证重新分片的过程中不影响正常服务。这篇文章通过了解这些问题来认识Redis Cluster分区实现原理。 认识Redis Cluster Redis Cluster是由多个同时服务于一个数据集合的Redis实例组成的整体,对于用户来说,用户只关注这个数据集合,而整个数据集合的某个数据子集存储在哪个节点对于用户来说是透明的。Redis Cluster具有分布式系统的特点,也具有分布式系统如何实现高可用性与数据一致性的难点,由多个Redis实例组成的Redis Cluster结构通常如下: Redis Cluster Redis Cluster特点如下: 所有的节点相互连接; 集群消息通信通过集群总线通信,,集群总线端口大小为客户端服务端口+10000,这个10000是固定值; 节点与节点之间通过二进制协议进行通信; 客户端和集群节点之间通信和通常一样,通过文本协议进行; 集群节点不会代理查询; Redis Cluster分区实现原理 槽(slot)概念 Redis Cluster中有一个16384长度的槽的概念,他们的编号为0、1、2、3…

Kafka集群简单测试

给你一囗甜甜゛ 提交于 2019-12-01 00:29:51
接上篇 Linux系统Kafka集群搭建与简单测试 ,做简单的测试 新建common工程 新建listen-kafka-common工程,主要放置生产端和消费端公用部分代码 工程目录截图如下图 pom.xml文件如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>listen-kafka</groupId> <artifactId>listen-kafka-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <packaging>jar</packaging> <artifactId>listen-kafka-common</artifactId> <dependencies> <dependency> <groupId>com.alibaba<

SpringCloud(第 051 篇)EurekaServer集群高可用注册中心以及简单的安全认证

柔情痞子 提交于 2019-11-30 12:02:11
SpringCloud(第 051 篇)EurekaServer集群高可用注册中心以及简单的安全认证 一、大致介绍 1、前面章节分析了一下 Eureka 的源码,我们是不是在里面注意到了 Peer 节点的复制,为什么要复制节点同步信息呢,其实就是为了同一个集群之间的EurekaServer一致性方案的一个实现; 2、于是我们在本章节就真正的来通过代码来实现一下EurekaServer之间的高可用注册中心。 3、至于所谓的安全认证,就是在我们的客户端配置defaultZone属性环节,要带上用户名密码才可以注册到高可用注册中心去; 二、实现步骤 2.1 添加 maven 引用包 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>springms

使用Nginx + unicorn搭建ruby on rails的生产环境

。_饼干妹妹 提交于 2019-11-30 01:09:39
有三台机器,操作系统都是CentOS 6.3 64位: 其中172.16.9.100,安装Nginx服务器;另外的两台172.16.9.101和172.16.9.102安装unicorn,作为RoR的应用服务器。在这里先保证ruby及rails已经在101和102两台机器上配置好,这是前提。如何安装Nginx及RoR的环境就不在这里说了,很多文章都介绍得很详细。 这里假设项目在 /var/www/demo_project 文件夹中 在101上使用 gem install unicorn 命令安装unicorn。 新建内容为以下的一个文件,需要进行修改的地方请看文件中的中文注释,文件放置到 /var/www/demo_project_unicorn.rb, 这个文件是对这个项目的生产环境配置 # Sample verbose configuration file for Unicorn (not Rack) # # This configuration file documents many features of Unicorn # that may not be needed for some applications. See # http://unicorn.bogomips.org/examples/unicorn.conf.minimal.rb # for a much

Redis3.0 Cluster集群安装

时光怂恿深爱的人放手 提交于 2019-11-27 13:50:30
部署图 同一物理机部署6个Redis进程,7001、7002、7003端口为Master进程、7004、7005、7006端口为Slave进程。多机部署时注意配对的Master和Slave不在同一物理机上即可。 安装Redis 1. 下载源代码文件redis-3.0.0.tar.gz 2. 解压tar -xzvf redis-3.0.0..tar.gz 3. 进入目录 cd redis-3.0.0 4. 编译make 5. 安装 make install 6. 创建6个目录用来存放每个进程的配置文件和数据mkdir 7001至7006 7. cp redis.conf 7001/至7006/文件夹下 至此7001至7006这6个目录下均有redis.conf配置件。 修改配置文件 6个redis.conf配置文件相同,注意修改下黄色字体部分的内容即可,其他都相同 配置选项 值 描述 daemonize yes logfile "/opt/log/redis- 7001 .log" databases 1 dir /opt/oracle/redis-3.0.0/ 7001 用来存放数据的地方 cluster-enabled yes cluster-config-file /opt/oracle/redis-3.0.0/ 7001 /nodes.conf cluster-node

node 多线程 cluster

最后都变了- 提交于 2019-11-27 06:43:58
上篇 Node.js 诞生之初就遭到不少这样的吐槽,当然这些都早已不是问题了。 1、可靠性低。 2、单进程,单线程,只支持单核 CPU,不能充分的利用多核 CPU 服务器。一旦这个进程崩掉,那么整个 web 服务就崩掉了。 回想以前用 php 开发 web 服务器的时候,每个 request 都在单独的线程中处理,即使某一个请求发生很严重的错误也不会影响到其它请求。Node.js 会在一个线程中处理大量请求,如果处理某个请求时产生一个没有被捕获到的异常将导致整个进程的退出,已经接收到的其它连接全部都无法处理,对一个 web 服务器来说,这绝对是致命的灾难。 应用部署到多核服务器时,为了充分利用多核 CPU 资源一般启动多个 Node.js 进程提供服务,这时就会使用到 Node.js 内置的 cluster 模块了。相信大多数的 Node.js 开发者可能都没有直接使用到 cluster,cluster 模块对 child_process 模块提供了一层封装,可以说是为了发挥服务器多核优势而量身定做的。简单的一个 fork,不需要开发者修改任何的应用代码便能够实现多进程部署。当下最热门的带有负载均衡功能的 Node.js 应用进程管理器 pm2 便是最好的一个例子,开发的时候完全不需要关注多进程场景,剩余的一切都交给 pm2 处理,与开发者的应用代码完美分离。 pm2 start

Apache httpd与tomcat集群

◇◆丶佛笑我妖孽 提交于 2019-11-27 05:37:12
回顾 前几天,刚刚搭建了apache httpd的静态网站,并为其开启的SSL。 http://my.oschina.net/xpbug/blog/197454 今天在其基础上,我们将使用tomcat搭建集群,并把httpd改造成一个load banlencer的逆向代理。 应用的开发 首先,我需要开发一个web应用,来测试我的集群,于是,我创建了一个动态web项目,取名叫sessiontest. 在此项目中,只有两个jsp文件。 第一个select.jsp. 这个文件相当于一个购物车,将用户选中的内容提交,并展示用户选中的物品。 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Your selections</title> </head> <body> <% String selections = (String)session.getAttribute("selections"); selections