1.什么是分布式系统:
是若干能独立运行的计算机的集合,这计算机对用户来说就像单个相关系统。
(一个系统拆分成多个子系统分别部署到不同的机器上。)
利:
(1).应用可以根据业务不同拆分成多个应用。
(2).数据库可以根据业务类型拆分成不同实例。
(3).解决集中式系统不变扩展的弊端,每次更新只需要更新相应的应用模块而不是整个系统。
弊:
(1).增加系统复杂性,如分布式事务、分布式锁、分布式session、数据一致性等复杂难题。
(2).增加了开发、测试以及运维成本。
2.如何设计分布式系统?
(1)首先考虑如何把整个系统拆分成多个子系统。
(2)设计好系统之前的通信,这时可以选择适合系统的消息中间件。例如:AcativeMQ、RabbitMQ、Kafka。
(3)设计分布式计算,例如:Hadoop、Spark。
(4)分布式存储。例如:radis、MongoDB、HBase。
(5)分布式监控控制。例如:zookeeper。