负载均衡

dubbo——负载均衡

佐手、 提交于 2020-03-16 03:19:01
dubbo提供四种负载均衡策略:随机、轮询、最少活动、一致性hash 一、RandomLoadBalance——随机 protected <T> Invoker<T> doSelect(List<Invoker<T>> invokers, URL url, Invocation invocation) { // Number of invokers int length = invokers.size(); // Every invoker has the same weight? boolean sameWeight = true; // the weight of every invokers int[] weights = new int[length]; // the first invoker's weight int firstWeight = getWeight(invokers.get(0), invocation); weights[0] = firstWeight; // The sum of weights int totalWeight = firstWeight; for (int i = 1; i < length; i++) { int weight = getWeight(invokers.get(i), invocation); // save

Nginx + Keepalived负载均衡

橙三吉。 提交于 2020-03-15 13:11:11
第一步: 下载keepalived地址:http://www.keepalived.org/download.html 解压安装: tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/ yum install -y openssl openssl-devel(需要安装一个软件包) cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived make && make install 第二步: 将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作: 首先创建文件夹,将keepalived配置文件进行复制: mkdir /etc/keepalived cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ 然后复制keepalived脚本文件: cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ cp /usr/local/keepalived/etc/sysconfig/keepalived

浏览器输入URL后发生了什么

拈花ヽ惹草 提交于 2020-03-15 11:42:46
  假如在浏览器中输入了www.cnblogs.com,然后回车 DNS解析   浏览器检查 浏览器缓存 是否有域名对应的IP。   浏览器查找操作系统是否有对应的DNS解析成果( hosts文件 )。   查找路由器缓存。   浏览器客户端向 本地域名服务器 发送一个含有域名www.cnblogs.com的DNS查询报文。(大约80%的域名解析到这里就完成了)   本地DNS服务器把查询报文转发到 根DNS服务器 ,根DNS服务器注意到其com后缀,于是向本地DNS服务器 返回com的顶级域名服务器的IP地址。   本地DNS服务器再次向 comDNS服务器 发送查询请求,comDNS服务器注意到其cnblogs.com后缀并用负责该域名的 权威DNS服务器的IP地址 作为回应。   本地DNS服务器向 权威DNS服务器 发出请求,得到www.cnblogs.com的IP地址。   最后,本地DNS服务器将含有www.cnblogs.com的IP地址的响应报文发送给浏览器。 DNS负载均衡:   它的原理是在DNS服务器中为同一个域名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。例如可以根据每台机器的负载量

负载均衡

☆樱花仙子☆ 提交于 2020-03-15 05:54:09
负载均衡(Load Balance)   由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。   针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。   2、代理服务器负载均衡 使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。   3、地址转换网关负载均衡 支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。   4、协议内部支持负载均衡

大型网站采用的具有稳定性的系统构架

≡放荡痞女 提交于 2020-03-15 04:47:07
千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题。 数据库 海量数据处理:负载量不大的情况下select、delete和update是响应很迅速的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题。另外在高UPDATE的情况下,更新一个聚焦索引的时间基本上是不可忍受的。索引和更新是一对天生的冤家。 高并发死锁:平时我们感觉不到,但数据库死锁在高并发的情况下的出现的概率是非常高的。 文件存储的问题:大型网站有海量图片数据、视频数据、文件数据等等,他们如何存储并被有效索引?高并发的情况下IO的瓶颈问题会迅速显现。也许用RAID和专用存贮 服务器 能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京,可能在云南或者新疆的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。 接下来讨论大型网站的底层系统架构,来有效的解决上述问题。 毋庸置疑,对于规模稍大的网站来说,其背后必然是一个服务器集群来提供网站服务,例如,2004年eBay的服务器有2400台,估计现在更多。当然,数据库也必然要和应用服务分开,有单独的数据库服务器集群。对于像淘宝网这样规模的网站而言,就是应用也分成很多组。 下面

Nginx(四) nginx+consul+upasync 在ubnutu18带桌面系统 实现动态负载均衡

青春壹個敷衍的年華 提交于 2020-03-14 09:40:40
1.1 什么是动态负载均衡 传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件,因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化、动态化,无需人工重新加载nginx.conf。这类似分布式的配置中心 1.2 动态负载均衡实现方案 1.Consul+Consul-template 每次发现配置更改需要raload nginx,重启Nginx。(不推荐) 2.Consul+OpenResty 实现无需raload动态负载均衡。(推荐) 3.Consul+upsync+Nginx 实现无需raload动态负载均衡 (推荐) 1.3 常用服务器注册与发现框架 常见服务发现框架 Consul、Eureka、 ZooKeeper以及Etcd ZooKeeper是这种类型的项目中历史最悠久的之一,它起源于Hadoop。它非常成熟、可靠,被许多大公司(YouTube、eBay、雅虎等)使用。 etcd是一个采用HTTP协议的健/值对存储系统,它是一个分布式和功能层次配置系统,可用于构建服务发现系统。其很容易部署、安装和使用,提供了可靠的数据持久化特性。它是安全的并且文档也十分齐全。 2 Consul快速入门 Consul是一款开源的分布式服务注册与发现系统,通过HTTP API可以使得服务注册、发现实现起来非常简单

kubernetes 的 Services 的分类

纵然是瞬间 提交于 2020-03-13 12:38:53
kubernetes 的 Services 标签(空格分隔): kubernetes系列 一: kubernetes 的 Services 一: kubernetes 的 Services 1.1 Service 的概念 Kubernetes Service 定义了这样一种抽象:一个 Pod 的逻辑分组,一种可以访问它们的策略 —— 通常称为微 服务。 这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector Service能够提供负载均衡的能力,但是在使用上有以下限制: 只提供 4 层负载均衡能力,而没有 7 层功能,但有时我们可能需要更多的匹配规则来转发请求,这点上 4 层 负载均衡是不支持的 1.2 Service 的类型 Service 在 K8s 中有以下四种类型 1.ClusterIp:默认类型,自动分配一个仅 Cluster 内部可以访问的虚拟 IP 2.NodePort:在 ClusterIP 基础上为 Service 在每台机器上绑定一个端口,这样就可以通过 : NodePort 来访 问该服务 3.LoadBalancer:在 NodePort 的基础上,借助 cloud provider 创建一个外部负载均衡器,并将请求转发 到: NodePort 4.ExternalName:把集群外部的服务引入到集群内部来

Dubbo基本原理

不羁的心 提交于 2020-03-11 19:42:16
简介: Dubbo是阿里巴巴开源的高性能RPC框架,该框架可以采用Spring配置方式,透明化接入应用,只需要Spring加载Dubbo配置即可。 调用流程 调用说明: 服务容器负责启动,加载,运行服务提供者。 服务提供者在启动时,向注册中心注册自己提供的服务。 服务消费者在启动时,向注册中心订阅自己所需的服务。 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。 系统架构 Dubbo底层架构主要分为十层: Service层:业务接口层,主要为提供方和消费方接口的设计与实现。 Config层:系统配置层,以ReferenceConfig与ServiceConfig为核心,可以初始化配置,也可以通过Spring解析生成配置类。 Proxy层:服务代理层,主要负责给provider与consumer生成代理对象,使其可以进行网络通信。 Register层:服务注册层,封装服务注册与发现的相关实现功能。 CLuster层:集群层,封装provider的路由与负载均衡相关功能。 Monitor层:监控层,统计RPC调用信息,包括访问时间有访问次数记录。

MySQL优化(6):分表和读写分离

╄→尐↘猪︶ㄣ 提交于 2020-03-11 17:28:32
分表 通常指:通过应用程序层,将数据划分到不同的表中进行存储 对比分区,分区是在服务器层完成的分区算法 分表会导致客户端明显的改变,在服务器端出现结构相同的多张表,甚至可以把多张表分到不同的服务器上 以账单表为例:数据库可能会有这样的情况 create table bill201710( id int unsigned auto_increment primary key, user_ud int unsigned, amount decimal(10,2), date int ); create table bill201711( id int unsigned auto_increment primary key, user_ud int unsigned, amount decimal(10,2), date int ); create table bill201712( id int unsigned auto_increment primary key, user_ud int unsigned, amount decimal(10,2), date int ); 而是又Java等代码进行处理,区分应该选择哪一张表,根据传递的时间参数进行划分 实际中,有一个比较麻烦的问题, 主键ID的问题 ,理论上ID是不可以重复的 解决方案: (1)代码层面,手动做一个自增ID,不稳妥

玩转SpringCloud专题(九)-SpringCloud之Ribbon负载均衡

我只是一个虾纸丫 提交于 2020-03-11 10:04:09
1.Ribbon负载均衡简介 1.1Ribbon概述 1.1.1.Ribbon是什么 SpringCloud Ribbon是基于Netflix Ribbon实现的一套 客户端负载均衡 的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如 连接超时 , 重试 等。简单的说,就是在配置文件中列出 LoadBalanCer (简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。 1.1.2.Ribbon主要职责 LB(负载均衡) LB,即负载均衡( Load Balanoe ),在微服务或分布式集群中经常用的一种应用。 负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA。 常见的负载均衡有软件nginx , LVS,硬件F5等。 相应的在中间件,例如:dubbo和 SpringCloud中均给我们提供了负载均衡,SpringCloud的负载均衡算法可以自定义。 LB又分为两种,集中式LB和进程内LB 集中式LB(偏硬件) 即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如nginx )