一:分布系统的简单定义:
关于”分布式系统”的定义,通俗的说,我们可以这样来理解它:
分布式系统功能强大,其内部至少由多台计算机组成,类似于由一组独立计算机组成的统一的”机器中心”。
对于用户来说,这个”机器中心”就像一个单独的相关系统一样,根本感觉不到计算机集群的存在。
从程序的角度来看,程序a和程序B运行在两台计算机上,它们相互协作完成相同的功能。理论上,由这两个程序组成的系统可以称为”分布式系统”。当然,这两个程序可以是不同的程序,也可以是同一个程序。如果是同一个程序,我们也可以称之为”集群”。
二.分布式系统中的常见问题
虽然分布式系统看起来非常强大,但在实际应用环境中,由于一些人为的难以控制或简单的无法控制的因素,整个系统变得非常脆弱。典型的共同因素包括:
1.网络不那么可靠。
在分布式系统中,节点之间的通信本质上是通过网络进行的,有时网络不太可靠。常见的网络问题是网络延迟、数据包丢失和消息丢失。
2.节点故障是无法避免的
当分布式节点的数量达到一定的规模时,整个系统的失效概率就会增大。但是,当分布式系统需要确保故障发生时,系统仍然可用,也就是说,在一个或几个节点发生故障时,负责该节点的计算和存储任务需要转移到其他节点。
总之,在分布式系统给互联网企业带来诸多好处的同时,也带来了许多挑战和不确定性,可以说是一把”双刃剑”。
三:分布式中间件简单概述
分布式中间件作为分布式系统不可缺少的组成部分,在分布式系统的发展中起着至关重要的作用,尤其是对高并发性、高吞吐量、低延迟等普遍需求,可以在中间件级得到很好的解决。
中间件是介于操作系统软件和用户应用软件之间的一种独立的基本系统软件或服务程序。它具有良好的独立性,可以作为一个独立的软件系统运行。
如果读者不知道中间件是什么,您应该听说过Redis、RabbitMQ、ZooKeeper、Elasticearch、Nginx,所有这些中间件都是用于缓存、消息队列、分布式锁、全文搜索和负载平衡的常用中间件。
随着Internet的飞速发展,高吞吐量、高并发性、低延迟和负载均衡成为人们的普遍需求,因此,作为中心的中间件也从单一的”集中式”到”分布式的”,如基于Redis的通用分布式缓存、基于RabbitMQ的分布式消息中间件、基于ZooKeeper的分布式锁和基于Elasticearch的全文搜索引擎。
四:常用中间件的一些介绍
正如前面提到的,常见和常用的中间件包括Redis、Redisson、Elasticearch、Kafka、Etcd、RabbitMQ、ZooKeeper和Nginx。
1.Redis简介
Redis是一个基于内存存储并以键值格式存储的开源(BSD许可的)内存数据库,支持多种数据类型,包括字符串、哈希表、列表、集合、有序集合、位图等等。
2.Redisson简介
Redisson是一个基于Redis的Java驻内存数据网络(In-Memory Data Grid)。可以简单地理解,Redisson是Redis的升级版本。它充分利用Redis键值为数据库提供的一系列优点,并为用户提供了一系列具有分布式特征的通用工具类。
Redisson的出现使得将分布式多线程并发系统作为协调单机多线程并发程序的工具包成为可能,大大降低了设计和开发大规模分布式系统的难度,简化了分布式环境中程序之间的协作。
Redisson很好地解决了Redis在分布式系统应用过程中存在的问题,如分布式锁的处理,Redisson的处理更加安全、稳定和高效,以后将在Redisson的实战部分进行描述。
3.RabbitMQ简介
RabbitMQ是一种广泛使用的开源消息中间件,它可以实现异步消息分发、模块解耦、接口电流限制等功能,特别是在处理分布式系统的高并发业务场景时,RabbitMQ可以发挥很好的作用,例如接口限流,从而减少应用服务器的压力;例如异步消息分发,从而减少系统的总体响应时间。
4.ZooKeeper简介
ZooKeeper是一种开源的分布式应用协调服务,它可以为分布式应用程序提供一致的服务,简称ZK。它提供的功能服务包括配置维护、域名服务、分布式同步等,而提供的接口包括分布式独享锁、选择、队列等。
转载请带链接:9im博客 » 分布系统及分布式中间件的简单介绍
https://www.9im.cn/