大数据之小刀阔斧

自学了一个多月的大数据今天特别的在这里进行一波复习操作,也希望给未来自己的架构师之路分享一点自己积累的经验,废话不多说开始我的大数据讲述。

1.nginx把玩

第一次看到这玩意儿吓一跳?卧槽这是啥,百度一下 ,牛逼了 负载均衡。赶紧查资料进行一波扫盲操作。
Nginx是一款轻量级的Web服务器(什么是服务器what?这都不知道,你可以理解成一个存放资源的电脑,你去找到访问人家,人家给你回复信息)。特点,得夸呗:bulabulabula..性能利用率高。给张图感受一下:

都在用都在用。安装怎么安装,各位自己百度。本文就是给大家画个饼。那么在大数据中,nginx的作用是什么呢?充当一个什么角色呢?来来来,听我详细道来(没图说个JB)。

从图中可以看出来Nginx可以充当一个前端服务器,将来自五湖四海的请求进行转发至各个不同的tomcat服务器中,进行请求。是不是有点像路由器?这样通过Nginx就可以实现请求的负载均衡,不会造成大量访问到同一台tomcat机器上导致,网卡被打满(boom)大家都没水喝。具体的轮询算法各位自己百度哈,我是菜鸡就懂皮毛~
上面这个架构好吗?(挺好的呀,完美)
但是如果哪天,天有不测风云,装有Nginx的机房boom了,Nginx挂了怎么办,所有的tomcat都不能访问了,天呐撸,夭寿了。今天业务Zero,明天全部炒鱿鱼。为了我们有限的工资,我们必须解决这个问题。
引入下图:

没错是不是很简单,我们又添加了一个前端服务器Nginx,然后在这两个Nginx服务器中都安装了Keepalived,进行监测。什么样子的监测呢?就是当我的前端服务器卒了,keepalived发现了前端服务器没了,马上将另外一个从机启动,充当我们的新的老大哥。顺便keepalived再给我们运维同学报个警呗,哎呀,那个谁谁卒了,你们快来看一下。。。

嗯嗯,现在这个架构是不是很完美呢?还是有点问题(事情真多,没办法这个是饭碗),用户每次登录的tomcat主机可能不一样,那么如何保证我们访问数据的一致性呢?说人话:你每次通过nginx分配的tomcat不同,那么你怎么保证你的资源在每个tomcat上是一致的呢?

不得不说,真是一个问题,这里我给出两个解决方案(原谅我才疏学浅)
1.我们通过算法(数学公式啦什么什么的)保证每一次用户都登录到同一个tomcat上面,这样就解决了,天才!
但是,这样就有点违背我们负载均衡(保证每台tomcat上面分配的资源都差不多,不要一枝独秀)的感觉。那怎么办?(WTF)
2.那么我们只好再花点钱,再买一个用来服务同步的集群(有钱任性!)看高清无码图:

我们再搭建一个关于session共享的集群,后面那个memcached是个集群,怎么使用呢?嘿嘿嘿。。。
每个tomcat接收到请求信息,并返回时,都把现在在本tomcat的session信息发送至memcached集群中,然后由memcached
服务器进行转发至集群中其他的tomcat服务器。来保证session同步!不知道session的同学把它看成一个存储信息就好。
YO,那么现在上面的架构是否足够完美呢? 没错我又来挑刺了,请求可以负载均衡了,但是响应呢?所有的响应全部返回回去
到前端控制器的访问量剧增Boom前端服务器"炸了",这个月工资又没咯。
为了解决响应问题,我们希望返回的请求不经过Nginx前端服务器,而是直接通过tomcat主机直接返回给请求客户端。
棒棒哒!但是又有一个问题,Nginx服务器的ip地址和tomcat的ip地址是不同的,人家客户端TCP请求的是前端服务器,
你的tomcat的Ip地址又跟人家请求的不一样,凑什么热闹。看看下面图:

LVS的引入

LVS介绍?你以为我会介绍吗?当然不会,看官大人只要记得它在我这套体系的作用,就是用来骗人的!没错骗人,准确点说是骗客户端的。举个例子来说:
A要打电话给B,B刚拔完牙,不想说话,就让同事C来接电话,同事C跟A开始了激烈的口舌交流,交流完成之后,A舒服的挂了电话。整个事件中A一直以为跟B在打电话。美滋滋。LVS原理同样如此。来来来“小二!上高清无码图”:



上面这个图好不好看,个人觉得画的挺好的,哈哈,OK,请求(就是我们的例子A)这回它先访问了LVS这个服务器(LVS充当了打电话时候的B角色)B角色上有一个实际存在的ip地址,还有一个虚拟出来的假的IP地址,请求一开始访问到的是B时,B使用虚拟的IP进行通信(TCP),随后B将请求转发到了下游的Nginx服务器C(此时C已经绑定好了与B相同的虚拟IP),Nginx开始通过自己的能力干活(叫tomcat小弟执行请求,返回结果)。然后Nginx根据自身绑定的虚拟IP,跟A进行交流,漂亮的完成这一次的通信。
上面还会有一个问题,就是同一个网段中不能有相同的IP地址,要不然大家都得完蛋,为了实现上面漂亮的架构,我们需要将下游中拿到的VIP虚拟IP,进行隐藏,保证网段中只存在一个VIP。列出来隐藏VIP的linux指令吧:

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

这里有同学提醒了我一下,这里还是通过nginx返回请求,而不是通过tomcat,这个架构的好处在于,可以给lvs添加更多的nginx进行负载均衡同样减轻了nginx的负担@老白

这里有很多技术细节本文不是深文,别让我讲,我不会,各位自行百度!就这么傲娇(O(∩_∩)O)。

其实写本文的目的主要为了让大家更快的对大数据技术有一个直观的认识,至于深入的理解,一篇文章还是远远不够的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值