集群概述
什么是集群
集群概念
集群是一种计算机系统, 它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完
成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节
点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计
算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比
要高得多。
集群的特点
集群拥有以下两个特点:
可扩展性:集群的性能不限制于单一的服务实体,新的服务实体可以动态的添加到集群,从而增强
集群的性能。
高可用性:集群当其中一个节点发生故障时,这台节点上面所运行的应用程序将在另一台节点被自
动接管,消除单点故障对于增强数据可用性、可达性和可靠性是非常重要的。
集群的两大能力
集群必须拥有以下两大能力:
负载均衡:负载均衡把任务比较均匀的分布到集群环境下的计算和网络资源,以提高数据吞吐量。
错误恢复:如果集群中的某一台服务器由于故障或者维护需要无法使用,资源和应用程序将转移到
可用的集群节点上。这种由于某个节点的资源不能工作,另一个可用节点中的资源能够透明的接管
并继续完成任务的过程,叫做错误恢复。
负载均衡和错误恢复要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各个资源
来说,执行任务所需的信息视图必须是相同的。
集群与分布式的区别
说到集群,可能大家会立刻联想到另一个和它很相近的一个词—“分布式”。那么集群和分布式是一
回事吗?有什么联系和区别呢?
相同点:
分布式和集群都是需要有很多节点服务器通过网络协同工作完成整体的任务目标。
不同点:
分布式是指将业务系统进行拆分,即分布式的每一个节点都是实现不同的功能。而集群每个节点做
的是同一件事情。
Eureka集群
什么是Eureka
Eureka是一种基于REST(Representational State Transfer)的服务,主要用于AWS,用于定位
服务,以实现中间层服务器的负载平衡和故障转移。我们将此服务称为Eureka Server。Eureka还
附带了一个基于Java的客户端组件Eureka Client,它使与服务的交互变得更加容易。客户端还有一
个内置的负载均衡器,可以进行基本的循环负载均衡。在Netflix,一个更复杂的负载均衡器包装
Eureka,根据流量,资源使用,错误条件等多种因素提供加权负载平衡,以提供卓越的弹性。
理解:
Eureka是一个服务注册与发现的注册中心。类似于dubbo中的zookeeper
官网地址:
https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance
搭建Eureka集群
配置host文件C:\Windows\System32\drivers\etc\hosts
文件,添加映射
127.0.0.1 eureka-server1
127.0.0.1 eureka-server2
127.0.0.1 eureka-server3
application.yml配置
第1台application.yml:
server:
port: 8761
eureka:
instance:
hostname: eureka-server1
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://eureka-server2:8762/eureka/,http://eureka-server3:8763/eureka/
第2台application.yml:
server:
port: 8762
eureka:
instance:
hostname: eureka-server2
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://eureka-server1:8761/eureka/,http://eureka-server3:8763/eureka/
第3台application.yml:
server:
port: 8763
eureka:
instance:
hostname: eureka-server3
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://eureka-server1:8761/eureka/,http://eureka-server2:8762/eureka/
项目中使用的时候,将多个写到一起,隔开即可,代码如下:
eureka:
client:
service-url:
defaultZone: http://eureka-server1:8761/eureka/,http://eureka-server2:8761/eureka/,http://eureka-server3:8763/eureka/
Redis Cluster
为何要搭建Redis集群。Redis是在内存中保存数据的,而我们的电脑一般内存都不大,这也就意味
着Redis不适合存储大数据,适合存储大数据的是Hadoop生态系统的Hbase或者是MogoDB。
Redis更适合处理高并发,一台设备的存储能力是很有限的,但是多台设备协同合作,就可以让内
存增大很多倍,这就需要用到集群。
Redis集群搭建的方式有多种,例如使用客户端分片、Twemproxy、Codis等,但从redis 3.0之后版
本支持redis-cluster集群,它是Redis官方提出的解决方案,Redis-Cluster采用无中心结构,每个节
点保存数据和整个集群状态,每个节点都和其他所有节点连接。其redis-cluster架构图如下: