分布式系统设计基础知识

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

创新互联公司主营陇县网站建设的网络公司,主营网站建设方案,成都app开发,陇县h5微信小程序开发搭建,陇县网站营销推广欢迎陇县等地区企业咨询

我常用的一些组件

集群管理: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。

业务拆分

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


本文题目:分布式系统设计基础知识
路径分享:http://hbruida.cn/article/iegjpj.html