负载均衡+serializable接口

 

负载均衡

1. DNS做负载,通过给客户端解析不同的IP地址,让客户端的流量直接到达各个服务器。但是这种方法有一个很大的缺点就是延时性问题,在做出调度策略改变以后,由于DNS各级节点的缓存并不会及时的在客户端生效,而且DNS负载的调度策略比较简单,无法满足业务需求,因此就出现了负载均衡。

客户端的流量首先会到达负载均衡服务器,由负载均衡服务器通过一定的调度算法将流量分发到不同的应用服务器上面,同时负载均衡服务器也会对应用服务器做周期性的健康检查,当发现故障节点时便动态的将节点从应用服务器集群中剔除,以此来保证应用的高可用。

2.负载均衡 负载均衡又分为四层负载均衡和七层负载均衡。

    四层负载均衡工作在OSI模型的传输层,主要工作是转发,它在接收到客户端的流量以后通过修改数据包的地址信息将流量转发到应用服务器。
也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

 七层负载均衡工作在OSI模型的应用层,因为它需要解析应用层流量,所以七层负载均衡在接到客户端的流量以后,还需要一个完整的TCP/IP协议栈。七层负载均衡会与客户端建立一条完整的连接并将应用层的请求流量解析出来,再按照调度算法选择一个应用服务器,并与应用服务器建立另外一条连接将请求发送过去,因此七层负载均衡的主要工作就是代理。

也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

3. 负载均衡算法

1. 随机算法 2. 轮询及加权轮询3. 最小连接及加权最小连接4. 哈希算法5. IP地址散列6.URL散列

4. 负载均衡实现

1 - DNS域名解析负载均衡(延迟) 利用DNS处理域名解析请求的同时进行负载均衡是另一种常用的方案

DNS域名解析负载均衡的优点是将负载均衡工作交给DNS,省略掉了网络管理的麻烦,缺点就是DNS可能缓存A记录,不受网站控制。事实上,大型网站总是部分使用DNS域名解析,作为第一级负载均衡手段,然后再在内部做第二级负载均衡。

2 - 数据链路层负载均衡(LVS) 数据链路层负载均衡是指在通信协议的数据链路层修改mac地址进行负载均衡。

称作三角传输模式,负载均衡数据分发过程中不修改IP地址,只修改目的的mac地址,通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器IP地址一样,从而达到负载均衡,这种负载均衡方式又称为直接路由方式(DR)

3 - IP负载均衡(SNAT) 在网络层通过修改请求目标地址进行负载均衡。

5 - 反向代理负载均衡(nginx)

传统代理服务器位于浏览器一端,代理浏览器将HTTP请求发送到互联网上。而反向代理服务器则位于网站机房一侧,代理网站web服务器接收http请求。

 反向代理的作用是保护网站安全,所有互联网的请求都必须经过代理服务器,相当于在web服务器和可能的网络攻击之间建立了一个屏障。

 除此之外,代理服务器也可以配置缓存加速web请求。当用户第一次访问静态内容的时候,静态内存就被缓存在反向代理服务器上,这样当其他用户访问该静态内容时,就可以直接从反向代理服务器返回,加速web请求响应速度,减轻web服务器负载压力。

 另外,反向代理服务器也可以实现负载均衡的功能。

早期用DNS负载,通过给客户端解析不同的IP地址,让客户端直接达到不同服务器。(延时性)

now 负载均衡:客户端流量到达负载均衡服务器,通过调度算法将流量分发到不同的应用服务器上。(动态移除故障节点,保证应用的高可用)

负载均衡分为四层负载和七层负载

    四层负载:OSI模型的传输层,转发(接收信息后修改数据包的地址信息转发)。通过报文中的目标地址和端口,加上负载均衡设置的服务器选择方式,决定最终的内部服务器。

    七层负载:OSI的应用层,代理。(内容交换)解析流量,建立完整的TCP/ip协议栈连接。通过报文中真正有意义的应用层内容,再加上负载均衡服务器选择方式,决定内部服务器。(可以对客户端的请求和服务器的响应进行任意意义上的修改,提升了应用系统在网络层的灵活性。(图片类请求和文字类请求分发)),安全性,

算法:随机算法,轮询及加权轮询,最小连接,哈希算法,ip地址算了,URL散列

 

实现方式:

    1.DNS域名解析负载均衡:有延迟

    2.数据链路层负载均衡:只修改目的地的mac地址

    3.IP负载均衡:在网络层通过修改请求目的地址(网卡带宽成为瓶颈)

    4.反向代理负载均衡(nginx):代替web服务器接受http请求,保护网站安全。配置缓存加速web请求。转发请求在http协议层面,页脚应用层负载均衡。

 

负载均衡之CDN

CDN就是存储一些静态文件的一台或多台服务器,通过赋值,缓存方式,将文件保存其中

分布式和集群

    分布式是指仔多台不同的服务器中部署不同的服务模块,通过远程调用协同工作对外提供服务。(分布式部署:将一件大的事情拆分成多个小事情,分别交给不同的人来做。每个子系统负责自己的事情,然后通过网络进行通信和协调,)

    集群是指在多台不同的服务器中部署相同应用活服务模块,构成一个集群,通过负载均衡设备对外提供服务

 

 

 

Serializable接口?

将对象的状态信息转换为可以存储或传输的形式的过程,在序列化期间,对象将其当前状态写入到临时存储区或持久性存储区,之后,便可以通过从存储区中读取或反序列化对象的状态信息,来重新创建该对象

 

什么情况下需要序列化?

当我们需要把对象的状态信息通过网络进行传输,或者需要将对象的状态信息持久化,以便将来使用时都需要把对象进行序列化(反序列化时构造函数不会执行)

默认: private static final long serialVersionUID = 1L;

 

一般是对于NoSql数据库,而在使用Nosql数据库进行存储时

序列化的目的有两个,第一个是便于存储,第二个是便于传输。

第一:存储媒体里面,是否是有其相对应的数据结构?第二:这个实体类,是否需要远程传输

 

,当我们让实体类实现Serializable接口时,其实是在告诉JVM此类可被序列化,可被默认的序列化机制序列化。

当我们在实体类声明实现Serializable接口时,再次进行观察,会发现这些类是需要被远程调用的。也就是说需要或者可能需要被远程调用,这就是序列化便于传输的用途。

 

基本类型可以先加宽,再转变成宽类型的包装类型

接口是一种契约,是一种框架性协议,这表明他的实现类都是同一种类型,或者是具备相似特征的一个几何体。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值