分布式部署

memcached缓存分布式部署方案

匿名 (未验证) 提交于 2019-12-02 22:06:11
一、分布式方案介绍 比较流行的两种方案: 1.取余分布: 计算key的哈希值,与服务器数量取余,得到目标服务器。优点:实现简单,当某台服务器不可用时,故障转移方便;缺点:当增减服务器时, Key与服务器取余变动量较大,缓存重组代价极大。 代码实现可参考开源组件Memcached.ClientLibrary下的SockIOPool,源码地址: https://sourceforge.net/p/memcacheddotnet/code/HEAD/tree/trunk/clientlib/src/clientlib/SockIOPool.cs 2.一致性哈希环分布: 其原理参考 https://www.cnblogs.com/lpfuture/p/5796398.html http://www.zsythink.net/archives/1182 这两位老哥写的很清楚和直白,很容易理解。 一致性哈希环分布需要物理节点和虚拟节点,且虚拟节点对应到物理节点的服务器上。 二、代码实现 由于Memcached.ClientLibrary的作者已出取余分布的实现,这里不再叙述,以下代码和测试均是一致性哈希分布的。 1.数据结构: 服务器列表:List<string> servers;//IP:PORT 服务器虚拟节点数:List<int> weights;//与servers一一对应

Hadoop+Hbase分布式集群架构“完全篇”

匿名 (未验证) 提交于 2019-12-02 21:56:30
本文收录在 Linux运维企业架构实战系列 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建,操作完成后整理的个人心得,分享给大家~~~ 1、认识Hadoop和Hbase 1.1 hadoop   Hadoop java Apache Hadoop Hadoop 1.2 Hadoop Hadoop Hadoop Common Hadoop Java Hadoop Java Hadoop YARN Hadoop HDFS Hadoop MapReduce YARN Hadoop 2012 “Hadoop” Hadoop Apache Pig Apache Hive Apache HBase Apache 1.3 Hadoop 1 / Hadoop hadoop 绫讳互 jar map reduce 2 Hadoop jar / JobTracker JobTracker / 3 TaskTrackers MapReduce reduce 1.4 Hadoop CPU FTHA Hadoop Hadoop Java 1.5 HBase   Hbase hbase hadoop Hbase Hadoop HDFS Hadoop MapReduce Hbase zookeeper 1.6 HBase Client HBase cache HBase Zookeeper master

Dubbox分布式框架

匿名 (未验证) 提交于 2019-12-02 20:59:24
一:简介:前身是阿里巴巴的一个开源的项目,后来停止维护,由当当网继续维护,它致力于rpc远程的调度方案.是一个服务框架 二:执行原理图: ・ Provider: ・ Consumer: ・ Registry: ・ Monitor: ・ Container: ・ 0. ・ 1. ・ 2. ・ 3. ・ 4. ・ 5. dubbo-2.8.4.jar d:\setup, mvn install:install-file -Dfile=d:\setup\dubbo-2.8.4.jar -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=jar <properties> <spring.version>4.2.4.RELEASE</spring.version> <dependencies> <!-- Spring 相关 --> <dependency>   <groupId>org.springframework</groupId>   <artifactId>spring-context</artifactId>   <version>${spring.version}</version> </dependency> <dependency>    <groupId>org

海量图片的分布式存储及负载均衡研究(浅析)

半世苍凉 提交于 2019-12-02 19:11:04
摘 要:针对海量图片给网站带来的访问速度下降、性能压力增大和I/O瓶颈等问题,提出一种海量图片的分布式存储及负载均衡技术。通过把图片数据和 网站内容分开部署、在数据库中记录和维护图片服务器状态信息等方法实现图片和页面数据的分离。实验结果表明,该技术能提高网站的访问速度和运行效率,并可 动态增加图片服务器的数量满足日益增加的性能需求。   关键词:海量图片;分布式存储;负载均衡   【Abstract】Aiming at the problems of the mass images can cause to Web site such as lower access speed, more performance pressure, I/Operformance bottle-neck, etc., a technology of distributed store and load balance for mass images is proposed. By the means of deploying Website pages and images separately and recording status of image servers in database, solves the problem of separation for image data and

JMeter分布式压测

99封情书 提交于 2019-12-02 19:06:25
在使用Jmeter进行性能测试时,如果并发数比较大时候,单机受限内存、CPU、网络IO,会出现服务器压力还没有上去,压测服务器已经由于模拟的压力太大变的很卡甚至死机,这时可以使用Jmeter提供的分布式测试的功能。 一、Jmeter分布式执行原理:   1、Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。   2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,它应该是通过命令行模式执行的。   3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。 二、分布式压测环境部署 前提: 1、最好保证master和所有slave机器上的jmeter的版本相同 2、需要保证master和slave都在一个网络中,且在多网卡环境需要保证启动的网卡都在一个网段 3、如果windows系统作为master,Linux系统的服务器作为slave,还要注意master和slave的防火墙是否已经关闭,Linux系统的服务器关闭防火墙命令: systemctl stop firewalld systemctl status firewalld systemctl disable firewalld systemctl enable

Tair分布式缓存

北城余情 提交于 2019-12-02 18:31:33
Tair是为了解决什么问题而生? Redis很好用,相比memcached多了很多数据结构,支持持久化。但是在很长一段时间里,原生是不支持分布式的。后来就出现了很多redis集群类产品,Tair是其中胜出的优秀作品之一。 所以Tair的特性都是一些集群的特性,比如:容错、解决单点故障、跨机房管理、多集群管理、支持副本等。总而言之,是redis的高可用版本。 Tair的架构 Tair的整体风格是简约实用,包括三个必选模块:client、configserver和dataserver。一个可选模块:invalidserver。   还有一个必要软设施:一致性哈希算法提供分布式的负载均衡计算。 client的作用 1. 在应用端提供访问Tair集群的接口 2.更新并缓存数据分布表和invalidserver 地址等 3. 本地缓存,避免过热数据访问影响Tair集群服务 4. 流控 dataserver的作用 1. 提供存储引擎 2. 接受client和put、get、remove等操作 3. 执行数据迁移、复制等 4. 插件:在接受请求的时候处理一些自定义功能 5. 访问统计 invallidserver的作用 1. 接收来自client和invalid、hide等请求后,对属于同一组的集群(双机房独立集群部署方法)做delete、hide操作,保证同一组集群的一致 2

分布式设计(二)协调与同步

ε祈祈猫儿з 提交于 2019-12-02 18:29:36
分布式互斥 对排他性的资源访问方式,称为分布式互斥。而这种被互斥访问的排他性资源,就叫做临界资源 如何访问 霸道总载:集中式算法 优点:直观、简单,信息交互量少、易于实现 问题:协调者会成为系统性能瓶颈;单点故障 增加主备备分,应用比较广泛 民主协商:分布式算法 先到先得、投票全票通过机制 适合节点数量少且变动不频繁的系统,且由于每个程序均需通信交互,适合P2P系统 应用场景:Hadoop 轮值CEO:令牌环算法 更加公平的算法 非常适合通信模式为令牌环方式的分布式系统 场景:移动自组织网络,无人机通信 分布式选举 集群多节点组成,多个节点到底怎么协同,怎么管理。 主节点:在一个集群中负责对其他节点的协调和管理,可以保证其他节点有序运行,数据一致性。 选举算法 长者为大:Bully算法 民主投票:Raft 算法 优先级的民主投票:ZAB算法 多数派选主算法通常采用奇数节点:ZooKeeper 、etcd、Kubernetes 分布式共识 分布式共享地就是在多个节点均可独自操作或记录的情况下,使用得所有节点针对某个状态达成一致的过程 分布式共识的本质就是“存异求同” 从本质上看,分布式选举问题,其实就是传统的分布式共识方法,主要基于多数投票策略实现的。 分布式在线记帐,是指在没有集中的发行方,也就是没有银行参与的情况下,如何保证交易的一致性。 PoW (Proof of Work)

去中心化分布式服务实时消息平台-NSQ

折月煮酒 提交于 2019-12-02 18:01:56
NSQ是一个基于Go语言的开源的分布式实时消息平台 NSQ可用于大规模系统的实时消息服务,它的设计目标是为在分布式环境下提供一个强大的去除中心化的分布式服务架构,可以每天处理数以亿计的实时消息 简介: http://www.oschina.net/p/nsq?fromerr=IbkI6VH8 官方网站: http://nsq.io/ NSQ的四大组件 nsqlookupd:管理nsqd节点拓扑信息并提供最终一致性的发现服务的守护进程 nsqd:负责接收、排队、转发消息到客户端的守护进程,并且定时向nsqlookupd服务发送心跳 nsqadmin:nsq的web统计界面,可实时查看集群的统计数据和执行一些管理任务 utilities:常见基础功能、数据流处理工具,如nsq_stat、nsq_tail、nsq_to_file、nsq_to_http、nsq_to_nsq、to_nsq 最主要的优势在如下三个方面: 1,性能。在多个著名网站生产环境中被采用,每天能够处理数亿级别的消息。参见官方提供的 性能说明文档 2,易用性。非常易于部署(几乎没有依赖)和配置(所有参数都可以通过命令行进行配置)。 3,可扩展性。具有分布式且无单点故障的拓扑结构,支持水平扩展,在无中断情况下能够无缝地添加集群节点。还具有强大的集群管理界面,参见nsqadmin RabbitMQ和NSQ的一些特点的比较

负载均衡,分布式,集群的理解,多台服务器代码如何同步

 ̄綄美尐妖づ 提交于 2019-12-02 12:54:34
集群 我们的项目如果跑在一台机器上,如果这台机器出现故障的话,或者用户请求量比较高,一台机器支撑不住的话。我们的网站可能就访问不了。那怎么解决呢?就需要使用多台机器,部署一样的程序,让几个机器同时的运行我们的网站。那怎么怎么分发请求的我们的所有机器上。所以负载均衡的概念就出现了。 负载均衡 负载均衡是指基于反向代理能将现在所有的请求根据指定的策略算法,分发到不同的服务器上。常用实现负载均衡的可以用nginx,lvs。但是现在也有个问题,如果负载均衡服务器出现问题了怎么办?所有冗余的概念就出现了。 冗余 冗余其实就是两个或者多台服务器 一个主服务器,一个从服务器。 假设一个主服务器的负载均衡服务器出现了问题,从服务器能够替代主服务器来继续负载均衡。实现的方式就是使用keepalive来抢占虚拟主机。 分布式 分布式其实就是将一个大项目的拆分出来,单独运行。 举个上面的例子。假设我们的访问量特别大。我们就可以做成分布式,跟cdn一样的机制。在北京,杭州,深圳三个地方都搭建一个一模一样的集群。离北京近的用户就访问北京的集群,离深圳近的就访问深圳这边的集群。这样就将我们网战给拆分3个区域了,各自独立。 再举个例子比如我们redis分布式。redis分布式是将redis中的数据分布到不同的服务器上面,每台服务器存储不同的内容,而mysql集群是每台服务器都放着一样的数据

Redis实现分布式锁

耗尽温柔 提交于 2019-12-02 11:05:07
需求   最近负责的一个项目是微服务开发,我所开发的服务里有个定时任务,如果在集群环境下仅仅使用@scheduled,会发生定时任务幂等的问题。   可以采取的解决方案:   1.通过在配置文件设置定时任务开关,只允许一台开启定时任务。考虑到使用了nacos作为配置中心,单节点定时任务对单台服务器的压力以及单点故障问题,不采用。   2.搭建一套分布式任务调度系统。考虑到时间紧急及目前定时任务比较少,不采用。   3.使用分布式锁。由于项目本身就使用到redis,而且开发成本低,采用。 分布式锁介绍   什么是分布式锁?   分布式锁是控制分布式系统之间共同访问共享资源的⼀种锁实现   为什么要用分布式锁?   在单节点系统中,我们可以通过synchronized和lock保证同⼀个⽅法在同一个时刻被同一个线程调用。但是在分布式系统中,这就不管用了,因此,我们使用分布式锁的目的是保证在分布式部署的应⽤集群中,同⼀个⽅法在同⼀时刻只能被⼀台机器上的⼀个线程执⾏。就像需求中提到到,同一时刻只有一台机子在执行定时任务。 实现原理和思路   原理:通过Redis的setnx key value命令,当key不存在时,set一个key为val的字符串,返回1;若key存在,则什么都不做,返回0。   思路:   1.获取锁的时候,使用setnx加锁,并使用expire命令为锁添加一个超时时间