性能优化之读写分离一

来源:互联网 发布:apache jmeter 下载 编辑:程序博客网 时间:2024/05/16 12:35

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

这里写图片描述

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

这里写图片描述

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

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

0 0
原创粉丝点击