微服务实践设计方案

1.微服务管理-11.缓存-0.技术

2020-02-01  本文已影响0人  Wales_Kuo

微服务实践目录,可以参见连接。

缓存系列包括:
1.微服务管理-11.缓存概述
1.微服务管理-11.缓存-0.技术
1.微服务管理-11.缓存-1.多级缓存设计
1.微服务管理-11.缓存-2.典型缓存架构设计
1.微服务管理-11.缓存-3.实践-用户中心缓存设计
1.微服务管理-11.缓存-4.总结

背景

随着互联网的普及,内容信息越来越复杂,用户数和访问量越来越大,我们的应用需要支撑更多的并发量。对于一个计算机系统来说输入、输出、计算、存储都需要不断的扩展,从原来的单台机器扩展到多台机器以增强系统的输入、输出、计算、存储能力。在硬件上以多台廉价机器替换单台的昂贵服务器的趋势已经从GFS、云计算领域的兴起而不断的被应用在实践中。相对于硬件基础设施来说,软件基础设施也跟随者小型化、廉价化的趋势在不断的分裂发展。从软件基础层面上有使用分布式的方式解决输入、输出、计算、存储能力的问题。

软件基础设施方面的输入可以使用 OpenResty这种可以高度定制化的接入服务,输出可以使用CDN、P2P这样的分发网络进行。计算可以使用微服务,分布式计算解决差异化、大批量计算的问题。存储方面的发展对于其他方面来说相对比较缓慢。近些年不断提出存储方面的特定场景解决方案:大数据存储与计算方案,NewSql的关系型存储解决方案,文档型存储解决方案等。但业内对于非关系型数据库的研究与应用还是处于不是很稳定的阶段,菲关系型数据库一方面解决存储性能的问题,一方面有被CAP所限制。所以出现了BASE这种对CAP进行权衡的方式。

从存储的基本理论(ACID,CAP,BASE)可以得出存储的可伸缩性、性能等方面是有理论约束的。不能将系统所要求的并发量、响应时间等压在数据库的能力上,所以缓存技术再一次被提上桌面。

数据库每秒能接受的请求次数也是有限的(或者文件的读写也是有限的),但是我们不可能把我们的持久化技术不不实用数据库。所以,如何能够有效利用有限的资源来提供尽可能大的吞吐量?就成为数据库在软件系统中的最主要责任。一个有效的办法就是引入缓存,打破标准流程,每个环节中请求可以从缓存中直接获取目标数据并返回,从而减少计算量,有效提升响应速度,让有限的资源服务更多的用户。

技术对比

我们这里讨论的缓存技术是针对数据管理与数据存储方面的技术。不包括像浏览器缓存,cdn缓存,nginx缓存这样的技术。从这个角度说,所有的内存式数据库都可以作为缓存使用。下图为google查询缓存技术的趋势图:

缓存技术活跃趋势

在缓存技术刚出现的那几年,memcache和redis是不相上下的。后来redis异军突起,其他的缓存技术已经不可与redis同日而语。但对于技术来说,不同的技术有不同的侧重点有自己所适用的场景。所以对于每项技术都需要有一些了解。
对于缓存技术有一些通用的特性,还有一些自己的特点。所以本文会从通用的角度对比几个现在可以看到的,会从不同的方面进行对比。具体指标有:客户端,分布式支撑,命中率,最大元素数,换入换出策略,数据类型,持久化,监控管理,缓存穿透支持,标准规范(JSR-107 JAVA缓存规范)

总结

缓存技术有很多中,但是每个缓存技术都有自己的特点。最强大的是Apache Ignite把缓存做成了Cache as a Service(CaaS) 缓存即服务。下来就是几个独立的缓存数据库:alibaba tair,redis,memcache,etcd。内嵌式的缓存有Hazelcast,Ehcache,Guava Cache,H2 Database。在这些技术中还有两种可以支持IMGD (In-Memory Data Grid内存数据网格)的两种Apache Ignite,Hazelcast。Apache Ignite还可以支持网格计算的缓存。Apache Ignite还有苏宁 11.11:基于 Apache Ignite 日均十亿数据对账实践应用这样的实践应用。

不要将所有的压力、吞吐都压在数据库上,因为数据库理论上是有限制的。其他还有像zookeeper,mysql memory database,sqlite3,Berkeley DB服务可以作为缓存使用。

参考

【分布式存储】CAP、BASE与ACID原则
Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
缓存那些事
Tair
Etcd官方文档中文版
阿里云Redis开发规范
Apache Ignite 初探
Apache Ignite中文网
Guava Cache使用介绍
etcd:从应用场景到实现原理的全方位解读
H2 Database简介
缓存篇 : Guava cache 之全面剖析
用 Terracotta 实现 Master-Worker
Hazelcast介绍和优势
Apache Ignite简介以及Ignite和Coherence、Gemfire、Redis等的比较

上一篇 下一篇

猜你喜欢

热点阅读