发表于: 2017-11-22 22:34:03
2 551
今日完成:
1)先只测试对jsp访问(不包含对数据的访问)
两台web服务器,10000次测试
一台web服务器,10000次测试
可以发现,在一台服务器的情况下,进行10000次测试,效率明显高于两台服务器。
一台服务器,20000次测试
两台服务器,20000次测试
这时候,两台服务器在出错率上又低于一台服务器
其实从上面的测试就可以得出一个结论,使用负载均衡不一定是有利的。因为进行负载均衡也是需要消耗资源的。当访问在10000次以下的时候,可以看到访问量不是瓶颈,这时候盲目的添加多台服务器只会造成访问速度以及出错率增大。然而当访问量成为服务器的瓶颈的时候,这时候进行负载均衡才是有必要的。
2)redis与memcached访问比较
redis: 10000次访问
memcached:10000次访问
memcached:20000次访问
redis:20000次访问
通过对比可以发现,对于访问redis与memcached,小访问量的情况下,redis效率更高,而大访问量的情况下,memcached更有效。另外,大访问量的情况下,一个节点的redis直接压崩了。。。
3)关于redis的认识:
redis是一个key value数据库,数据存储在内存中,但也支持持久化保存在硬盘中。redis支持更丰富的数据类型等等。但主要说的不是这个,重点在下面
首先:redis是一个单线程处理数据的。何为单线程,当多个程序同时访问一个数据源的时候,单线程要求这些数据排队访问。所以,刚开始的时候我以为单线程会影响redis的性能。但是不是这样的。首先必须认识到,redis单线程情况下可以实现10w+的访问,所以对于多个访问到来,这根本不会影响redis的性能(如果每秒达到10W+的访问,,,那这网站得多吊),然后,就应该想一下,redis是如何达到这么高的性能的。
原因: 1)绝大部分请求是纯内存操作
2)采用单线程,避免了不必要的上下文的切换以及资源的竞争
3)采用非阻塞I/O,内部使用epoll模型。关于epoll模型我的理解:当有多个连接请求进程的资源时候,如果没有准备好。这个进程就去做其他的事情,这叫非阻塞,而当有IO资源准备好后,就通知进程并制定位置,这样进程就直接到指定位置接收资源并处理,这就是epoll模型。
正因为这些原因,redis尽最大程度提高了性能。
redis集群搭建的原理:不同于memcached,redis集群是在服务器端实现的。 redis集群每个节点都是互相连接的,客户端可以访问集群中的任意一个节点,当客户端向redis集群中放置一个数据的时候,先通过算法求出这个节点对应的槽,每个集群中的节点都对应一个槽,这样找到槽后直接放入。访问也类似。redis集群中每隔一段时间就询问其他节点当前节点是可用,如果有半数以上节点对于一个节点访问失败,表示这个节点不可用。这时候就换用这个节点的备用节点。(,,,理论知识既是思想,也是满满的干货呀~~~)
明日计划:
交上任务~~~~
评论