基于消息的分布式架构设计-转

背景:

随着社会的发展,经济的飞跃,传统的单系统模式(webApp+DB)已经很难满足业务场景的需要。企业系统开始不断演化成多个子系统并存协作的局面。大大降低了系统间的耦合性,更重要的便于子系统的扩展、升级、维护等。
谈到系统间的协作,目前常用两种方式:
1、基于Http协议
通过客户端发起的get、post请求,服务端接收request请求,处理请求,得到响应内容,通过网络传送到客户端,由浏览器解析出一个可视化的页面。
这种交互最大的优势是实时性,通过HTTP请求连接各个子系统,从而跨服务器来完成一个完整的业务流程。缺点协议请求头的信息较少,一般都是关键参数,完整数据由下一个子系统从数据库、文件系统来获取,从来保证前后的业务数据衔接。

Continue reading

分布式数据库拆表拆库的常用策略

在大容量,高负荷的web系统中,对数据库进行一系列拆分,可有效提升数据库容量和性能。在初学程序的早期,程序员通常都喜欢按传统数据库设计模式,设计为单库和单一功能表的结构,这样的结构在数据量和并发量达到一定程度之后,会出现严重性能问题和维护问题。在出现问题的时候才着手进行优化,会非常痛苦,所以应该在系统架设之初就考虑好之后会出现的问题。

目前有些数据库策略是采用单库结构,然后通过同步分发到数台服务器实现读写分离。个人觉得这样的策略非常笨拙,还是想办法将其分隔开来好,否则每台机器的内存都很容易超支。

一般只对数据量比较大的表进行拆分,这应该没有什么异议;还有一种是有可能会进行维护的比较重要的表,比如文章目录表,如果有从其它系统倒数据进来的可能的话,也要拆掉,不然倒数据时一不小心把目录表弄坏了,发现忘了备份,那真是欲哭无泪。 Continue reading

开源软件keepalived实现分布式数据分发

大家都看到过在支付宝架构图里面一个分布式数据分发中心(Gara系统),这个分布中心为了完成每天的数据抽取和向多个Oracle Rac集群和Greenplum集群分布数据的心脏,数据仓库系统是一切系统数据来源。其中功能是为了完成异构数据抽取和装载。

为了使Gara实现高效性和线性扩展能力,现在alipay dw是用4台高性能PC Dell R900(4*4core,128GB memory)来实现,但是Gara原来开发的程序不能实现分布式,只能通过调度系统来控制,灵活性不够强。

最近发现一个开源软件 Keepalived,能很好来实现Gara高效性和线性扩展能力,很多人用来 Keepalived网站的负载均衡,Keepalived还有一个重要的特性就是实现高可用性,就利用这个特性来实现Gara分布式管理 Continue reading

分布式key/value存储系统比较

先介绍一下绍一些流行的分布式key/value存贮系统,并做一些简单的比较。

词汇与背景阅读:

Distributed Hash Table (DHT) and algorithms such as Chord or Kadmelia

Amazon's Dynamo Paper, and this ReadWriteWeb article about Dynamo which explains why such a system is invaluable

Amazon's SimpleDB Service, and some commentary

Google's BigTable paper

The Paxos Algorithm - read this page in order to appreciate that knocking up a Paxos implementation isn't something you'd want to do whilst hungover on a Saturday morning.

现有比较流行的key/value存储系统: Continue reading

moosefs 分布式文件系统简介

MooseFS正式的推出是在2008-05-30,到2009-10-12为止,最新的版本是1.5.12。
MFS是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。MFS也像其他类unix文件系统一样,包含了层级结构(目录树),存储着文件属性(权限,最后访问和修改时间),可以创建特殊的文件(块设备,字符设备,管道,套接字),符号链接,硬链接。
MFS的区别特征:
高可用性(数据在不同的服务器上会有多分的拷贝)
只需要通过添加新的服务器或者硬盘就可以做到动态的扩展
可以再一个规定的时期保存执行了删除操作的文件
可以创建文件的快照,保证文件在被使用的时候,整个文件的副本都是一致的 Continue reading

MooseFS 分布式文件系统的部署与应用

摘自:http://salogs.com/2009/10/moosefs-%E5%88%86%E5%B8%83%E5%BC%8F%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E7%9A%84%E9%83%A8%E7%BD%B2%E4%B8%8E%E5%BA%94%E7%94%A8/

mooseFS简介

MooseFS正式的推出是在2008-05-30,到2009-10-12为止,最新的版本是1.5.12。
MFS是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。MFS也像其他类unix文件系统一样,包含了层级结构(目录树),存储着文件属性(权限,最后访问和修改时间),可以创建特殊的文件(块设备,字符设备,管道,套接字),符号链接,硬链接。

详细介绍参见官方文档:http://www.moosefs.com/pages/mfs.html 或
本站介绍文章:http://salogs.com/category/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F/moosefs/ Continue reading

Windows Server 2003的DFS(分布式文件系统)

分布式文件系统(DFS)把一些分散的(分布在局域网内各个计算机上)共享文件夹,集合成一个文件夹内(虚拟共享文件夹)。利用分布式文件夹,对于用户来说,要访问这些共享文件夹是时,只要打开这个虚拟共享文件夹,就可以看到所有链接到虚拟共享文件夹内的共享文件夹。用户感觉不到这些个共享文件是分散于各个计算机上的。分布式文件系统的好处是:集中访问。简化操作。提高文件存取效率。

上图说明了分布式文件系统。 Continue reading