director

建造者模式(Builder)

萝らか妹 提交于 2020-04-08 04:26:54
建造者模式是对象创建型设计模式之一,他主要用于构造复杂对象,而这个复杂对象则可以由多组不同的产品族构成,其结构原理图如下: 其中关键部件有两个 1. Builder Builder定义了生产复杂对象的组件的抽象接口(BuildPart)和获取这个复杂对象的方法(GetResult),但他自己本身并不装配对象,简言之Builder是生成复杂对象部件的接口提供者 2. Director Director定义了装配复杂对象的接口,它使用Builder提供的生产复杂对象组件的方法来生成组件,并将其装配起来,最后调用GetResult返回该复杂对象 例子: Component Body组件族 public abstract class Body { public abstract void showBody(); } public class LongBody extends Body { @Override public void showBody() { System.out.println("I have a long body"); } } public class ShortBody extends Body { @Override public void showBody() { System.out.println("I hava a short body"); } }

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

企业级负载均衡集群LVS—四种模式的工作原理

↘锁芯ラ 提交于 2020-02-24 03:29:44
企业级负载均衡集群LVS—四种模式的工作原理 1. DR模式 2. TUN模式 3. NAT模式 4. full-nat模式 1. DR模式 Virtual Server via Direct Routing(VS-DR):用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此方法,控制管理的计算机接收到请求包时直接送到参与集群的节点。直接路由模式比较特别,很难说和什么方面相似,前种模式基本上都是工作在网络层上(三层),而直接路由模式则应该是工作在数据链路层上(二层)。 工作原理 : 如上图所示,Director和REAL SERVER都配置同一个IP(VIP),Director将该IP配置到对外的网卡上,Real server将该IP配置到lo网卡上。配置arp_ignore为1(目的是让数据包发出apr请求时,只有Director会响应该arp请求),所有REAL SERVER对本身这个IP的ARP请求保持静默。而Director收到数据包后根据调度算法,找出对应的 REAL SERVER,把目的MAC地址改为REAL SERVER的MAC并发给这台REAL SERVER。这时REAL SERVER通过网卡eth0收到这个数据包,由于Real Server上的lo网卡配置的也有VIP,所以RS接收该数据包。处理后直接返回给客户端

复杂对象的组装与创建——建造者模式(三

两盒软妹~` 提交于 2020-02-12 11:26:46
8.4 关于 Director 的进一步讨论 指挥者类 Director 在建造者模式中扮演非常重要的作用,简单的 Director 类用于指导具体建造者如何构建产品,它按一定次序调用 Builder 的 buildPartX() 方法,控制调用的先后次序,并向客户端返回一个完整的产品对象。下面我们讨论几种 Director 的高级应用方式: 1. 省略 Director 在有些情况下,为了简化系统结构,可以将 Director 和抽象建造者 Builder 进行合并,在 Builder 中提供逐步构建复杂产品对象的 construct() 方法。由于 Builder 类通常为抽象类,因此可以将 construct() 方法定义为静态 (static) 方法。如果将游戏角色设计中的指挥者类 ActorController 省略, ActorBuilder 类的代码修改如下: abstract class ActorBuilder { protected static Actor actor = new Actor(); public abstract void buildType(); public abstract void buildSex(); public abstract void buildFace(); public abstract void

建造者模式

两盒软妹~` 提交于 2020-02-10 09:02:11
/// <summary> /// 建造者模式:的基类。 /// 它要求建造过程必须是稳定的。这是与装饰模式的区别 /// </summary> abstract class Builder { public abstract void BuilderPartA(); public abstract void BuilderPartB(); public abstract Product GetResult(); } /// <summary> /// 具体的建造者 /// </summary> class ConcreteBuilder : Builder { private Product p = new Product(); public override void BuilderPartA() { p.Add("part A"); } public override void BuilderPartB() { p.Add("part B"); } public override Product GetResult() { return p; } } /// <summary> /// 具体建造者2,它亦有它自己固定的构造过程 /// </summary> class ConcreteBuilder2 : Builder { private Product product =

Java设计模式之建造者模式

耗尽温柔 提交于 2020-01-28 00:00:32
建造者设计模式: 使用多个简单的对象一步构建一个复杂的对象,这种类型的设计模式属于创建者模式。 介绍: 意图: 将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 主要解决: 有时候面临一个复杂对象的创建工作,其通常由各个部分的子对象使用一定的算法构成,由于需求的改变,这个复杂的对象的各个部分经常面临着剧烈的变化,但是将他们组合在一起的算法去相对稳定。 何时使用: 一些基本不会变,而其组合经常变化的时候。 关键代码: 建造者:创建和提供实例,导演:管理创建出来的实例的依赖关系。 应用实例: 1去肯德基,可乐,汉堡以及鸡翅是不会变化的,但是客户点餐的套餐组合是不一样的。 优点: 1建造者独立,容易扩展。2便于控制细节风险。 缺点: 1产品必须具有共同点,范围有限制。2如果内部变化复杂,会导致有很多建造类。 使用场景: 1需要生成的对象具有复杂的内部结构。2需要生成的对象内部属性本身相互依赖。 注意事项: 与工厂模式不同,建造者模式更加强调零件之间的装配的顺序。 模式角色: 建造者角色:定义生成实例所需要的所有方法。 具体的建造者角色:实现生成实例所需要的所有方法,并且定义获取最终实例的方法。 监工角色:定义使用建造者角色中的方法来生成实例的方法。 使用者:使用建造者模式。 uml图: Product类 import java.util.ArrayList;

LVS集群类型

依然范特西╮ 提交于 2020-01-27 18:49:38
一、LVS-NAT   简述:多目标的DNAT,通过Director修改请求报文中的目标地址和端口为LVS挑选出来的某RS的RIP和PORT实现转发   特点:     (1)RIP和DIP必须在同一网络,且应该使用私网地址,RIP的网关必须指向DIP     (2)支持端口映射     (3)请求报文和响应报文都经过Director转发,较高负载下,Director易成为系统性能瓶颈 二、LVS-DR   简介:Director为请求报文重新封装一个MAC首部进行转发,源MAC地址是DIP所在接口的MAC,目标MAC是挑选出来的的某RS的RIP接口所在的MAC,IP首部不会发生变化(CIP/VIP)   核心要点:     (1)每个RS主机上都应有VIP,并且RIP配置在物理接口上,VIP配置在内置接口lo的别名上(lo:0),来自Director的请求报文进来时,经由RIP再到lo:0再到用户空间的进程,回去时控制响应报文先经过lo:0(此时源IP已封装成VIP)再由RIP离开,保证客户端接收到的报文源IP是VIP,目标IP是CIP     (2)让RS主机禁止响应ARP广播级别和通告级别       响应级别设定目的:当客户端请求过来时,让Director上的VIP响应,而不是让RS上的VIP响应,保证请求报文一定走Director       通告级别设定目的

运维之道 | LVS原理详解

 ̄綄美尐妖づ 提交于 2020-01-27 01:15:24
LVS原理详解及部署 一、LVS简介 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。这里主要是学习 LVS 并对其进行了详细的总结记录。 二、LVS基本原理 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间。 PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链。 IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链。 POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器。 三、LVS组成 LVS 由2部分程序组成,包括 ipvs 和 ipvsadm IPVS(ip virtual server) :一段代码工作在内核空间,叫IPVS,是真正生效实现调度的代码。IPVS的总体结构主要由 IP包处理、负载均衡算法、系统配置与管理 三个模块及 虚拟服务器与真实服务器链表 组成。 ipvsadm

建造者模式(Builder)

喜夏-厌秋 提交于 2020-01-25 09:41:51
建造者模式:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。 Builder Director Builder是什么?是为Product创建一个对象的各个部件指定的抽象接口, ContreteBuilder:是具体建造者,实现Builder接口,构造和装配各个部件。Product就是具体的对象。 Director是指挥者,构建一个使用builder接口的对象。用于构建一些复杂的对象,这些对象内部构建间的构造顺序通常是稳定的,但对象的构造通常面临着复杂的变化。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DesignPatterns.BuilderPattern.Structural { public class Product { private List<string> _parts = new List<string>(); public void Add(string part) { _parts.Add(part); } public void Show() { Console.WriteLine("Product Parts"); foreach (string part in _parts) {

使用LVS实现负载均衡原理及安装配置详解

瘦欲@ 提交于 2020-01-21 08:48:23
使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。这里主要是学习 LVS 并对其进行了详细的总结记录。 一、负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器(real server)上。为了避免不同机器上用户请求得到的数据不一样,需要用到了共享存储,这样保证所有用户请求的数据是一样的。 LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirtualserver.org 现在 LVS 已经是 Linux 内核标准的一部分。使用 LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为调度层、Server集群层和共享存储。 二