向着架构技术进军---实践redis(一),---redis


一个网站如何面对高容量大并发的压力,是架构师们要研究的事情。虽然目前我工作的站还没有达到这个水平,但是一些未雨绸缪的工作应该要开始了,给我们定的计划是在半年到一年时间,完成高容量大并发系统的架构设计。说干就干,先从redis开始吧。

首先得准备一份高记录数据样本,奈何手上没有现成的,只好从短信系统取,短信系统用的是MSSQL,先得导入到MYSQL中,我用了一个工具是mss2sql,下载地址是:http://www.intelligent-converters.com/demos/mss2sqld.exe,然后将一个100万记录的表导入MYSQL居然花了4个小时。

接下来安装redis,先在windows环境下装了个2.4版,准备将该表从MYSQL中导入redis,发现网上有篇文章介绍导出方法:http://www.oschina.net/translate/mysql-to-redis-in-one-step 《一步完成 MySQL 向 Redis 迁移》,发现在windows下始终提示

G:\redis-2.4.5-win32-win64\64bit>redis-cli --pipe
(error) ERR unknown command '--pipe'

一开始以为是windows原因,随即准备了台centos的虚机,捣鼓一些nginx+php+mysq的环境不在话下,最后安装了redis发现还是提示上述错误,最终想起来我在windows和linux下用的都是redis2.4版,现在都用2.6和2.8版本了,那就升级吧。发现yum库中最高版也只有2.4,那只有手动安装了:http://www.redis.io/download

$ wget http://download.redis.io/releases/redis-2.8.14.tar.gz
$ tar xzf redis-2.8.14.tar.gz
$ cd redis-2.8.14
$ make

提示GCC忘记装了,继续捣鼓,参考:http://xueliang1yi.blog.163.com/blog/static/1145570162012102114635764/

1、报错一 没用gcc

安装过程
yum install cpp
yum install binutils
yum install glibc
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc
yum install make

注意gcc依赖了很多东西,有些包可能系统已经 装了,有些没有,防止出意外,最好都走一遍

2、报错二,没有tcl8.5, 安装tcl8.5,过程如下
下载地址:http://downloads.sourceforge.net/tcl/tcl8.5.10-src.tar.gz
安装过程
tar -zxvf tcl8.5.tar.gz
./configure
make
make install

3、安装redis
make
make test //检查一下,看看有没有问题
make install

如果make继续报错,信息如下:error: jemalloc/jemalloc.h: No such file or directory
执行 make MALLOC=libc 就行
注意的是,为了防止出意外,make失败后在make的话,清理一下,执行make clean

 

这样redis2.8就装好了,也可以运行 mysql -u root -pxxx 库名称 --skip-column-names --raw < events_to_redis.sql | redis-cli --pipe

 

 

 

其他一些参考资料:

Redis应用场景:http://blog.csdn.net/hguisu/article/details/8836819

phpredis中文手册——《redis中文手册》 php版:http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html

浅谈Redis数据库的键值设计:http://blog.nosqlfan.com/html/3033.html

nosql应用场景——用redis打造山寨twitter:http://blog.csdn.net/exsuns/article/details/6358414     http://www.cnblogs.com/jackluo/archive/2013/06/27/3158974.html


一个优秀的系统架构师要具体什可以力?

系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单,等等
系统架构师的职责:

一、理解系统的业务需求,制定系统的整体框架(包括:技术框架和业务框架)

二、对系统框架相关技术和业务进行培训,指导开发人员开发。并解决系统开发、运行中出现的各种问题。 系统架构师的目的:

对系统的重用、扩展、安全、性能、伸缩性、简洁等做系统级的把握。 系统架构师能力要求:

一、系统架构相关的知识和经验。

二、很强的自学能力、分析能力、解决问题的能力。

三、写作、沟通表达、培训。

角色

软件架构师Software Architect 定义

主导系统全局分析设计和实施、负责软件构架和关键技术决策的角色 职责

l、领导与协调整个项目中的技术活动(分析、设计和实施等) 2、推动主要的技术决策,并最终表达为软件构架 3、确定和文档化系统的相对构架而言意义重大的方面,包括系统的需求、设计、实施和部署等“视图” 4、确定设计元素的分组以及这些主要分组之间的接口 5、为技术决策提供规则,平衡各类涉众的不同关注点,化解技术风险,并保证相关决定被有效的传达和贯彻 6、理解、评价并接收系统需求 7、评价和确认软件架构的实现 专业技能

l、技术全面、成熟练达、洞察力强、经验丰富,具备在缺乏完整信息、众多问题交织一团、模糊和矛盾的情况下,迅速抓住问题要害,并做出合理的关键决定的能力 l、具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考; l、对项目开发涉及的所有问题领域都有经验,包括彻底地理解项目需求,开展分析设计之类软件工程活动等 2、具备领导素质,以在各小组之间推进技术工作,并在项目压力下做出牢靠的关键决策 3、拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目成员的信任; 4、以目标导向和主动的方式来不带任何感情色彩地关注项目结果,构架师应当是项目背后的技术推动力,而非构想者或梦想家(追求完美) 5、精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如J2EE架构等); 6、具备系统设计员的所有技能,但涉及面更广、抽象级别更高; 活动

确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素 工件

软件构架文档、参考构架、分析模型、设计模型、实施模型、部署模型、构架概念验证原型、接口、事件、信号与协议 系统架构师
 

微博的系统架构,想用mysql+redis配合使用,想问一下具体要怎操作

写入数据到Redis, 然后在写个运行cron的脚本,美妙读内存,并写入数据库

也有其他方法
 

相关内容

    暂无相关文章