84年的矿泉水

博客园 首页 新随笔 联系 订阅 管理
  83 随笔 :: 0 文章 :: 645 评论 :: 17万 阅读

        近期,老是听到同事说同步的事情。当初还不知道“同步”是怎么一回事情,很想弄一个明白。今天我特地去找了一个在公司年代较久的PM了解情况。终于大概明白了“同步”的缘由。

        原来,我们的系统因为有大量的并发,大量的客户压力,所以大量的采用了缓存技术,缓存技术本身对于大型系统来说是在正常不过了。但是一般的大型系统因为有分布式计算的需要,所以在缓存的使用上就要有些讲究了,特别是本地缓存。因为本地缓存在分布式计算下往往面临着一个回避不了的问题:“同站点集群的应用程序中,不同数据副本”的问题了。秉着有问题就要解决的基本原则,干脆给这些本地缓存加一个沟通机制,使各个本地缓存通过“沟通”来达到状态相同,所以“同步”就出现了。

        “同步”出现的同时,随之而来的也是问题。当“同站点集群”中,机器数量不是很多时,同步还可以维持集群内部的数据同步问题,当同集群下机器数量扩大时,难免会有性能问题。这只是其一。其二,一旦集群中一台机器出现同步问题,那就意味着集群中所有的机器副本可能都有问题,在无法保证副本正确性的情况下,一般我们采取的动作普遍应该是重启了。这样成本就太高了。

       那么既要使用缓存减轻数据库压力,又要能取代“同步”的技术有吗?我相信很多公司肯定需要了和我们一样的问题。也有很多牛人也有很多的方案可供选择。我们先分析一下同步的原因“需要同步,是因为我们没有统一的数据副本,没有统一的数据副本,是因为我们把数据都保存在了本地。找到问题的源头了吧?我们如果把数据副本集中式的管理不就什么事情都没有了吗?是的,问题的核心就在这里。业内最普遍的选择是使用分布式缓存。将数据副本集中,统一的管理。现在的分布式技术相对成熟,有大家熟知的memcache等为代表的内存式缓存,如果你有重启机器cache不丢失的需要,那么tt server也是好的选择之一。(ps:听说微软也在写分布式缓存组件?还不知道这个组件有多少的可用度?不过个人还是喜欢将dc和dfs放到linux上。)

posted on   xvhfeng  阅读(387)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示