技术选型 一
分布式缓存
缓存:介于数据访问者和数据源之间的一种高速存储,当数据需要多次读取的时候,用于加快读取的速度。
缓冲:是一种介于高速与低速存储设备之间的一种高速存储,用来向低速存储中写入数据。
缓存无处不在,包括CPU缓存、操作系统缓存、数据库缓存、JVM编译缓存、CDN缓存、代理与反向代理缓存、应用程序缓存、分布式对象缓存。
缓存的数据存储结构是 Hash表,使用 hash算法对 key算出一个hash值,然后使用 key的hash值对数组长度进行取模操作,得出的那个下标值便用来存放该数据的指针。
通读缓存:给客户端返回缓存资源并在请求未命中缓存时获取实际数据;代理、反向代理、CDN缓存都是通读缓存。
旁路缓存:应用会直接询问缓存是否存在,如果则在则直接获取缓存数据并返回给客户端。如果不存在则会去数据源取出实际数据并将数据回写至缓存中;旁路缓存通常为独立的 k-v存储。
远程分布式对象缓存:
分布式对象缓存的路由算法基于 虚拟节点的一致性hash算法来实现,平均分配每个节点的负载。
合理使用缓存对系统性能的提高有诸多益处。
消息队列与异步架构
使用同步调用的方式来进行业务开发,如果有耗时比较久的业务则用户的体验会比较差,系统响应速度慢。
消息队列构建异步调用架构
点对对模型
发布订阅模型
消息队列的好处:实现异步处理,提升系统性能;更好的伸缩性;削峰填谷;失败隔离和自我修复;解耦
事件驱动架构 EDA
负载均衡架构
用户访问应用,请求不会直接到达后端应用服务器,而是先到达负载均衡服务器,由负载均衡服务器根据一定的调度算法将用户的请求分摊至后端不同服务器,以降低服务器的负载压力。
HTTP重定向负载均衡(比较古老了,而且缺点较多,还需要经过两次请求请求,现在基本上已经很少使用了);
DNS负载均衡
反向代理负载均衡
IP负载均衡
数据链路层负载均衡
常见的集中负载均衡算法:轮询、加权轮询(性能比较好的服务器权重分配高一些,承担的负载也就多一些;反之性能较差的服务器,权重就低一些)、随机、最少连接、源地址散列。
版权声明: 本文为 InfoQ 作者【_MISSYOURLOVE】的原创文章。
原文链接:【http://xie.infoq.cn/article/8b44cdcceaebdb0170f967ce6】。未经作者许可,禁止转载。
评论