如何来设计分布式
2017-03-10 16:33
162 查看
设计分布式系统的本质就是“如何合理将一个系统拆分成多个子系统部署到不同机器上”。所以首要考虑的问题是如何合理的将系统进行拆分。由于拆分后的各个子系统不可能孤立的存在,必然是通过网络进行连接交互,所以它们之间如何通信变得尤为重要。当然在通信过程要识别“敌我”,防止信息在传递过程中被拦截和窜改,这就涉及到安全问题了。分布式系统要适应不断增长的业务需求,那么就需要考虑其扩展性。分布式系统还必须要保证可靠性和数据的一致性。
概况起来,在设计分布式系统时,应考虑以下几个问题:
系统如何拆分为子系统?
如何规划子系统间的通信?
通信过程中的安全如何考虑?
如何让子系统可以扩展?
子系统的可靠性如何保证?
数据的一致性是如何实现的?
实际上,上面的每一个问题都不是简单的问题。还好,我们要感谢开源,让这个时代的技术可以共享,让实现复杂系统的成本越来越低。比如,我们在设计通信时,我们可以采用面向消息的中间件,比如Apache ActiveMQ、RabbitMQ、Apache RocketMQ、Apache Kafka等,也有类似与 Google Protocol Buffer、Thrift等 RPC框架。在设计分布式计算时,我们分布式计算可以采用 MapReduce、Apache Hadoop、Apache Spark 等。在大数据和分布式存储方面,我们可以选择
Apache HBase、Apache Cassandra、Memcached、Redis、MongoDB等。在分布式监控方面,常用的技术包括Nagios、Zabbix、Consul、ZooKeeper等。
概况起来,在设计分布式系统时,应考虑以下几个问题:
系统如何拆分为子系统?
如何规划子系统间的通信?
通信过程中的安全如何考虑?
如何让子系统可以扩展?
子系统的可靠性如何保证?
数据的一致性是如何实现的?
实际上,上面的每一个问题都不是简单的问题。还好,我们要感谢开源,让这个时代的技术可以共享,让实现复杂系统的成本越来越低。比如,我们在设计通信时,我们可以采用面向消息的中间件,比如Apache ActiveMQ、RabbitMQ、Apache RocketMQ、Apache Kafka等,也有类似与 Google Protocol Buffer、Thrift等 RPC框架。在设计分布式计算时,我们分布式计算可以采用 MapReduce、Apache Hadoop、Apache Spark 等。在大数据和分布式存储方面,我们可以选择
Apache HBase、Apache Cassandra、Memcached、Redis、MongoDB等。在分布式监控方面,常用的技术包括Nagios、Zabbix、Consul、ZooKeeper等。
相关文章推荐
- 如何设计一个麻雀般的微型分布式架构?
- Redis 如何实现分布式——京东金融Redis缓存的设计与实践
- 如何设计一个基于云计算的大型分布式系统
- Redis 如何分布式,来看京东金融的设计与实践
- 如何在一个系统中设计权限控制机制(3)
- 如何不使用可视化设计来显示登陆窗体?
- 如何在一个系统中设计权限控制机制(2)
- BBS 设计思路系列 ---- 普通网友如何投诉一个帖子??
- 如何认识设计模式?
- 如何设计出具有GUI特色的“纯”JAVA程序
- 如何设计心理测试?
- VB中如何设计菜单在左侧,像资源管理器样子的.左边能对应大图标!谢谢
- 如何调用自行设计的系统调用, --核心开发入门(3)
- 听刘如鸿先生《如何设计具有可扩展性功能的软件架构》感想
- 字段设计为true/false,dbgrid显示时如何变为男/女?
- 如何设计通用的回调机制
- 用javascript操作xml-->Web设计中如何使用XML数据源对象(转载)
- 如何设计和驱动多任务执行环境(摘抄自inside Vcl)
- 设计分布式系统以进行部署
- Visio如何反向导出数据库设计文档