集群服务器

Socket通讯探索(二)-socket集群

我的未来我决定 提交于 2020-01-16 23:33:05
  前面我们在章节“ Socket通讯探索(一) ”中如何实现一个tcp连接,但是这仅仅是一个最初级的BIO实现,且没有添加线程池,实际应用中很少采用这种方式,因为不得不考虑当大量的Tcp连接建立的时候,服务端如何安全稳定的运行?为什么呢?   1、BIO实现方式,是阻塞式的(上一节最后面的实现方式虽然无数据的时候,不会阻塞);   2、服务端为每条连接都开辟了一个线程进行处理,而且在连接不断开的情况下,线程不会得到释放;   基于以上情况,当有大量的连接建立的时候,服务端会开辟大量的线程处理并得不到释放,而线程会占用系统资源,这样就会导致系统资源耗尽,没有系统资源的连接请求将会等待处理,更甚至程序直接崩溃,所以最直接的方式是添加线程池防止程序崩溃,大量的连接的处理则还还需要另想他法。   大家都知道当web应用面临大量的请求时,我们会对其进行集群或分布式等方式部署,同理,我们也可以对socket服务端进行多处部署。   通常,由于Tcp连接中客户端需要知道服务端的IP跟端口,那么这就意味着客户端需要知道所有的目标服务器的地址和端口,如果有那么一台主机专门用于对我们的服务器进行负载均衡,然后将负载均衡完成后选择的地址跟端口返回给客户端,然后客户端再发起真实的连接请求。具体的请求过程如下图(详细请参考: https://wenku.baidu.com/view

readis和es

爷,独闯天下 提交于 2020-01-16 20:52:46
readis集群 面试题 :集群和分布式区别?(理解) (1)相同点 解决高并发 和 大数据的问题 (2)不同点 集群 是 多个服务去实现同一个功能 分布式 不同的服务器实现不同的功能 1 什么是集群(理解) 多个服务器集中再一起 ,去处理同一个业务 集群和分布式概念(理解) 2 为什么需要集群 ,集群有什么好处?(理解) 解决 高并发 大数据的问题 3 集群的特点(理解) (1) 扩展性 --可以动态的去扩展的服务器 (2) 高可用 --> 具备容错的功能 (错误恢复) (3) 负载均衡 -->把请求 分配到不同的服务器里面 4 面试题 :集群和分布式区别?(理解) (1)相同点 解决高并发 和 大数据的问题 (2)不同点 集群 是 多个服务去实现同一个功能 分布式 不同的服务器实现不同的功能 5 如果要做集群 应该怎么做? 方案一 主从复制 好不好? 优点: 完成主从复制 , 缺点:不能完成容错或者恢复的功能(keepalive) 获取 手动重启 扩展服务器比较麻烦 方案二: 哨兵模式 Redis 2.8中提供了哨兵工具来 实现自动化的系统监控和故障恢复功能 。 好处:完成自动的主从切换 缺点:Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂 方案三: Redis-Cluster (搭建) 好处:可以完成分布式存储问题,解决容量问题 Redis

高并发场景下LVS安装与高可用实现

血红的双手。 提交于 2020-01-16 20:29:20
本文目录: LVS介绍与集群搭建 负载均衡(LVS)相关名词 在Web端的操作有什么含义 LVS集群的工作模式 IPVS调度器实现的八种负载调度算法 LVS+Keepalived方案实现 常见LVS负载均衡高可用解决方案 一、负载均衡介绍 1、负载均衡的妙用 负载均衡(Load Balance)集群提供了一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载、带宽,增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。 单台计算机无法承受大规模的并发访问或数据流量了,此时需要搭建负载均衡集群把流量分摊到多台节点设备上分别处理,即减少用户等待响应的时间又提升了用户体验; 7*24小时的服务保证,任意一个或多个有限后端节点设备宕机,不能影响整个业务的运行。 2、为什么要用LVS 工作在网络模型的7层,可以针对http应用做一些分流的策略,比如针对域名、目录结构,Nginx单凭这点可利用的场合就远多于LVS了。 最新版本的Nginx也支持4层TCP负载,曾经这是LVS比Nginx好的地方。 Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一,相反LVS对网络稳定性依赖比较大。 Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。LVS的配置、测试就要花比较长的时间了,LVS对网络依赖比较大。

keepalived 保证集群的高可用

不想你离开。 提交于 2020-01-16 20:06:06
高并发: 能够同时供多台客户端访问 高可用: 防止集群中因为某个节点坏掉,而导致整个集群不能正常的提供服务 keepalived起初就是为了和lvs进行搭配,配合lvs对后端的集群进行健康检查,当后端的集群中有一个服务器宕机,他将会将这个服务器从后端节点中剔除,来保证集群的可用性,当后端的这个服务能够正常提供服务的时候,再将该服务加入到后端的集群中。后来keepalived实现了vrrp协议 vrrp 虚拟路由协议 漂移ip lvs 要有两台 client 负载 负载 web1 web2 后期keepalived对lvs负载均衡服务器是用做节点检查的,避免单点故障 负载均衡的集群中,分为(master backup) 如果发生故障,从节点将会在集群中选出一个主,来代替主的位置,主和从之间会发送特定的消息,(这个时间一般为1s),当从服务器接收不到主给的消息,就意味着主服务器宕机,然后从将接替主来进行工作,从而保证集群的高可用 当主服务器修好以后,就会继续主的位置 client 192.168.2.100 lvs1 192.168.2.10 lvs2 192.168.2.11 web1 192.168.2.20 httpd 1111 web2 192.168.2.30 httpd 2222 lvs1 以及lvs2都要进行 lvs1和lvs2搭建keepalived .

分布式之消息队列

旧巷老猫 提交于 2020-01-16 10:58:21
1、为什么要使用消息队列? 主要有三个原因: 解耦、异步、削峰 (1)解耦 传统模式: 传统模式的 缺点 : 系统间耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦! 中间件模式: 中间件模式的的 优点 : 将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改。 (2)异步 传统模式: 传统模式的 缺点 : 一些非必要的业务逻辑以同步的方式运行,太耗费时间。 中间件模式: 中间件模式的的 优点 : 将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度 (3)削峰 传统模式 传统模式的 缺点 : 并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常 中间件模式: 中间件模式的的 优点 : 系统A慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取消息。在生产中,这个短暂的高峰期积压是允许的。 2、使用了消息队列会有什么缺点? 分析 :一个使用了MQ的项目,如果连这个问题都没有考虑过,就把MQ引进去了,那就给自己的项目带来了风险。我们引入一个技术,要对这个技术的弊端有充分的认识,才能做好预防。 要记住,不要给公司挖坑! 回答 :回答也很容易,从以下两个个角度来答 系统可用性降低 :你想啊,本来其他系统只要运行好好的,那你的系统就是正常的。现在你非要加个消息队列进去

Kafka、RabbitMQ、RocketMQ消息中间件的对比

扶醉桌前 提交于 2020-01-16 10:40:48
引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦。现在开源的消息中间件有很多,目前对Kafka、RabbitMQ、RocketMQ这三个消息中间件做下对比分析。 - - kafka RocketMQ RabbitMQ 数据来源 相关文章 定位 设计定位 系统间的数据流管道,实时数据处理。 例如:常规的消息系统、网站活性跟踪,监控数据,日志收集、处理等 非日志的可靠消息传输。 例如:订单,交易,充值,流计算,消息推送,日志流式处理,binglog分发等 可靠消息传输。和RocketMQ类似。 基础对比 成熟度 日志领域成熟 成熟 成熟 所属社区/公司 Apache Alibaba开发,已加入到Apache下 Mozilla Public License 社区活跃度 高 中 高 来源于网络 API完备性 高 高 高 文档完备性 高 高 高 来源于网络 开发语言 Scala Java Erlang 支持协议 一套自行设计的基于TCP的二进制协议 自己定义的一套 (社区提供JMS--不成熟) AMQP 客户端语言 C/C++、Python、Go、Erlang、.NET、Ruby、Node.js、PHP等 Java Java、C、 C++、 Python、 PHP、Perl 等 持久化方式 磁盘文件 磁盘文件 内存、文件 可用性、可靠性比较 部署方式 单机/集群

dubbo 集群容错

三世轮回 提交于 2020-01-16 09:30:02
在收到提供者执行的结果时,当结果处理失败时,需要对其进行处理。 在Reference中,返回的Invoker是根据对应的容错机制生成的Invoker <dubbo:reference id="testService" interface="com.test.ITestService" cluster="failfast"/> failover cluster 失败的时候自动切换并重试其他服务器。 通过retries=2。 来设置重试次数(默认) failfast cluster 快速失败,只发起一次调用 ; 写操作。比如新增记录的时候, 非幂等请求 failsafe cluster 失败安全。 出现异常时,直接忽略异常 – 写日志 failback cluster 失败自动恢复。 后台记录失败请求,定时重发 forking cluster 并行调用多个服务器,只要一个成功就返回。 只能应用在读请求 broadcast cluster 广播调用所有提供者,逐个调用。.3其中一台报错就会返回异常 @SPI(FailoverCluster.NAME) public interface Cluster { @Adaptive <T> Invoker<T> join(Directory<T> directory) throws RpcException; } FailoverCluster

CDH5.12.1集群安装配置

ぐ巨炮叔叔 提交于 2020-01-16 08:46:49
CDH5.12.1&Kerberos 安装配置 环境: 操作系统:CentOS 7 JDK 版本:1.8.144 所需安装包及版本说明:由于我们的操作系统为CentOS7,需要下载以下文件: 下载地址: http://archive.cloudera.com/cm5/cm/5/ cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz 下载地址: http://archive.cloudera.com/cdh5/parcels/5.12.1/ CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 manifest.json IP地址 主机名 角色名称 部署软件 192.168.1.25 node5 Master jdk、cloudera-manager、MySql、krb5kdc、kadmin 192.168.1.21 node1 node jdk、cloudera-manager 192.168.1.22 node2 node jdk、cloudera-manager 192.168.1.23 node3 node jdk、cloudera-manager 192.168.1.24 node4 node jdk、cloudera

使用docker搭建mysql集群

懵懂的女人 提交于 2020-01-16 05:50:15
使用docker搭建mysql集群 如何使用docker搭建mysql的集群(使用了percona/percona-xtradb-cluster和haproxy镜像) 获取docker的mysql镜像 获取docker仓库存在的mysql镜像 docker pull percona/percona-xtradb-cluster:latest #获取镜像 #也可使用docker tag 【镜像名称】 【你需要的命名】 ,来个镜像加标签,可以让镜像名字短一些,便于使用 创建mysql集群服务 新建属于mysql集群的网段 docker network create -- subnet=172 . 18 . 0 . 0 / 16 mysql - cluster - net 新建属于mysql服务的数据卷 docker volume create v1 docker volume create v2 docker volume create v3 docker volume create v4 docker volume create v5 创建第一个mysql的节点 docker run - d - p 3406:3306 - e MYSQL_ROOT_PASSWORD=Radiant123 - e CLUSTER_NAME=MIXEDINFOS - PXC - e XTRABACKUP

JAVA总结--dubbo与zookeeper

只谈情不闲聊 提交于 2020-01-16 04:02:47
读累了就看看实操 https://www.cnblogs.com/huasky/p/10214642.html 一、SOA 概念:SOA:Service-Oriented Architecture,面向服务的架构,将应用程序的不同功能(服务)通过定义的接口来实现数据通信;服务治理;服务调度中心和治理中心; 架构演变:单一应用架构ORM | 垂直应用架构MVC | 分布式服务架构RPC | 流动计算架构SOA ORM :流量小,单一应用,部署一起;关注于简化增删改查的对象关系映射, MVC :流量增加,应用拆分;关注于提高前端开发速度; RPC :远程过程调用;通过网络进行远程计算机服务的请求;核心业务抽取;关注于业务的复用和整合; 由统一到分布式: 使用场景由混乱到统一: SOA又叫服务治理,SOA就是帮助我们把服务之间调用的乱七八糟的关系给治理起来,然后提供一个统一的标准; 统一标准:各系统的协议、地址、交互方式。 新的交互方式:各个系统分别根据统一标准向数据总线进行注册,各子系统调用其他子系统时,我们并不关心如果找到其他子系统,我们只招数据总线,数据总线再根据统一标准找其他子系统,所以数据总线在这里充当一个只路人的作用。 数据总线是起到调度服务的作用,数据总线不是集成服务,数据总线更新一个调度框架,每个服务需要根据约定向数据总线注册服务;服务不是经过总线的