负载均衡

分布式应用

北城以北 提交于 2019-12-03 04:53:08
基于SOA的分布式高可用架构和微服务架构,是时下如日中天的互联网企业级系统开发架构选择方案。在核心思想上,两者都主张对系统的横向细分和扩展,按不同的业务功能模块来对系统进行分割并且使用一定的手段实现服务之间的通信,并且基于弹性云服务搭建高可用的分布式解决方案。 但它们之间的区别可能比相似的地方要多,特别是体现在对服务的使用和与云服务的深度结合上。在具体实践中,微服务的架构也可以与其它互联网中间件组合在一起,组成规模更为庞大的SOA分布式系统。本文主要对一个典型的SOA分布式应用的架构和组件做详细的说明。 企业级系统架构的演变 单体式 单体架构即所有系统功能和模块基于MVC的设计模式耦合在一个单体服务器单元中。基于传统的MVC思想,单体应用基于前后端分离的原则,通过Model、Control和View共同来完成一个特点的服务请求。这种传统的架构模式带了了多人团队合作、代码更新和维护、持续部署方面的困难,更重要的是,这种架构无法支持互联网行业对高并发的需求。下图为一个典型商城应用的单体架构及其SSM实现架构: 关于单体式应用的更多资料,可参看: JavaWeb开发之详解Servlet及Servlet容器 基于SSM的Java Web应用开发原理初探 集群 至少在高并发的需求上,单体应用的缺陷是行业所无法忍受的, 那如何提升并发性能呢?一个直接的思路是,把单体应用变成多体,变成集群

Dubbo+Zookeeper的简单实用

空扰寡人 提交于 2019-12-03 04:51:44
一、 Dubbo 介绍 1.1 dubbo 出现的背景 大规模服务化之前,应用可能只是通过 RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均衡。 (1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。 此时需要一个服务注册中心,动态的注册和发现服务,使服务的位置透明。 并通过在消费方获取服务提供方地址列表,实现软负载均衡和 Failover,降低对F5硬件负载均衡器的依赖,也能减少部分成本。 (2) 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。 这时,需要自动画出应用间的依赖关系图,以帮助架构师理清理关系。 (3) 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器? 为了解决这些问题,第一步,要将服务现在每天的调用量,响应时间,都统计出来,作为容量规划的参考指标。 其次,要可以动态调整权重,在线上,将某台机器的权重一直加大,并在加大的过程中记录响应时间的变化,直到响应时间到达阀值,记录此时的访问量,再以此访问量乘以机器数反推总容量。 1.2 dubbo 的详细介绍 1. Dubbo 是什么? Dubbo(注:HSF提供的是分布式服务开发框架

云平台内部网络资源整合技术

半城伤御伤魂 提交于 2019-12-03 04:41:44
云平台内网络资源整合技术 1.1 网络拓扑 。不仅支持云平台的全局拓扑,还支持针对自定义资源生成拓扑图,快速定位资源状态。 图 10:全局拓扑 图 11: 自定义拓扑 1.2 二层网络资源 VXLANPool VXLANPool表示使用UDP进行报文封装的VXLAN类型的集合,是基于IP网络组建的大二层网络,可满足大规模云计算中心的需求,最大支持16M个逻辑子网。 •VXLANPool和VxlanNetwork共同提供了VxlanNetwork类型的配置,使用VxlanNetwork需先创建VXLANPool,VxlanNetwork对应了VXLANPool里的一个虚拟网络。•VXLANPool最大可支持16777216(16M)个虚拟网络。其Vni(VXLAN网络ID)范围可从1-16777216设置。 •在创建VXLANPool时,如果需要加载到相应集群,则需设置相应的VTEP(VXLAN隧道端点)。•VTEP一般对应于集群内计算节点中的某一网卡的IP地址, 对 VTEP的设置基于相应的CIDR进行配置,例如: ▬假定计算节点某网卡的IP为10.12.0.8,子网掩码为255.0.0.0,网关为10.0.0.1,则VTEP输入的CIDR应为10.0.0.1/8; ▬假定计算节点某网卡的IP为172.20.12.13,子网掩码为255.255.0.0,网关为172.20.0.1

nginx

♀尐吖头ヾ 提交于 2019-12-03 03:57:56
本文链接:https://blog.csdn.net/tsummerb/article/details/79248015 Nginx配置详解 nginx概述 nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。 这里主要通过三个方面简单介绍nginx 反向代理 负载均衡 nginx特点 1. 反向代理 关于代理 说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道; 此时就设计到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生活中的专卖店~客人到adidas专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是adidas厂家,目标角色就是用户 正向代理 说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式,我们会从两个方面来说关于正向代理的处理模式,分别从软件方面和生活方面来解释一下什么叫正向代理 在如今的网络环境下,我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的,此时大家可能都会用一个操作FQ进行访问

k8s工作机制和组件

元气小坏坏 提交于 2019-12-03 01:40:45
Master节点: kuber-apiserver->资源增删改查等操作的唯一出口,也是集群控制的入口进程 Kube-controller-manager->k8s所有资源对象的自动化控制中心 Kube-scheduler->负责资源调度 Replication controller->通过模板来创建和复制pod,提供滚动伸缩和升级 node节点: kubelet->与master节点协作,是主节点的代理,负责pod容器的创建,启动,停止服务 默认情况下kubelet会向master注册自己,kubelet定期向主机节点汇报加入集群的Node的各类信息 Kube-proxy->kubernets services使用其将链路路由到Pod,作为外部负载均衡器使用,在一定数量的Pod之间均衡流量 Docker->kubernets使用容器技术来创建容器 Kubernetes主要由以下几个核心组件组成: etcd保存了整个集群的状态; apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制; controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上; kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI

Docker环境下的前后端分离项目部署与运维

这一生的挚爱 提交于 2019-12-03 01:33:34
本教程将从零开始部署一个 前后端分离 的开源项目,利用docker虚拟机的容器技术,采用分布式集群部署,将项目转换成为高性能、高负载、高可用的部署方案。包括了MySQL集群、Redis集群、负载均衡、双机热备等等。 部署图 所用到的主流技术 Docker 容器、前后端集群、MySQL集群、Redis集群、Haproxy负载均衡、Nginx负载均衡、Keepalived实现双机热备 前后端分离项目部署图 前后端分离项目开源框架介绍 本次教程所采用的 前后端分离 的项目开源框架是人人网的renren-fast,前台开发语言采用Vue,后台是java。 总体部署方案概述 数据库我们采用的是集群,每一个MySQL节点都是要发布到一个 Docker 虚拟机实例中(实例就是一个虚拟的空间,或者叫容器),每一个MySQL都要部署到独立的容器里面,这些MySQL之间有一个集群环境。 然后我们不能把所有的数据库的请求都定向给一个MySQL去处理,因为这样负载会很高,所以我们应该分散MySQL的处理数据的请求,那么我们该怎么做呢? 答案就是做一个负载均衡,后台程序发给数据库所有的请求都由负载均衡分散给其余的MySQL,这些MySQL就能去处理对应的请求了,这样每一个MySQL节点的负载相应的会低一点。 而后台项目要体现的就是高可用,任何一个节点挂掉后不影响整体的运行,所以后台项目也要搞集群

spring cloud ribbon 负载均衡类1

匿名 (未验证) 提交于 2019-12-03 00:42:01
Ribbon 在实现客户端负载均衡时,是通过Ribbo的ILoadBalancer接口实现的。 AbstractLoadBalancer 是ILoadBalancer接口的抽象实现,定义了一个分组枚举类ServerGroup 还实现了一个chooseServer()方法,其中key为null,表示在选择具体实例时忽略key的条件判断 还定义了两个抽象方法     getServerList(ServerGroup serverGroup):根据分组类型获取不同的实例列表     getLoadBalancerStats():定义了获取LoadBalancerStats对象的方法, LoadBalancerStats对象被用来存储负载均衡中各个服务实例当前的属性和统计信息。 BaseLoadBalancer 是Ribbon负载均衡的基础实现类,   定义并维护了两个存储服务实例Server对象的列表。一个用于存储所有服务实例的清单, 一个用于存储正常服务的实例清单   定义了各服务实例属性和统计信息的LoadBalancerStats对象   定义了检查服务实例是否正常服务的IPing对象,默认为null,构造时注入   定义了检查服务实例操作的执行策略对象IPingStrategy,在BaseLoadBalancer中 默认使用了SerialPingStrategy,遍历检查  

2018-07-06笔记(LNMP配置)

匿名 (未验证) 提交于 2019-12-03 00:40:02
12.17 Nginx负载均衡 要理解负载均衡,必须先搞清楚正向代理和反向代理 \ 注: 正向代理,代理的是用户。 反向代理,代理的是服务器。 一、什么是负载均衡 负载均衡是用反向代理的原理实现的,代理一台机器,叫做代理服务器,代理多台机器就叫做负载均衡。nginx通过proxy_pass_http 配置代理站点,upstream实现负载均衡 当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。 我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。 二、负载均衡的几种常用方式(算法) (1)、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除 (2)、weight (权重) 指定轮询权重,weight和访问比率成正比,用于后端服务器性能不均的情况 (3)、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题 (4)

Spring Cloud Ribbon

匿名 (未验证) 提交于 2019-12-03 00:40:02
D‘E‘LET  Spring Cloud Ribbon 是一个基于HTTP 和 TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过 SpringCloud的封装 ,可以让我们轻松的将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用。Spring CLoud Ribbon虽然只是一个工具类框架,它不像服务注册中国心,配置中心,API网关那样需要独立部署,但是它几乎存在每一个SpringCloud构建的微服务和基础设施中,因为为服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon来实现的,包括后续我们介绍的Feign。 客户端负载均衡   负载均衡在系统架构中是一个非常重要,并且是不得不去实施的内容。因为负载均衡对系统的高可用,网络压力的缓解和处理能力的扩容的重要手段之一。我们通常所说的负载均衡都是服务端负载均衡,其中分为硬件负载均衡和软件负载均衡。硬件负载均衡主要通过在服务器节点之间安装专门用于负载均衡的设备,比如F5等;而软件负载均衡则是通过在服务器上安装一些具有负载均衡功能或模块的软件来完成请求分发工作。只要是服务端负载均衡都能以类似的下图架构方式搭建起来:   硬件负载均衡的设备或是软件负载均衡的软件模块都会维护一个下挂可用的服务端清单,通过心跳检测来剔除故障的服务端节点以保障清单中都是可以正常访问的服务端节点