性能优化之读写分离一

如题。解释一下我这里所说的读写分离。现在我有一个功能,需要每秒定时从数据库中取数并显示到前台。
一般的逻辑是不是这样的。

这里写图片描述

我先去从数据源取出我要的数据,然后再将这些值显示或赋值到前台。自然可见,每次的时间就是①+②的时间。
然而, 对于大数据或实时性要求很高的系统来说,这样是很有风险和笨拙甚至是达不到要求的。这时候引入了读写分离的概念。我们看下面这张图。

这里写图片描述

也就是说,我定时从数据源去拿数据放到缓存中,前台定时从缓存中取拿数据。 这样对于前台来说,它的时间是不是就减少了去调用WCF的一大环节。
当然既然读写已经分离,自然要 用多线程去控制。同时还有两个关键点是1如何保证数据的实时性 2如何保证共享数据的安全性。

我们来个简单的例子瞅一眼。
用户提出一个这样的需求,要求在界面上显示上千个地方的当前风速,并且每秒都要刷新。而这些风速信息是从硬件保存到服务的。
第一版做出来的时候,从WCF 服务中取数据到更新到界面上总是在2秒左右。且不说不能达到用户需求,就连开发者这体验度也是极速下降。
再后来是这么做的。我建立了一个缓存字典,单独开一个线程去控制写数据的过程(将查询到的数据缓存到数据字典中),然后再单独开一个线程去控制读数据的过程(从数据字典中直接获取当前值)。
看似非常小的改动,实际上却是很多架构师在设计架构时必须要考虑的。至于具体的实现,下一篇博客中会详细的列出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值