负载均衡

关于分布式系统的连环炮一

我们两清 提交于 2020-02-12 12:15:10
关于分布式系统的连环炮 为什么要进行系统拆分?拆分后不用dubbo可以吗? 系统越来越复杂,维护起来非常麻烦,各种冲突,各种合并,非常耗费时间,之间依赖复杂,异常处理起来非常麻烦,各种痛苦 拆分后每个服务都是一个单独的模块,一个人维护一个服务,每个机器部署一个服务, 避免了很多冲突,代码清爽 可以,但是我们如果调用其他服务的接口时会有很多问题需要考虑,负载均衡,超时重试等等一系列问题,dubbo是一个rpc框架,就是本地接口 进行调用,底层会帮我们处理负载均衡,服务上下线自动感知,超时重试等,不需要我们自己去考虑,直接使用就可以了 说一下dubbo的工作原理?注册中心挂了可以继续通信吗?说说一次rpc请求流程? dubbo一共分为10层,provider层,如果一个服务A部署在三台机器上,每台机器有各自的ip,服务会将自己的信息在注册中心进行注册,这样注册中心就有了这个服务的注册信息。 这时一个用户请求发送过来,然后消费者会连接注册中心拉取自己需要调用的服务,消费者就会获取到注册中心里需要调用的服务的信息,这时消费者和服务提供者都会有dubbo 生成的代理,消费者的代理通过负载均衡找到服务A其中的个代理获取需要的数据,服务A返回数据给自己的代理,服务A的代理在返回给消费者的代理,然后返回给消费者,最后返回 给用户,这样就是一个dubbo的执行流程。 如果注册中心挂了还是可以继续通信

nginx在windows下的安装与使用

百般思念 提交于 2020-02-12 04:23:23
1.nginx功能简介 nginx是为了实现负载均衡减轻服务器压力而设计 2.安装nginx 2.1 点击此处下载 2.2 下载完成之后解压缩,先进入到conf文件夹下进行一些必要的配置配置 2.3 打开nginx.conf文件,添加要负载均衡的服务器地址(轮训策略与加权轮询) 2.3.1 添加轮训地址 upstream backser { #权重设置为 5 ,如果 7 个请求过来,理论上有 5 个会落到 8081 对应的后端服务器上。 server localhost : 1000 ; server localhost : 1001 ; } 2.3.2 配置对应的映射 location / { root html ; index index . html index . htm ; proxy_pass http : / / backser ; } 更多Nginx负载均衡_轮训策略与加权轮询配置 点击此处 3.启动与访问 3.1 启动 打开cmd,切换到nginx的安装目录,输入指令 start nginx 3.2 访问 在浏览器访问 localhost:80,若出现以下界面视为安装配置成功 3.3下面我们访问controller层写的映射路径即可 下面附带nginx的其他操作 2、停止: C:\server\nginx-1.0.2>nginx.exe -s stop 或 C:

nginx配置文件

蓝咒 提交于 2020-02-11 23:48:55
简介 Nginx作为优秀的web服务器,通常用来作反向代理、负载均衡、静态资源服务等使用。 配置文件详解 #user nobody ; #配置用户或者组,默认为 nobody。 worker_processes 1 ; #工作进程的进程数,默认为 1 ,每个进程大概花费 10 M左右的内存,一般指定为CPU的核心数。 #pid / nginx / pid / nginx . pid ; #指定nginx进程运行文件存放地址 error_log log / error . log debug ; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别依次为:debug | info | notice | warn | error | crit | alert | emerg events { #nginx驱动模型 accept_mutex on ; #设置网路连接序列化,防止惊群现象发生,默认为on multi_accept on ; #设置一个进程是否同时接受多个网络连接,默认为off #use epoll ; #事件驱动模型,select | poll | kqueue | epoll | resig | / dev / poll | eventport worker_connections 1024 ; #进程的最大连接数,默认为 512 } http

14、Nginx四层负载均衡

泄露秘密 提交于 2020-02-11 12:22:07
1.Nginx四层负载均衡基本概述 1.1.什么是四层负载均衡 四层负载均衡基于传输层协议包来封装的(如:TCP/IP),那我们前面使用到的七层是指的应用层,它的组装在四层基础之上,无论四层还是七层都是指的OSI网络模型。 1.2.四层层负载均衡应用场景 1.四层+七层来作负载均衡,4层可以保证7层的负载均衡的高可用性。如:nginx就无法保证自己的服务高可用,需要依赖lvs或者keepalive来作。 2.如:tcp协议的负载均衡,有些请求是TCP协议的(mysql、ssh),或者说这些请求只需要使用4层进行端口的转发就可以了,所以使用4层负载均衡。 1.3.四层+七层构建大规模集群架构使用场景 1.4四层负载均衡总结 1.四层负载均衡仅能转发TCP/IP协议、UDP协议,通常用来转发端口,如: tcp/3306,tcp/22,udp/53。 2.四层负载均衡可以用来解决七层负载均衡的端口限制问题。(七层负载均衡最大使用65535个端口号) 3.可以用来解决七层负载均衡的高可用问题。(多台后端七层负载均衡能同时的使用) 4.四层的转发效率比七层的高的多,但仅支持tcp/ip协议,不支持http或者https协议 2.Nginx四层负载均衡场景实践 Nginx如何配置四层负载均衡 1.通过访问负载均衡的5555端口,实际是后端的web01的22端口在提供服务。 2

Nginx的负载均衡和高可用

浪子不回头ぞ 提交于 2020-02-11 07:07:00
一、Nginx的理解 Nginx是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。特点:占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现最好。 Nginx常用负载均衡算法: 轮询(默认算法) —— 每个请求会依次分配给后端不同的应用程序服务器,不理会后端服务器的实际压力 加权轮询 —— 权重越大的服务器,被分配到的次数就会越多,通常用于后端服务器性能不一致的情况 IP HASH —— 当同IP进行重复访问时会被指定到上次访问到的服务器,可以解决动态网站SESSION共享问题 二、nginx的配置 实验步骤:由于之前在源码包的编译过程使用了nginx,在此就不再叙述了,我们对nginx的配置进行如下修改。 1) 检测是否安装成功 ---> /usr/local/nginx/sbin/nginx # 开启ngnix服务 注意:当服务启动出现错误:error while loading shared libraries:libpcre.so.1:cannot open shared object file:No such file or directory 解决方法 : 1、 使用命令where

一致性哈希实现负载均衡

丶灬走出姿态 提交于 2020-02-11 01:47:35
一致性哈希实现负载均衡 1 为什么需要哈希算法 解决同一个用户访问服务器是,访问的是不同的服务器的问题 场景:集群造成的session没有同步 当一个用户访问服务器A的时候,该台服务器A会保存这台服务器的session,但是当下次再访问的时候,被负载均衡算法可能算到了不同的服务器B,服务器B中没有用户的session,会要求用户再次登录。 解决: 加入redis,将session存到redis中 Tomcat同步session 一致性哈希算法 2 什么是一致性哈希算法 服务器集群接收到一次请求调用时,可以根据请求的信息,比如客户端的ip地址,或请求路径与请求参数等信息进行哈希,可以得出一个哈希值,特点是对于相同的ip地址,或请求路径和请求参数哈希出来的值是一样的,只要能再增加一个算法,能够把这个哈希值映射成一个服务端ip地址,就可以使用相同的请求(相同的ip地址,或请求路径和请求参数)落到同一服务器上。 因为客户端发起的请求是无穷无尽的(客户端地址不同,请求参数不同等等),所以对于的哈希值也是无穷大的,所以我们不能把所有的哈希值都进行映射到服务端ip上,所有这里需要用到 哈希环 。 3 虚拟节点 解决一个服务器挂掉造成的服务不均匀问题 使得哈希环更加平滑 当时当一台服务器挂掉的话,会造成服务器服务不均匀的情况 会发现,ip3和ip1直接的范围是比较大的,会有更多的请求落到ip1上

负载均衡的起源

我的未来我决定 提交于 2020-02-10 07:19:13
1、什么是负载均衡 负载均衡指多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。 通过某种负载分担任务,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接受到的请求的服务器独立地回应客户的请求。 负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题,这种集群技术可以用最少的投资获得接近于大型主机的性能。 负载均衡方式: 软件负载均衡:Nginx、LVS、HAProxy 硬件负载均衡:Array、F5 来源: https://www.cnblogs.com/Stephanie-boke/p/12289732.html

随机实现负载均衡

蓝咒 提交于 2020-02-10 07:18:56
随机算法实现 1 最简单版本: 随机平均选择服务器 import java.util.Arrays; import java.util.List; public class ServerIps { public static final List<String> LIST = (List<String>) Arrays.asList( "192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4", "192.168.0.5", "192.168.0.6", "192.168.0.7", "192.168.0.8", "192.168.0.9", "192.168.0.10" ); } import java.util.Random; public class RandomChoose{ public static String getServer() { Random random = new Random(); return ServerIps.LIST.get(random.nextInt(ServerIps.LIST.size())); } public static void main(String[] args) { for (int i = 0; i < 10; i++) { System.out.println

轮询实现负载均衡

这一生的挚爱 提交于 2020-02-10 07:18:43
轮询 主要思想是服务器一个接一个的服务 1 简单实现 public class RoundRobin { private static Integer pos = 0; public static String getServer() { if(pos >= ServerIps.LIST.size()) { pos = 0; } String ip = ServerIps.LIST.get(pos); pos++; return ip; } public static void main(String[] args) { for(int i = 0; i < 20; i++) { System.out.println(getServer()); } } } 2 优化:考虑权重 考虑权重的时候 暴力解决,将=创建一个LIST,将IP地址按照权重的大小放入LIST里面 还是按照随机优化的思想 其中A、B、C分别代表3个IP地址,权重分别为5、3、2 A: 5 B: 3 C: 2 映射到坐标轴为 0-----5---8--10 offset的取值再不是一个随机数,而是0,1,2,3,4,5,6,7,8,9 1 ——> A 2 ——> A ... 6 ——> B ... 代码实现 import java.util.Arrays; import java.util.LinkedHashMap

Nginx(3)---代理与负载均衡

三世轮回 提交于 2020-02-09 17:15:20
一、代理简述 代理分为正向代理和反向代理, 正向代理: 客户端与目标服务器之间增加一个代理服务器,客户端直接访问代理服务器,在由代理服务器访问目标服务器并返回客户端并返回 。 比如夜深人静的时候访问的一些网站,其实就是代理服务器,一个代理服务器被封了还有另外的可以访问。主要用作 屏蔽客户端 IP 、集中式缓存、解决客户端不能直连服务端的问题 等,比如 爬虫、翻墙、 maven 的 nexus 服务 。 反向代理:客户端访问目标服务器,在目标服务内部有一个统一接入网关将请求转发至后端真正处理的服务器并返回结果。主要用作 屏蔽服务端内部实现、负载均衡、缓存。 二、Nginx代理配置 Nginx 代理只需要在 location 中配置 proxy_pass 属性即可。其指向代理的服务器地址。 ( 本机环境准备一个tomcat服务启动 ) server { #端口 listen 8079; #域名 server_name www.bluedarkni.com; #站点资源根目录 server中配置则所有location共享 root /website/test; #站点资源位置 location / { index index.html; } location /error { #alias 别名,匹配location的资源路径使用alias的值作为根 alias /website