负载均衡

高并发大型网站架构设计

删除回忆录丶 提交于 2020-03-09 10:42:48
高性能服务器架构思路——分布式系统概念>>> » 一个大型的网站网站应该由如下6个子系统组成 负载均衡系统 反向代理系统 Web服务器系统 分布式存储系统 底层服务系统 数据库集群系统 为什么要做高并发系统设计? 事实上,针对于任何单一的网络服务器程序,其可承受的同时连接数目是有理论峰值的,通过C++中对TSocket的定义类型:word,我们可以判定这个连接理论峰值是65535,也就是说,你的单个服务器程序,最多可以承受6万多的用户同时连接。但是,在实际应用中,能达到一万人的同时连接并能保证正常的数据交换已经是很不容易了,通常这个值都在2000到5000之间,能达到上万已经很不错了。目前的门户网站动辄几千万的访问量,所以,高并发的系统架构在所难免。 整体架构 真实中的网站架构也许并不如此也可以实现高性能。但是高性能的网站莫不过如此。如下图所示。 第一 负载均衡系统 负载均衡系统分为硬件和软件两种。 硬件负载均衡效率高,但是价格贵,比如 F5等。 软件负载均衡系统价格较低或者免费,效率较硬件负载均衡系统低,不过对于流量一般或稍大些网站来讲也足够使用,比如 lvs。 第二 反向代理系统 目前普遍使用Squid或者nginx,或者Lighttpd,Varish。 这四者又各自有很大的差异。 Squid:主要用来做反向代理,使用内存+硬盘 Nginx:可以反向代理+负载均衡+WWW解析

2.2.1 Nginx高性能负载均衡器

北城以北 提交于 2020-03-09 08:43:07
目录 2.2.1.1 Nginx负载均衡 1、Nginx简介 1.1、Nginx作为负载均衡的8个原因 2、正向代理和反向代理 2.1、正向代理 2.2、反向代理(Reverse Proxy) 2.3、反向代理的作用 3、负载均衡原理 4、Nginx负载均衡的4种配置方案 1、轮询(Round Robin)【默认】 2、最少连接least_conn 3、IP地址哈希ip_hash 4、基于权重weight 2.2.1.2 代理缓存机制 1、Nginx缓存简介 1.1、缓存文件放在哪里? 1.2、如何指定哪些请求被缓存? 1.3、缓存的有效期是多久? 1.4、对于某些请求,是否可以不走缓存? 2.2.1.3 通过Lua拓展Nginx 2.2.1.4 高性能Nginx最新实践 2.2.1.1 Nginx负载均衡 1、Nginx简介 Nginx是一款轻量级的web( 静态 )服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD协议下发行,几乎可以在所有操作系统中运行。 Nginx做web服务器:比如Html解析、JS静态文件解析...... 由俄罗斯程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站、搜索引擎Rambler使用。 特点 : 占有内存少、高性能、高并发性 (最初用于解决C10K问题,现在可以C100K) 主要用epoll方式

zookeeper之基础简介

邮差的信 提交于 2020-03-09 00:13:38
文章目录 1 zookeeper简介 1.1 数据发布与订阅(配置中心) 1.2 负载均衡 1.3 命名服务(Naming Service) 1.4 分布式通知/协调 1.5 集群管理与 Master 选举 1.6 分布式锁 1.7 分布式队列 1 zookeeper简介 ZooKeeper 是一个高可用的分布式数据管理不系统协调框架。基于对 Paxos 算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得 ZooKeeper 解决很多分布式问题。 网上对 ZK 的应用场景也有不少介绍,本文将系统地对 ZK 的应用场景迚行一个分门归类的介绍。 值得注意的是, ZK 并非天生就是为这些应用场景设计的,都是后来众多开发者根据其框架的特性,利用其提供的一系列 API 接口,摸索出来的典型使用方法。 1.1 数据发布与订阅(配置中心) 发布不订阅模型,即所谓的 配置中心 ,顾名思义就是发布者将数据发布到 ZK 节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。 应用中用到的一些配置信息放到 ZK 上迚行集中管理。这类场景通常是这样:应用在启劢的时候会主动来获取一次配置,同时,在节点上注册一个 Watcher ,这样一来,以后每次配置有更新的时候,都会实时通知到订阅的客户端

Nginx负载均衡

自古美人都是妖i 提交于 2020-03-08 21:34:23
如果不通,查看端口是否开放 firewall-cmd--permanent --add-port=xxx/tcp systemctl restart firewalld 来源: https://www.cnblogs.com/zyzblogs/p/12444746.html

SpringCloud学习笔记-ribbon

我的梦境 提交于 2020-03-08 21:32:48
文章目录 ribbon 简介 使用 为服务消费者整合ribbon 自定义配置 使用java代码自定义配置(不推荐) 创建Ribbon配置类 使用配置类 使用属性自定义配置 饥饿加载 ribbon 简介 Ribbon是Netflix发布的 负载均衡器 ,它可以帮我们控制HTTP和TCP客户端的行为。只需为Ribbon配置服务提供者地址列表,Ribbon就可基于负载均衡算法计算出要请求的目标服务地址。 在Spring Cloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。 github地址 使用 为服务消费者整合ribbon 引用依赖 spring-cloud-starter-netflix-eureka-client 包含了ribbon依赖,如果引入了 spring-cloud-starter-netflix-eureka-client ,则无需再引入ribbon依赖 < dependency > < groupId > org.springframework.cloud </ groupId > < artifactId > spring-cloud-starter-netflix-ribbon </ artifactId > </ dependency >

在浏览器输入一个网址后,发生了什么?

扶醉桌前 提交于 2020-03-08 19:55:03
转自http://www.cnblogs.com/SarahLiu/p/5954832.html 这是面试中一道非常经典的问题。 当你在浏览器中输入一个网址,浏览器的处理过程如下: DNS解析 TCP连接 发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 连接结束 1 第一步 浏览器查找该域名的 IP 地址 2 第二步 浏览器根据解析得到的IP地址向 web 服务器发送一个 HTTP 请求 3 第三步 服务器收到请求并进行处理 4 第四步 服务器返回一个响应 5 第五步 浏览器对该响应进行解码,渲染显示。 6 第六步 页面显示完成后,浏览器发送异步请求。 下面对每个环节做进一步分析: 01 浏览器查找该域名的 IP 地址: 浏览器缓存 首先是查找浏览器缓存,浏览器会缓存DNS记录一段时间,不同浏览器保存的时常不等(2分钟到30分钟不等)。 系统缓存 如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用来查找这个网址的对应DNS信息。 路由器缓存 如果在系统缓存里没有找到找到对应的IP,请求会发向路由器,它一般会有自己的DNS缓存。 ISP DNS服务器 如果在路由器缓存里还是没有对应的IP,请求会被发送到ISP。 根域名服务器 如果还是没有,请求将发向根域名服务器进行搜索。找不到就说明此域名不存在。 02 浏览器根据解析得到的IP地址向 web

LVS基本概念和三种模式

喜你入骨 提交于 2020-03-08 18:54:46
网站架构中,负载均衡技术是实现网站架构 伸缩性 的主要手段之一。所谓"伸缩性",是指可以不断向集群中添加新的服务器来提升性能、缓解不断增加的并发用户访问压力。通俗地讲,就是一头牛拉不动时,就用两头、三头、更多头牛来拉。 负载均衡有好几种方式:http URL重定向、DNS的A记录负载均衡、反向代理负载均衡、IP负载均衡和链路层负载。本文所述为LVS,它的VS/NAT和VS/TUN模式是IP负载均衡的优秀代表,而它的VS/DR模式则是链路层负载均衡的优秀代表。 1.LVS简介 LVS中文官方手册: http://www.linuxvirtualserver.org/zh/index.html 。这个手册对于了解lvs的背景知识很有帮助。 LVS英文官方手册: http://www.linuxvirtualserver.org/Documents.html 。这个手册比较全面,对于了解和学习lvs的原理、配置很有帮助。 LVS是章文嵩开发的一个国产开源负载均衡软件。LVS最初是他在大学期间的玩具,随着后来使用的用户越来越多,LVS也越来越完善,最终集成到了Linux的内核中。有不少开源牛人都为LVS开发过辅助工具和辅助组件,最出名的就是Alexandre为LVS编写的Keepalived,它最初专门用于监控LVS,后来加入了通过VRRP实现高可用的功能。 LVS的全称是Linux

高并发下的Node.js与负载均衡

亡梦爱人 提交于 2020-03-08 14:12:55
新兴的 Node.js 已经吸引了很多开发人员的眼光,它提供给我们一个快速构建高性能的网络应用的平台。我也开始逐步投入node.js的怀抱,在学习和使用的过程中,遇到了一些问题,也有一些经验,我觉得有必要写出来,作为总结,也用作分享。 众所周知,node.js基于 v8 引擎,所以它本身并不支持多线程(有多线程的 Module 哦),那么为了充分利用server的Multi-core,就必须使用多进程的方式。那么进程之间如何负载均衡就会是一个关键所在。 多进程共享监听socket Node.js与进程相关的模块有 process , child_process , cluster ,这其中cluster用于方便的创建共享端口的多进程模式(The cluster module allows you to easily create a network of processes that all share server ports),这种模式使多个进程间共享一个监听状态的socket,并由系统将accept的connection分配给不同的子进程,而且实现起来也非常简单,cluster为你做了大部分事情,这里有一个test case: 1 var cluster = require('cluster'); 2 var http = require('http'); 3 var

CentOS7构建LVS+Keepalived高可用方案

这一生的挚爱 提交于 2020-03-08 14:07:35
负载均衡(LB)软件 常见负载均衡软件有:LVS、Nginx、Haproxy LVS : 1). 基于4层网络协议,几乎无流量产生,这个特点也决定这几个负载均衡软件里负载能力最强,内存、CPU占用资源也低。 2). 应用范围广,不仅对Web服务做负载均衡,而且可结合其他应用做负载,如LVS+MySQL负载均衡。 3). 配置简单, 可配置东西较少。 4). 无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。 5). 有个虚IP概念。 Nginx : 1). 基于7层网络协议,对Http应用做分流策略,如配置域名。 2). 高负载、稳定。支持上万高并发。负载能力小于LVS。 3). 安装配置简单,支持的正则比Haproxy丰富。且对网络稳定性的依赖非常小。 4). 可通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码、超时等,把返回错误的请求重新提交到另一个节点。 5). 作Web服务器。 6). 反向代理\负载均衡。 Haproxy : 1). 支持虚拟主机,可工作在4层、7层。 2). 负载均衡效率上来讲Haproxy比Nginx更出色,在并发处理上也是优于Nginx。 3). 能够补充Nginx的一些缺点,如支持Session的保持,Cookie的引导。同时支持通过获取指定的url来检测后端服务器的状态。 4).

Java Web 深入分析(3) CDN

六月ゝ 毕业季﹏ 提交于 2020-03-08 13:19:32
CDN (Content Delivery NetWork) 内容分发网络,它是构筑在现有互联网基础上的一种先进的流量分配网络。区别于镜像,相当于是 CDN = 镜像(mirror) + 缓存(Cache)+整体负载均衡(GSLB)。目前CDN 都已缓存网站中的静态数据为主,如CSS,JS,图片和静态页面等数据,用户从主服务器上请求到动态页面之后,再从CDN上下载这些静态数据,从而加速访问。 CDN目标: 可扩展性(Scalebility) 应对新增大量的数据,用户和事务的扩展性。低成本提供高质量的内容分发。 安全性(Security) 强调安全问题。 可靠性。容灾和负载均衡咯。 CDN架构: 如图用户去访问一个假设是css文件,先是想localserver发起请求,然后迭代解析回到这个域名的注册服务器去解析,然后通过cname解析到CDN全局负载均衡服务器,然后用户直接去这个CDN节点访问这个css文件咯,如果不存在就去源站请求。 3种负载均衡 链路负载均衡:dns服务器进行负载均衡,在解析中完成。 集群负载均衡:分为硬件和软件 - 硬件:非常昂贵的硬件设备,如F5 开始一旦坏掉就GG - 软件: 通过代理服务器,可能会增加网络延时。LVS在IP层进行地址转发,HAProxy根据HTTP请求头进行转发。 操作系统负载均衡:利用操作系统的软中断和硬中断,来达到负载均衡。