首页 > 编程知识 正文

分布式架构优缺点,分布式技术

时间:2023-05-06 18:42:58 阅读:44613 作者:1231

另一方面,缓存的概念是服务端编程,缓存主要是指将数据库中的数据加载到内存中,然后对该数据的访问全部完成到内存中,从而减少了对数据库的访问,在高并发场景中数据基于内存访问速度快于磁盘访问速度的原理,从数据库读取数据通常需要从磁盘读取数据。 这样可以提高数据的访问速度和程序性能。 根据缓存是否与应用进程属于同一进程,可以将内存分为本地缓存和分布式缓存。 本地缓存将数据缓存在同一进程内的内存空间中,所有数据读写都在同一进程中进行,而分布式缓存是独立部署的进程,通常部署在与应用进程分离的计算机上,因此通过网络进行分布式密钥二、本地缓存本地缓存的优缺点1 .访问速度快但不能在分布式缓存上存储大数据的本地缓存的优点是性能好,因为不需要通过网络传输数据,但在Java过程中2 .在集群数据更新问题的同时,本地缓存只支持该APP应用程序进程访问,一般不能由其他APP应用程序进程访问,因此在APP应用程序进程的集群部署中,对应的数据库必须同步更新不同部署节点的本地缓存中的数据以保证数据完整性,复杂度高,容易出错。 例如,用基于Redis的发布订阅机构同步更新各配置节点。 3 .随着应用进程的重新启动,数据将丢失。 由于本地缓存的数据存储在应用进程的内存区域中,因此当应用进程重新启动时,本地缓存的数据将丢失。 因此,对于需要持久化的数据,必须注意及时保存。 否则,数据可能会丢失。 由于它适用于场景,因此本地缓存通常适用于缓存只读数据,如统计数据。 或者,对于每个部署节点的独立数据(如长连接服务),每个部署节点都有不同的连接,因此连接的数据是独立的,并且在连接断开时会被删除。 如果需要在群集的不同部署节点上共享数据并保持一致,则使用分布式缓存整合存储并实现APP应用程序群集的所有APP应用程序过程都只需要在此集成的分布式缓存中访问数据。 本地缓存实现缓存通常是密钥值对数据结构,因此必须使用词典数据结构实现。 Java编程使用常见的词典实现,包括HashMap和ConcurretHashMap。 同时,本地缓存需要同时读写到不同的服务端线程,因此需要确保线程的安全性。 因为HashMap不是线程安全的,而ConcurrentHashMap是线程安全的,所以通常使用ConcurrentHashMap作为Java编程的本地缓存。 还有其他更智能的本地缓存实现,如可以定期禁用、访问和重新加载。 典型的实现包括Cache实现,其中包括谷歌的guava工具包。 这些也是线程安全的。 三.分布式缓存分布式缓存的优缺点1 .支持大数据量存储。 不受应用进程重新启动影响的分布式缓存是独立放置的进程,因此具有自己的独立内存空间,不受应用进程重新启动的影响。 应用进程重新启动时,分布式缓存中的数据仍然存在。 另外,关于数据量,也不需要占用APP应用处理的存储器空间,并且一般支持集群方式的扩展,所以能够进行大数据量的数据缓存。 2 .集中存储数据、保证数据完整性应用进程采用集群方式配置时,集群的每个配置节点通过统一的分布式缓存进行数据访问操作,没有本地缓存的数据更新问题,不同节点应用进程的数据完整性问题 3 .数据读写隔离、高性能、高可用性分布式缓存一般支持数据复制机制,可以实现读写隔离,从而解决高并发场景中数据读写性能问题。 此外,在多个缓存节点中冗馀存储数据可以提高缓存数据的可用性,从而避免一个缓存节点停机导致数据不可用的问题。 3 .数据通过网络传输,性能低于本地缓存。 分布式缓存是独立部署的过程,通常位于与APP应用程序进程分离的计算机上,因此需要通过网络进行数据传输,从而导致本地缓存进程内部数据读取操作的性能下降。 实现分布式缓存分布式缓存的典型实现包括MemCached和Redis。 MemCached MemCached与本地缓存的主要区别在于,它作为独立的进程存在,存储在数据集中,并且在APP应用程序重新启动时不会丢失数据。 key-value键-值对的value也是简单的对象类型。 也就是说,value可以是任意格式的数据(如简单的数字、字符串和对象),也可以是复杂格式的数据(如文件、图像和视频),但不支持数据结构特性。 因此,MemCached进程将在内存中维护一个非常大的哈希表以存储数据。 所有相应的数据操作复杂性都是o(1),是常数级别。 这也是MemCached高性能的实现方法,密钥值和访问速度非常快。 Redis Redis还可以进一步完善key-value键和值对的value的数据结构类型,以便在Redis中进行value的相关数据操作,如删除Set集合、通过有序集合ZSet进行数据排序等另外,Redis是单线程的,不存在同时读写数据的线程安全问题,更重要的是保证数据读写操作的顺序性。 此外,Redis支持主从同步(读写分离)、集群分片展开、数据持久化等特性,但MemCached也不支持这种特性。 因此,Redis还可以用作数据库,用于允许极端情况下的数据丢失(如日志和重新计算)的高并发方案,以及可以在丢失后恢复的高并发方案,以提高高并发方案的访问性能。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。