如果你期待对分布式系统有一个更全面的认识,想要了解各个技术在分布式系统中如何应用、分别解决哪些问题、有怎样优秀的实现,推荐阅读、收藏本篇。
分布式系统涉及到的理论知识及技术点比较多,以致于很多童鞋都说,分布式系统的学习是入门容易、深入难,通过网络搜索到的知识点较为零散,难以系统化学习、融会贯通。本篇Mike将从以下几个方面分享,带着大家先窥探分布式的全貌,希望为大家厘清分布式学习之路的方向与具体路径。
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。有一种说法:分布式系统是若干独立计算机的组合共同对用户提供服务,但对于用户来说,这些计算机就像是单个相关系统。
分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。
布式系统特性主要有透明性、可扩展性、可用性、可靠性、高性能、一致性等。这几个特性是分布式系统的主要衡量指标,开始分布式系统的学习,从了解分布式系统的特性开始。
1、透明性
分布式的特征之一是向用户隐藏系统的内部组织结构,各种计算机之间的差别、通信方式的差别都被隐藏了。使用分布式系统的用户不关心系统如何实现,以及看到的数据来自哪里,用户在任何时候都能以同一种方式与分布式系统进行交互。
2、可扩展性
可扩展性是指当增加或减少任务时,分布式系统的处理能力要能够很方便地随之增加或减少。即:能够高效便捷地通过增加或减少机器的数量,来应对数据量的增长或减少。
3、可用性
可用性分布式系统的基本问题,可用性是指系统在各种情况下都能稳定地对外提供服务的能力,即高度可用的系统在任何时候都能正常地工作。
4、可靠性
可靠性是指系统可以无故障地持续运行,计算结果正确、存储的数据不丢失。与可用性的差别在于,可靠性是依据时间间隔来定义,而不是任何时刻来进行定义的。
5、高性能
高性能是应用系统所需要具备的基本条件,不管是单机还是分布式系统,大家都非常关注性能。高性能是指应用系统对于客户端请求的处理速度快,响应时间短,对于用户来说就是该应用的操作流畅,拥有良好的用户体验。不同系统、不同业务类型对性能的衡量指标是不同的,譬如:淘宝交易系统可以是秒级别的响应,而网络游戏则要保证在毫秒级别的响应。
6、一致性
通常情况下,我们所说的分布式一致性问题是指数据一致性问题。分布式架构的核心在于一致性的实现和妥协。一致性越强,对用户越友好,但会制约系统的可用性;一致性越低,用户端可能需要兼容数据不一致的情况,但系统可用性会高出很多,具体实施时要考虑实际业务场景的需要去做取舍,不同场景下选择合适的设计模式。
以上就是分布式系统的几个主要特征(基础理论知识点)。接下来我们来了解下分布式系统在实现过程中可能用到的主流技术。
关于分布式系统的实现,主要会使用到哪些技术呢?下面简单罗列了一些供大家参考。
• 负载均衡:Nginx、LVS等
• webserver:Tomcat、Apache、Jboss等
• service:SOA、微服务、Spring boot,SpringCloud等
• 容器:Docker,kubernetes等
• cache:Memcache、Redis等
• 协调中心:Zookeeper、Etcd等
• RPC框架:Grpc、Dubbo、Brpc等
• 消息队列:Kafka、RabbitMQ、RocketMQ、QSP等
• 实时数据平台:Storm、Akka等
• 离线数据平台:Hadoop、Spark等
• dbproxy:Cobar等
• db:Oracle、Mysql、MongoDB、HBase等
• 搜索:Elasticsearch、Solr等
• 日志:Rsyslog、Elk、Flume等
Mike曾经输出过一系列分布式系统相关的技术干货,主要包括:Kafka、Docker、Dubbo、Redis、负载均衡等专题,涉及到多种技术、理论知识以及协议。如果你期待对分布式系统有一个更全面的认识,想要了解各个技术在分布式系统中如何应用、分别解决哪些问题、有怎样优秀的实现,最终将分布式系统中的相关技术与理论串联起来,不妨了解下Mike免费分享的几十期分布式系统专题合集及知识图谱(长期持续更新)。
关注+转发后,回复【学习】即可获取!
重要的事情说三遍,关注+转发、关注+转发、关注+转发,然后私信,才可以拿到哦!