Postfix邮件系统的配置主要通过main.cf文件,路径在/etc/postfix下。如果要允许其他服务器使用Postfix的服务,需要重点关注inet_interfaces和mynetworks这两个参数。
# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on. By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
#
# See also the proxy_interfaces parameter, for network addresses [...]
引言
本篇要评测的NoSQL产品是Redis,可以把它的功能理解为一个Key-Value的数据结构操作,数据都保存在内存中定期刷新到磁盘,以极高的读写效率而备受关注。国内的新浪微博就大规模的使用了Redis来存储用户关系和计数。
介绍
按照官方的说法,Redis是用ANSI C开发的,能运行在大多数POSIX(Linux, *BSD, OS X 和Solaris等)系统上,官方没有支持Windows的版本。目前最新的版本是2.2.11,这个版本主要是修复了一个2.2.7版本中遍历方式优化带来的一个bug。
和普通的Key-Value结构不同,Redis的Key支持灵活的数据结构,除了strings,还有hashes、lists、 sets 和sorted sets等结构。正是这些灵活的数据结构,丰富了Redis的应用场景,能满足更多业务上的灵活存储需求。
Redis的数据都保存在内存中,而且底层实现上是自己写了epoll event loop部分,而没有采用开源的libevent等通用框架,所以读写效率很高。为了实现数据的持久化,Redis支持定期刷新(可通过配置实现)或写日志的方式来保存数据到磁盘。
安装和使用
由于没有第三方的包依赖关系,Redis的安装十分简单:
$ wget http://redis.googlecode.com/files/redis-2.2.11.tar.gz
$ tar xzf redis-2.2.11.tar.gz
$ cd redis-2.2.11
$ make
这样就安装完毕了,执行src目录下的redis-server可以启动Redis进程,不过最好先配置一下redis.conf文件,常用的几个要注意的参数如下:
daemonize yes
指定Redis以守护进程的方式运行。
pidfile /home/banping/redis/redis.pid
当Redis以守护进程方式运行时,把pid写入指定的文件。
port 6379
指定监听端口,默认端口为6379。
bind 192.168.0.35
绑定的主机IP地址。
logfile stdout
指定日志的记录方式,默认为标准输出。
databases 16
设置数据库的数量。
save <seconds> <changes>
Redis默认配置文件中提供了三个条件:
save 900 [...]
引言
本篇要评测的NoSQL产品是MongoDB,它是现在开源社区里越来越受到关注的一个NoSQL产品,按照官方的说法,是一个可扩展的、高性能的、开源的、面向文档的数据库。Craigslist、foursquare、国内的淘宝网等知名互联网公司都有在他们的生产环境部署了MongoDB。
介绍
MongoDB是用C++开发的面向文档的数据库,因为是面向文档的,也就是反传统的数据库范式来设计的,把相关的对象都记录到一个文档里,每个文档内是schema-free的,通俗的理解,也就是列名可以自由定义,比较灵活,特别是面对业务逻辑多变的应用场景十分给力。数据以BSON(二进制JSON)的格式存储。因为每个文档是一份完整的记录,所以MongoDB和传统的关系型数据库相比,可能带来一定的数据冗余和存储开销。
很明显,MongoDB这种面向文档的数据库和传统的关系型数据库的设计思路是差别很大的,因为每个文档都包含了所有信息,和其他文档是没有关联的,这样传统的Join操作就完全没必要了,也正是因为去除了这种“关系”,使得MongoDB的水平拆分更加容易,这也是面对海量数据的一个很好的处理思路。另外,MongoDB的索引机制和MySQL等数据库是一样的,可以利用传统的关系型数据库的经验来使用MongoDB的索引。
不像其他很多NoSQL产品由个别工程师根据应用场景开发出来,MongoDB是有一个专门的公司10gen来维护。有一点要注意的是,MongoDB自己是不管理内存的,无法指定内存大小,完全交给操作系统来管理,因此有时候是不可控的,在生产环境使用必须在OS层面监控内存使用情况。
安装和使用
mongodb目前最新的版本是1.8.2-rc3,其源码安装用了很多第三方的东西,比如JS引擎(目前官方推荐的是mozilla的Spider Monkey,以后可能改成google的V8)、正则表达式引擎(pcre)、安装构建工具scons(用python来安装)、boost C++库等等。下面是安装过程:
1,下载需要的源文件和相关软件包:
[root@localhost mongodb]# wget http://downloads.mongodb.org/src/mongodb-src-r1.8.2-rc3.tar.gz
[root@localhost mongodb]# wget http://sourceforge.net/projects/scons/files/scons/2.1.0.alpha.20101125/scons-2.1.0.alpha.20101125.tar.gz/download
[root@localhost mongodb]# wget http://ftp.mozilla.org/pub/mozilla.org/js/js-1.7.0.tar.gz
[root@localhost mongodb]# wget http://sourceforge.net/projects/pcre/files/pcre/7.4/pcre-7.4.tar.gz/download
2,安装scons:
[root@localhost mongodb]# tar zxvf scons-2.1.0.alpha.20101125.tar.gz
[root@localhost mongodb]# cd scons-2.1.0.alpha.20101125
[root@localhost scons-2.1.0.alpha.20101125]# python setup.py install
3,安装pcre:
[...]
Mongodb为了提高处理大数据量的性能,提供了分片集群的功能,sharding可以理解为传统数据库表分区的扩展,其实现架构图如下:
可见,这个架构由三部分进程组成:两组mongod进程(shard和config server)了一组mongos进程。
shard可以理解为每一个数据分片,也就是一个大数据量中的一部分分片数据。为了提高高可用性,一般在生产系统中每个shard分片都是一个replica set,也就是提供了主从复制的功能,同时一般有第三个节点作为仲裁。
config server顾名思义是配置服务,主要保存各个shard的元数据信息,为了实现高可用,config server一般也要配置多个,每个config server的数据完全一致,mongodb是通过两阶段提交来保证最终一致性的,并不是常用的日志同步或共享存储的方式。有点让人费解的是,在启用config server进程的时候并不需要指定其要管理的shard进程,而是通过下面要说的mongos进程将二者联系起来。
客户端和mongos进程进行交互,mongos提供了routing功能,它使得客户端以为是和一个单一简单的系统在打交道。在启动mongos的时候要指定config server,然后就可以把shard添加进来。
以下演示了建立一个三个shard的集群,同时每个shard由主、从、仲裁三部分组成一个replica set。
建立mongodb用户和组,安装mongdb程序,如果用源代码安装,可以参考我的另一篇文章:
[root@localhost software]# groupadd -g 20001 mongodb [root@localhost software]# useradd -u 20001 -g mongodb mongodb [root@localhost software]# passwd mongodb [root@localhost software]# su - mongodb [mongodb@localhost ~]$ tar xf mongodb-linux-x86_64-1.8.2.tgz [mongodb@localhost ~]$ tree mongodb-linux-x86_64-1.8.2 mongodb-linux-x86_64-1.8.2 |-- GNU-AGPL-3.0 |-- [...]
引言
本篇要评测的NoSQL产品是Tokyo Cabinet和Tokyo Tyrant,Tokyo Cabinet是一个性能优秀的数据存储引擎,而Tokyo Tyrant则提供了访问Tokyo Cabinet数据的网络接口。这是一个很成熟的产品,在国内外也有众多的成功案例。
介绍
Tokyo Cabinet(简称TC)和Tokyo Tyrant(简称TT),顾名思义,是源自日本的开源项目。由FAL Labs维护,主要的开发人员是Mikio Hirabayashi。最早应用在日本最大的SNS网站mixi.jp上成功后而声名鹊起。
TC是一个用C写的数据存储引擎,以key-value的方式存储数据,支持Hash、B+ tree、Hash Table等多种数据结构。同时提供了C、 Perl、 Ruby、Java和Lua等多种语言的API支持,但是如果通过网络来访问,就需要用TT。TT同样是用C写的,支持从网络端高并发、多线程的访问TC。另外TC/TT支持master/slave架构,可以通过配置实现高可用性,这也是很不错的一个特性。
TC因为支持灵活的数据结构而倍受欢迎,特别是Hash Table类型,很像传统的关系型数据库,只是每条存储记录的列是自由定义的,可以通过列作为条件来查询,十分方便。这是很多key-value结构的NoSQL产品所不具备的特性。当然,Hash Table类型和Hash、B+ tree相比存取效率会低一些,任何事物都是有两面性的,在带来高度灵活度的同时,必然要牺牲部分的效率。
TC/TT是一个久经考验的很稳定的产品,在千万及以下数据量级别表现出色。但是开发者由于种种原因,已经很长时间没有更新版本了,而是推出了对应升级产品,叫做Kyoto Cabinet和Kyoto Tycoon,这也给TC/TT的前景带来了不明朗的因素,很明显作者是鼓励人们使用升级的产品,但是由于新产品没有更多的成功案例,在业界的影响力反而不如TC/TT,因此在现阶段,TC/TT仍然是一个不错的NoSQL选择。
安装和使用
一、下载相关软件的最新版本(TC、TT和TC的lua扩展):
[root@localhost tctt]# wget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.47.tar.gz
[root@localhost tctt]# wget http://fallabs.com/tokyotyrant/tokyotyrant-1.1.41.tar.gz
[root@localhost tctt]# wget http://fallabs.com/tokyocabinet/luapkg/tokyocabinet-lua-1.9.tar.gz
注意这里的lua扩展是可选的,如果不需要使用lua接口,可以不必安装。
二、安装lua脚本,注意这里不能通过yum的方式安装,否则后面装tt时会提示找不到lua.h文件:
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
make linux
make install
安装过程中一般会报错如下:
luaconf.h:275:31: error: readline/readline.h: No such file or [...]
技术组织
最近评论
历史归档
广告位

