睢宁微网站开发seo关键词排名怎么提升
news/
2025/10/2 15:58:50/
文章来源:
睢宁微网站开发,seo关键词排名怎么提升,备案的网站名称写什么,学it什么培训机构好简介#xff1a; 风雨不动安如山 背景
近几年互联网的快速发展中#xff0c;互联网业务发展越来越复杂#xff0c;业务也被拆分得越来越细#xff0c;阿里内部业务也发生着翻天覆地的变化#xff0c;从最初的单体应用#xff0c;到后面的分布式集群#xff0c;再到最近… 简介 风雨不动安如山 背景
近几年互联网的快速发展中互联网业务发展越来越复杂业务也被拆分得越来越细阿里内部业务也发生着翻天覆地的变化从最初的单体应用到后面的分布式集群再到最近几年大中台小前台的业务形态作为后端开发依赖的服务方越来越多同时依赖服务方的故障因素也会越来越多的会影响到闲鱼的上层业务的稳定。例如在闲鱼主推商品流的业务场景中商品中台数据库的抖动会造成主推商品流的卡顿或者页面显示空窗现象个性化算法中台向量集群的扩容也会造成推荐内容延时被拖到非常长后面还有可能依赖其他的业务中台作为上层业务如何保证依赖的中台越来越多的情况下还能保证服务的稳定性运行呢
业界主流溜一遍
根据日常解决问题的经验不能直接解决业务问题本身可以折中解决业务问题也是一个不错的办法。上述业务问题中当业务出现问题的时候可以折中提前置备好所需的业务数据返回给业务也是一个不错的办法。在闲鱼主推商品流的业务场景中对可靠性要求非常高因为推荐商品失败用户看到推荐页出现空窗业务所需的数据量大概是5页的推荐商品数据流大概为3M左右。在实际解决问题中笔者从业务所需的数据量级、可靠性要求级别等角度调研了业界一些通用解决办法。 为了给用户良好的业务体验笔者主要使用服务端数据冗余、客户端数据冗余、熔断机制等方法来确保用户对闲鱼App流畅的业务体验。笔者主要服务端数据冗余聊聊本地缓存根据笔者在阿里断网演练的经验断网演练时某个区域的所有服务不可用所以笔者在技术选型的时候没有考虑分布式缓存RedisMemcache之类等。目前就业界本地缓存库有Guava、Caffeine、Ehcache、Cache2K、ConcurrentHashMap、Varnish、JackRabbit等笔者选取了几个性能比较优越的缓存库比较下面笔者从功能上、性能上、易用性、集群能力、可视化报表上等分别比较。 笔者对照目前业务需求对比了上述四个组件在定时失效策略能力上除了ConcurrentHashMap都是使用定时失效能力并且三个组件时间复杂度都是O(n)。在集群能力上Ehcache依赖自身网络协议保证集群数据一致性不能使用现有集团内部组件保证数据一致性。在本地缓存能力上Caffeine的写能力[1]优与Guava。在组件通用性上Guava组件更加通用。最终笔者选用了Guava组件作为本地缓存组件因为Guava 组件更加通用并且很方便与阿里内部中间件集成配合使用。在集群数据同步能力通过配置中心中间件实现数据同步在可视化报表能力通过定时任务打印日志日志采集系统采集展示数据报表。接下来笔者介绍如何添加上述三种能力和优化Guava本地缓存能力。 我的集群Cache组件
Guava Caching提供了定时失效、最后访问失效、最后写入失效策略等能力笔者主要使用了定时失效能力在首次写入Key后指定时间过后该Key会失效业务获取该Key时会调用reload方法重新同步加载该Key。如果使用invalid方法使该Key无效业务并发再次获取该Key多线程加载该Key时只有一个业务线程调用load方法加载该Key其他线程等待该Key加载完成后重新进入指定时间后流程。笔者在原来Guava Cache本地缓存能力上结合Spring自动注入能力进行工程化添加了业务所需的如下三种能力
当key失效本地缓存reload异步加载失效本地缓存key整个集群机器上key失效能力定时上报本机Cache内各个Key在本地缓存大小
根据上述业务能力整体流程图如下所示集群本机Cache组件的整体结构类图如下:
AbstractCacheLoader重写父类CacheLoader的reload方法添加异步加载能力LocalCacheManager管理所有实现AbstractCacheConfig的子类并上报各自本地缓存大小。实现AbstractCacheConfig的业务配置子类例如CurrentCacheConfig等调用invalidate方法时会通知集群本机Cache中Key消息。
业务同学在使用集群本机Cache组件时只需要继承AbstractCacheConfig抽象类声明为Bean即用集群本机Cache组件业务同学无需关心集群环境问题等。相比Guava cache组件提供了集群本机Cache Key失效能力以及对Key集中管理和监控减少了单独使用Guava cache带来内存无法管理的问题。 接下来笔者介绍使用集群本机Cache组件能力的典型案例 自动置备兜底组件。
典型栗子 自动置备兜底组件
兜底是在服务遇到外部依赖异常超时、不可用、数据异常等可能导致服务无可以返回的正常数据时服务通过使用兜底数据提供服务的一种降级行为。自动置备兜底组件使用集群本机cache的本机缓存能力和集群失效能力很方便完成兜底数据置备。在闲鱼的业务场景中使用兜底置备组件的场景非常多例如闲鱼主推商品流等。 兜底自动置备组件原理如下:
使用定时任务scheduleX2定时触发服务集群中的一台服务器执行兜底置备更新tair缓存内容失效本地缓存即失效集群server的本地缓存。当业务请求获取key时会获取tair中最新内容并缓存到本地再次请求直接本地获取。
详细业务请求流程图如下所示自动兜底组件已经在闲鱼的多个业务场景得到使用在断网演练情况下服务端RT延时和成功率有了明显的提升闲鱼主要业务场景的提升效果如下 展望
在集群本机cache组件使用过程中也发现一些问题例如有时候集群本机cache缓存错误的配置需要重启集群或者等待key失效所以需要集群本机cache组件web管理功能。在集群本机cache组件推广中发现有些业务场景的缓存key对应的缓存对象比较大或者缓存key的数量比较多后期按照key使用频率等级考虑对于长期不使用的key存储到本机磁盘上让业务方不关心缓存Key过大可能造成的问题。
作者闲鱼技术——习武
原文链接
本文为阿里云原创内容未经允许不得转载
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925055.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!