分布式系统定义
分布式系统是由多个独立的计算机或节点组成的系统,这些节点通过网络进行通信和协作,共同完成特定的任务或提供特定的服务。
分布式系统作用
分布式系统的设计目标是通过将计算和数据分布在不同的节点上,实现更高的性能、可扩展性、容错性和可靠性。
分布式系统特点
分布式系统的关键特点包括:
- 分布性:系统由多个节点组成,并且这些节点可以分布在不同的物理位置或计算机上。
- 并发性:多个节点可以并行地执行任务,从而提高系统的处理能力和性能。
- 缺乏全局时钟:分布式系统中的节点通常没有全局时钟,而是使用局部时钟进行时间同步或事件排序。
- 故障容忍性:分布式系统应对节点故障和通信故障具有容忍性,能够继续提供服务或恢复正常运行。
- 可扩展性:系统应能够方便地扩展,添加或移除节点以适应不断增长的工作负载。
分布式系统有哪些
1.分布式服务
比如大家现在熟知的:Spring Cloud和Spring Cloud Alibaba以及新一代Istio为代表的ServiceMesh都是分布式服务典型代表。
2.分布式缓存
常用的分布式缓存包括Redis和Memcached。
1.Memcached
Memcached是一个开源的,高性能的内存绶存软件,从名称上看Mem就是内存的意思,而Cache就是缓存的意思。
Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。
Memcached通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
2.Redis
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis支持多种类型的数据结构,最常用的5大数据类型,如下图所示:
3.分布式文件系统
比如:常见的GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等分布式文件系统。
4.分布式计算系统
例如:Apache Spark、Apache Flink和Hadoop MapReduce等,用于高性能数据处理、大规模数据分析和批处理的分布式计算系统。
5.分布式消息队列系统
例如:Apache Kafka和RabbitMQ、RocketMQ等,用于处理实时数据流和消息传递的分布式消息队列系统。
1)Producer 消息生产者:负责产生和发送消息到 Broker;
2)Broker 消息处理中心:负责消息存储、确认、重试等,一般其中会包含多个 queue;
3)Consumer 消息消费者:负责从 Broker 中获取消息,并进行相应处理;
其它分布式系统技术
除此之外,还会涉及:分布式配置中心、分布式日志中心、分布式监控、分布式会话等等,都是分布式系统场景下你需要使用和了解的一些技术。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》