负载均衡

Nginx和Ribbon的区别

ぐ巨炮叔叔 提交于 2019-11-29 10:09:10
服务器端负载均衡Nginx nginx是客户端所有请求统一交给nginx,由nginx进行实现负载均衡请求转发,属于服务器端负载均衡既请求有nginx服务器端进行转发。 客户端负载均衡Ribbon Ribbon是从eureka注册中心服务器端上获取服务注册信息列表,缓存到本地,然后在本地实现轮循负载均衡策略。 既在客户端实现负载均衡。 应用场景的区别: Nginx适合于服务器端实现负载均衡 比如Tomcat , Ribbon适合与在微服务中RPC远程调用实现本地服务负载均衡,比如Dubbo、SpringCloud中都是采用本地负载均衡。 来源: https://www.cnblogs.com/lazhaoqian/p/11394787.html

Rsync实现负载均衡的数据同步

北城以北 提交于 2019-11-29 09:59:16
使用三台服务器: 系统:CentOS 6.8 192.168.8.169 开发服务器 192.168.8.167 线上服务器1 192.168.8.168 线上服务器2 实现思路: 在开发服务器上制定一个规则, 即只要rsync.txt存在, 线上服务器就开始进行文件同步,同步完删除该文件。 实现步骤: (1)安装Rsync。 1、Rsync简介: Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。 Rsync使用所谓的“Rsync算法”来使本地和远 程两个主机之间的文件达到同步, 这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 2、Rsync安装: wget https://download.samba.org/pub/rsync/rsync-3.1.3.tar.gz tar -zxvf rsync-3.1.3.tar.gz cd rsync-3.1.3 ./configure --prefix=/usr/local/rsync make make install 第二步: 安装inotify和inotify-tools Centos 6和CentOS 7,已经默认安装了inotify, 如果要查看是否安装,可以使用如下命令 : ll /proc/sys/fs/inotify

消息队列的理解

不羁岁月 提交于 2019-11-29 09:53:41
1.什么是消息队列 :消息队列是消息在传输过程中储存消息的容器。消息队列管理器在将消息从它的源传递到目标时充当着中间人的角色。如果发送消息过程中,接受者不能够接收消息,那么消息队列会保留消息。 2.为什么需要消息队列 :消息队列主要有三个作用:异步,削峰,解耦。 主要是为了解决高并发情况下,由于大量的请求一起发送,这时候同步执行的话,往往会阻塞程序,因此我们需要进行异步处理,缓解系统压力,也可以削峰。 另外,如果几个系统在处理业务的时候耦合性很大,那么只要其中一个系统出问题,其他系统也无法工作,消息队列还可以解耦和。 因此消息队列是大型分布式系统中必不可少的中间件,一般用到的消息队列有rabbitMQ,redis. 当然,消息队列也有缺点 系统可用性降低:比如如果用redis来作为中间人,如果redis挂了,那么整个系统就不能用了,解决方法可以考虑用集群。 系统复杂度增加:多增加了MQ队列,使得整个系统的复杂度提高。 一致性问题:操作多个系统的时候,可能会出现有一两个系统操作不成功过就返回数据,结果造成一致性问题。 3.rabbitmq跟redis来作消息队列的区别? 1.可靠性: redis: 没有相应机制保证消息的消费,当消费者消费失败,消息丢失 rabbitmq: 具有消息消费确认,如果消费者消费失败,会自动返回队列中 2.持久化: redis:

服务发现的可行方案以及实践案例

假如想象 提交于 2019-11-29 09:46:22
为什么要使用服务发现? 假设我们写的代码会调用 REST API 或者 Thrift API 的服务。为了完成一次请求,代码需要知道服务实例的网络位置(IP 地址和端口)。运行在物理硬件上的传统应用中,服务实例的网络位置是相对固定的;代码能从一个偶尔更新的配置文件中读取网络位置。 对于基于云端的、现代化的微服务应用而言,这却是一大难题,正如下图所示。 服务实例的网络位置都是动态分配的。由于扩展、失败和升级,服务实例会经常动态改变,因此,客户端代码需要使用更加复杂的服务发现机制。 服务发现有两大模式:客户端发现模式和服务端发现模式。我们先来了解客客户端发现模式。 客户端发现模式 使用客户端发现模式时,客户端决定相应服务实例的网络位置,并且对请求实现负载均衡。客户端查询服务注册表,后者是一个可用服务实例的数据库;然后使用负载均衡算法从中选择一个实例,并发出请求。 客户端从服务注册服务中查询,其中是所有可用服务实例的库。客户端使用负载均衡算法从多个服务实例中选择出一个,然后发出请求。 下图显示了这种模式的架构: 服务实例的网络位置在启动时被记录到服务注册表,等实例终止时被删除。服务实例的注册信息通常使用心跳机制来定期刷新。 Netflix OSS 是客户端发现模式的绝佳范例。Netflix Eureka 是一个服务注册表,为服务实例注册管理和查询可用实例提供了 REST API 接口

六种实现负载均衡技术的方式

ⅰ亾dé卋堺 提交于 2019-11-29 09:46:14
负载均衡(Load Balance)是集群技术(Cluster)的一种应用,可以将工作任务分摊到多个处理单元,从而提高并发处理能力,有利于提升中大型网站的性能。接下来天下数据小编就为大家介绍6种实现负载均衡技术的方式: http重定向协议实现负载均衡 根据用户的http请求计算出一个真实的web服务器地址,并将该web服务器地址写入http重定向响应中返回给浏览器,由浏览器重新进行访问。该方式比较简单,但性能较差, 【协议层】dns域名解析负载均衡 在DNS服务器上配置多个域名对应IP的记录。该方式直接将负载均衡的工作交给了DNS,为网站管理维护省掉了很多麻烦,访问速度快,有效改善性能。 【协议层】反向代理负载均衡 反向代理服务器在提供负载均衡功能的同时,管理着一组web服务器,根据负载均衡算法将请求的浏览器访问转发到不同的web服务器处理,处理结果经过反向服务器返回给浏览器。该方式部署简单,但是web 服务器地址不能直接暴露在外,不需要使用外部IP地址,而反向代理服务作为沟通桥梁就需要配置双网卡、外部内部两套IP地址。 【网络层】IP负载均衡 在网络层通过修改目标地址进行负载均衡。该方式在响应请求时速度较反向服务器负载均衡要快,但是,当请求数据较大(大型视频或文件)时,速度反应就会变慢。 【链路层】数据链路层负载均衡 在数据链路层修改Mac地址进行负载均衡

什么是SpringCloud

假装没事ソ 提交于 2019-11-29 09:29:02
SpringCloud是在SpringBoot的基础上构建的,用于简化分布式系统构建的工具集. 该工具集为微服务架构中所涉及的配置管理,服务发现,智能路由,断路器,微代理和控制总线等操作 提供了一种简单的开发方式. SpringCloud中包含了多个子项目,可以通过官网: http://spring.io/projects/spring-cloud 查看这些子项目. Spring Cloud Netflix : 集成了各种OSS组件,其中包括Eureka,Ribbon,Hystrix,Zuul,Feign,Archaius等. Spring Cloud Config : 配置管理工具,支持使用Git存储配置内容,可以使用它实现应用配置的外部化存储, 并支持客户端配置信息刷新,加密和解密等配置内容. Spring Cloud Starters : Spring Cloud的基础组件,是基于SpringBoot风格项目的基础依赖模块. SpringCloud Bus, Spring Cloud Consul, SpringCloud CLI 等. 特点: 最大的特点就是它的集成性,它将很多开源产品都集成到了自身的框架中,使其越来越强大. 1.使用方便. 2.功能齐全. 3.易于扩展和维护. 4.适用于各种环境. 在图1-5中,部署了一系列的微服务,每个微服务都会访问自己的数据库

SpringCloud简介与5大常用组件

喜欢而已 提交于 2019-11-29 09:28:50
pringcloud springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。 通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。 SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix 图片来源@王璐-Louise。我是画不出来这么美的图的。。。 springcloud的版本说明: springcloud项目是由多个独立项目集合而成的,每个项目都是独立的,各自进行自己的迭代和版本发布。所以springcloud不方便使用版本号来管理,而是使用版本名。以避免和子项目版本号的冲突。 版本名的来源是伦敦的地铁站名,以字母排序。比如最早的Release版本为Angel,第二个Release版本为Brixton。。。 当一个版本的update积累的比较多或者解决了一个严重bug时,会发布一个ServiceRelease版本,简称SR,后面带的数字就是该大版本下的第一次发布。 从官网上看,springcloud的F版本是基于springboot的2.0.x构建,之前的是基于springboot的1.5.x构建 下面只简单介绍下经常用的5个 服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器—

SpringCloud简介与5大常用组件

北战南征 提交于 2019-11-29 09:28:32
springcloud springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。 通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。 SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix 图片来源@王璐-Louise。我是画不出来这么美的图的。。。 springcloud的版本说明: springcloud项目是由多个独立项目集合而成的,每个项目都是独立的,各自进行自己的迭代和版本发布。所以springcloud不方便使用版本号来管理,而是使用版本名。以避免和子项目版本号的冲突。 版本名的来源是伦敦的地铁站名,以字母排序。比如最早的Release版本为Angel,第二个Release版本为Brixton。。。 当一个版本的update积累的比较多或者解决了一个严重bug时,会发布一个ServiceRelease版本,简称SR,后面带的数字就是该大版本下的第一次发布。 从官网上看,springcloud的F版本是基于springboot的2.0.x构建,之前的是基于springboot的1.5.x构建 下面只简单介绍下经常用的5个 服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器—

SpringCloud简介与5大常用组件

社会主义新天地 提交于 2019-11-29 09:28:14
springcloud: springcloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于springboot构建,对我们熟悉spring的程序员来说,上手比较容易。通过一些简单的注解,我们就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。 SpringCloud的组件相当繁杂,拥有诸多子项目。重点关注Netflix springcloud的版本说明: springcloud项目是由多个独立项目集合而成的,每个项目都是独立的,各自进行自己的迭代和版本发布。所以springcloud不方便使用版本号来管理,而是使用版本名。以避免和子项目版本号的冲突。 版本名的来源是伦敦的地铁站名,以字母排序。比如最早的Release版本为Angel,第二个Release版本为Brixton。。。 当一个版本的update积累的比较多或者解决了一个严重bug时,会发布一个ServiceRelease版本,简称SR,后面带的数字就是该大版本下的第一次发布。 从官网上看,springcloud的F版本是基于springboot的2.0.x构建,之前的是基于springboot的1.5.x构建 下面只简单介绍下经常用的5个 服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix

25,Nginx反向代理负载均衡

Deadly 提交于 2019-11-29 08:10:00
1,什么是反向代理 1,代理顾名思义就是代理某人去做某事,比如律师代理,中介代理。往往你不能直接自己做的事,都需要找代理 2,为什么要用反向代理 1,在没有代理服务器之前,用户访问web服务器是如下图: 2,在实际业务生成环境中,比如我们访问web服务器,在用户和服务器直接往往有一台或者多台代理服务器用来转发你的访问请求,代你去访问web服务器,然后将结果返回给用户。当你只有一台web服务器的时候,这种代理看起来其实意义不大,用户直接访问web服务器不是更快?但生产中不仅仅一台web,这个时候用代理来转发,并实现负载均衡就显得非常重要了! 3,反向代理负载均衡 Nginx代理支持的协议 Nginx反向代理支持协议 反向代理模式与 Nginx 代理模块总结如表格所示 4,部署Nginx反向代理负载均衡 环境: nginx-05:外网10.0.0.5内网172.16.1.5 web-07:外网10.0.0.7内网172.16.1.7(部署完成) web-08:外网10.0.0.8内网172.16.1.8(部署完成) 1)nginx-05安装nginx反向代理软件 yum provides nginx yum -y install nginx 2)定义一个代理模块,新建一个文件 [root@172 nginx]# cat provxy_params proxy_set_header