首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

《redis in action》前言翻译

翻译:为了切合实践的原因,大概三年前redis被创造出来。背景是我通过数据库去尝试做一些重要的事情往往需要读写重载,因此我想着能不能有一个小的虚拟的实例来做这个事情。我的问题在概念上很简单,我们的服务要接受很多的网页请求,这个请求通过一个js来跟踪。我需要去存储最近的n多个视图为每个服务器。并且要将实时的展示给连接在服务上的用户,通过接口的方式,并且要保持一部分历史数据。单一个每秒一千次的峰值的数据加载出现的时候不管我们的数据库服务器是什么,也不管我采用那种负载方式,没有任何方式让我们可怜的的数据库服务经受如此大的压力。而且对于硬件升级来说我无能为力,通过升级硬件去提升性能是不对的方式。最终我的主义就是在内存中创建一个数据库并存储原始类型的数据,并且能处理原始数据类型。能够定时的在队列的两端上pop和push操作,长话短说,根据这个想法我用C语言写了第一版原型,并fock原型添加持久化的特性。redis就这样诞生了。到现在为止三年了,这个项目已经不断发展并有了一些成果,我们现在有了一个强壮的系统,redis2.6刚刚发布,该版本支持集群和高可用特性。redis进入了一个成熟期。在redis生态系统中最显著的进步在我看来是redis社区的用户和贡献者,通过redis.io网站的google小组,github的推广和问题系统,现在已经有上千的人参与到这个项目,他们写redis客户端类库,贡献修复,还帮助其他使用者。

02

在开源数据库上我们要关注SQL解析问题吗

传统的Oracle DBA都会把SQL解析问题看的很严重,这实际上是来自于早年的DBA对共享池问题的恐惧。实际上,我刚刚开始接触数据库的时候,SQL解析根本不是一个什么技术问题,因为那时候的服务器的性能有限,顶多两颗CPU,几十M的物理内存,虽然连接了几十台上百台终端,实际上大多数时候都在处理前端显示等缓慢的外设操作。真正访问数据库的并发量并不大,因此那时候的数据库问题主要还是DB CACHE的命中率问题,只要保证DB CACHE命中率高于80%,大多数SQL都能跑的还可以。不过那时候的SQL也都比较简单,码农的素质也比较高,自己能用算法搞定的事情一般不会交给数据库去做。

02

负载均衡,会话保持,session同步

一,什么负载均衡 一个新网站是不要做负载均衡的,因为访问量不大,流量也不大,所以没有必要搞这些东西。但是随着网站访问量和流量的快速增长,单台服务器受自身硬件条件的限制,很难承受这么大的访问量。在这种情况下,有二种方案可以选择: 1,对单台服务器的硬件进行更新,由双核的变成四核的,内存加大等。 2,增加服务器的台数,来分担服务器的负担。以实现增加网络带宽,增加服务器的处理能力的目的。 第一种方法可以理解为纵向发展,这种方法总是有限。第二种方法才是解决问题的正确选择 实现负载均衡的方法,大至分为二个方向,一种是用软件来实现负载均衡,另一种是硬件实现负载均衡(包括结合硬件和软件) 用软件来实现负载均衡,实现负载均衡的过程,自身也要消耗一些系统资源,响应时间增加。例如:LVS,nginx,haproxy,apache等这些基于应用层 的负载均衡软件,适合那些访问量不是特别大的网站。如果像sina,163这样大访量的网站,用硬件来实现负载均衡是最明志的选择。 负载均衡的算法很多,有根据请求数来进行负载均衡的,有根IP来负载均衡的,有根据流量的等等。我经常会用的二种算法。 一个是根据请求数 a,可以实现各台服务器都能比较平均分担客户的请求,其中一台服务器down掉的话也不会造成不好的影响。 b,服务器间的状态要同步,如session,需要其他手段来同步这些状态。 一个是根据IP a,ip_hash算法可以把一个ip映射到一台服务器上,这样可以解决session同步的问题 b,ip_hash也有不好的地方就是,假如其中的一台服务器down掉的话,映射到这台的服务器的用户就郁闷了。 c,ip_hash容易导致负载不均衡的情况,现在河蟹政府对google的搜索关键词进行过滤,你会经常发现google打不开,但是过一会就好了。这让那些google的爱好者们郁闷不已,很多用户都到国外找代理去了,狗急跳墙,人急帆樯。如果这样的话,这些代理会被分到同一个服务器,会导致负载不均衡 ,甚至失效。 二,什么是会话保持,有什么作用 会话保持是指在负载均衡器上有一种机制,在作负载均衡的同时,还保证同一用户相关连的访问请求会被分配到同一台服务器上。 会话保持有什么作用呢,举例说明一下 如果有一个用户访问请求被分配到服务器A,并且在服务器A登录了,并且在很短的时间,这个用户又发出了一个请求,如果没有会话保持功能的话,这个用户的请求很有可能会被分配到服务器B去,这个时候在服务器B上是没有登录的,所以你要重新登录,但是用户并不知道自己的请求被分配到了哪里,用户的感觉就是登录了,怎么又要登录,用户体验很不好。 还有你在淘宝上面买东西,从登录=》拍得东西=》添加地址=》付款,这是一个一系列的过程,也可以理解成一次操作过程,所有这一系列的操作过程都应当由一台服务器完成,而不能被负载均衡器分配到不同的服务器上。 会话保持都会有时间的限制(映射到固定某一台的服务器除外,如:ip_hash),各种负载均衡工具都会提供这种会话保持时间的设置,LVS,apache等。连php语言都提供了会话保持时间的设定session.gc_maxlifetime 会话保持时间的设定要大于session生存时间的设定,这样可以减少需要同步session的情况,但是不能杜绝。所以同步session还是要做的。 三,session同步 为什么要进行session同步,说会话保持的时候已经提到了。具体方法请参考web集群时session同步的3种方法 web集群时session同步的3种方法 在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,一个登录用户,一会是登录状态,一会又不是登录状态。所以本文就根据这种情况给出三种不同的方法来解决这个问题: 一,利用数据库同步session 在做多服务器session同步时我没有用这种方法,如果非要用这种方法的话,我想过二种方法: 1,用一个低端电脑建个数据库专门存放web服务器的session,或者,把这个专门的数据库建在文件服务器上,用户访问web服务器时,会去这个专门的数据库check一下session的情况,以达到session同步的目的。 2,这种方法是把存放session的表和其他数据库表放在一起,如果mysql也做了集群了话,每个mysql节点都要有这张表,并且这张session表的数据表要实时同步。 说明:用数据库来同步session,会加大数据库的负担,数据库本来就是容易产生瓶

01

【硬件】生信专用高性能计算机配置指南(续):关于配置、CPU和机箱

虽然HPAC相比每平米房价不算个啥,但时代的一颗灰落到个人身上都是一座山,因此不少小伙伴还是限于经济望而却步。但横向来看,毕竟一台好的游戏主机也要好几万;纵向来看,如果看远一点,购买HPAC和发文章的数量肯定是正相关的,或许可以和老板商量,从实验室或小组的经费里拨点赞助,或者下班后可以加班去开滴滴送快递呀,或者街头唱歌的时候脚下放顶帽子,反正办法肯定是有的啦。如果你继续往下看,那么我就假设你已经有办法解决了经济问题,接下来我们将讨论在1.5-2.5w的范围内配置一台HPAC如何选择性价比最高,以及需要考虑哪些问题。

02

百万级访问量网站的技术准备工作

当今从纯网站技术上来说,因为开源模式的发展,现在建一个小网站已经很简单也很便宜,所以很多人都把创业方向定位在互联网应用。这些人里大多数不是 很懂技术,或者不是那么精通,而网站开发维护方面的知识又很分散,学习成本太高,所以这篇文章将这些知识点结合起来,系统的来说,一个从日几千访问的小小 网站,到日访问一两百万的小网站,中间可能会产生什么问题,以及怎么才能在一开始做足工作尽量避免这些问题。 你的网站因为努力经营,访问量逐渐升高,在升高的过程中,问题也可能开始显现了。因为带宽的增加、硬件的扩展、人员的扩张所带来的

06
领券