分布式系统设计基础知识

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

我常用的一些组件

集群管理:zookeeper

消息队列:zeromq

缓存:memcached,redis

数据库:mysql,postgresql

NoSQLmongodb(其实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。

业务拆分

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

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/191364.html

(0)
上一篇 2021年11月14日
下一篇 2021年11月14日

相关推荐

发表回复

登录后才能评论