分布式系统设计基础知识

在云计算,大数据,互联网等领域,都存在集群的概念,那么如何进行集群管理呢?虽然各有各的实现方式,但是思想都一样,通过leader管理一个集群,有自己的选举算法。而且集群中相似功能的组件也很多,可供用户任意选取。

我常用的一些组件

集群管理:zookeeper

消息队列:zeromq

缓存:memcached,redis

数据库:mysql,postgresql

NoSQL:mongodb(其实memcached和redis也是NoSQL)

消息队列

rabbitmq和zeromq相比,zeromq不支持持久化,但是使用非常简单,就是一个库,而rabbitmq支持持久化,但是需要一个server进行消息路由。

缓存

memcached不支持集群,依赖于zookeeper管理集群,仅提供缓存功能,集群内的缓存数据不需要同步。redis支持集群,数据类型丰富,可以实现一主多备的读写分离,有自己的选举算法。

反向代理+负载均衡

nginx,haproxy,这两个都是优秀的反向代理工具,nginx不但可以提供LB功能,还可以提供web服务器功能。nginx的使用和配置更容易上手,但是转发效率不如haproxy。

CDN服务

一般需要购买商用CDN即可,在形成一定规模后,可以考虑自己的CND。目前除了BAT之外,很少有自己开发自己的CDN服务的。因为大量的机房建立,也是需要很多money的,非普通企业可以负担的的。

防火墙

购买防火墙设备,及配置iptables

高可用

高可用方案有很多,比如:coresync+pacemaker,keepalived等,keepalived比较容易上手,但功能较前者略差一些。数据同步一般使用drdb。

业务拆分

如果业务过于复杂,比如大型电商系统,那么每个业务线都做分布式,比如:订单系统,用户管理系统,都要做成分布式可扩容的集群。

转载于:https://blog.51cto.com/14207158/2352311

自己花钱买的电子书,高清完整版!很实用的教材,读起来一点也不晦涩。 目 录 译者序 前言 第1章 概论 1.1 推动因素 1.2 基本计算机组成 1.3 分布式系统的定义 1.4 我们的模型 1.5 互连网络 1.6 应用与标准 1.7 范围 1.8 参考资料来源 参考文献 习题 第2章 分布式程序设计语言 2.1 分布式程序设计支持的需求 2.2 并行/分布式程序设计语言概述 2.3 并行性的表示 2.4 进程通信与同步 2.5 远程过程调用 2.6 健壮性 第 3 章 分布式系统设计的形式方法 3.1 模型的介绍 3.1.1 状态机模型 3.1.2 佩特里网 3.2 因果相关事件 3.2.1 发生在先关系 3.2.2 时空视图 3.2.3 交叉视图 3.3 全局状态 3.3.1 时空视图中的全局状态 3.3.2 全局状态:一个形式定义 3.3.3 全局状态的“快照” 3.3.4 一致全局状态的充要条件 3.4 逻辑时钟 3.4.1 标量逻辑时钟 3.4.2 扩展 3.4.3 有效实现 3.4.4 物理时钟 3.5 应用 3.5.1 一个全序应用:分布式互斥 3.5.2 一个逻辑向量时钟应用:消息的 排序 3.6 分布式控制算法的分类 3.7 分布式算法的复杂性 第4章 互斥和选举算法 4.1 互斥 4.2 非基于令牌的解决方案 4.2.1 Lamport算法的简单扩展 4.2.2 Ricart和Agrawala的第一个算法 4.2.3 Maekawa的算法 4.3 基于令牌的解决方案 4.3.1 Ricart和Agrawala的第二个算法 4.3.2 一个简单的基于令牌环的算法 4.3.3 一个基于令牌环的容错算法 4.3.4 基于令牌的使用其他逻辑结构的 互斥 4.4 选举 4.4.1 Chang和Roberts的算法 4.4.2 非基于比较的算法 4.5 投标 4.6 自稳定 第5章 死锁的预防、避免和检测 5.1 死锁问题 5.1.1 死锁发生的条件 5.1.2 图论模型 5.1.3 处理死锁的策略 5.1.4 请求模型 5.1.5 资源和进程模型 5.1.6 死锁条件 5.2 死锁预防 5.3 一个死锁预防的例子:分布式数据库 系统 5.4 死锁避免 5.5 一个死锁避免的例子:多机器人的 灵活装配单元 5.6 死锁检测和恢复 5.6.1 集中式方法 5.6.2 分布式方法 5.6.3 等级式方法 5.7 死锁检测和恢复的例子 5.7.1 AND模型下的Chandy,Misra和Hass 算法 5.7.2 AND模型下的Mitchell和Merritt 算法 5.7.3 OR模型下的Chandy,Misra和Hass 算法 第6章 分布式路由算法 6.1 导论 6.1.1 拓扑 6.1.2 交换 6.1.3 通信类型 6.1.4 路由 6.1.5 路由函数 6.2 一般类型的最短路径路由 6.2.1 Dijkstra集中式算法 6.2.2 Ford的分布式算法 6.2.3 ARPAnet的路由策略 6.3 特殊类型网络中的单播 6.3.1 双向环 6.3.2 网格和圆环 6.3.3 超立方 6.4 特殊类型网络中的广播 6.4.1 环 6.4.2 2维网格和圆环 6.4.3 超立方 6.5 特殊类型网络中的组播 6.5.1 一般方法 6.5.2 基于路径的方法 6.5.3 基于树的方法 第7章 自适应、无死锁和容错路由 7.1 虚信道和虚网络 7.2 完全自适应和无死锁路由 7.2.1 虚信道类 7.2.2 逃逸信道 7.3 部分自适应和无死锁路由 7.4 容错单播:一般方法 7.5 2维网格和圆环中的容错单播 7.5.1 基于局部信息的路由 7.5.2 基于有限全局信息的路由 7.5.3 基于其他故障模型的路由 7.6 超立方中的容错单播 7.6.1 基于局部信息的模型 7.6.2 基于有限全局信息的模型:安全 等级 7.6.3 基
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值