加入收藏 | 设为首页 | 会员中心 | 我要投稿 四平站长网 (https://www.0434zz.com.cn/)- 云服务器、对象存储、基础存储、视频终端、数据应用!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

无人机与农业相辅相成

发布时间:2021-02-18 11:12:23 所属栏目:外闻 来源:互联网
导读:在mysql应用中,最让人揪心的就是同步延迟问题,原因是多方面的,但带来的负面影响非常大,甚至都无法解释。 mysql作为最流行的关系型数据库之一,它的强项可能并不是速度,并行复制能力也并不强,所以如果你要重度依赖mysql,那么必须意识到同步延迟可能是

在mysql应用中,最让人揪心的就是同步延迟问题,原因是多方面的,但带来的负面影响非常大,甚至都无法解释。

mysql作为最流行的关系型数据库之一,它的强项可能并不是速度,并行复制能力也并不强,所以如果你要重度依赖mysql,那么必须意识到同步延迟可能是常态。

那么如何尽量去避免呢?

1:应用解决方案

在开发中,假设延迟是存在的,对于核心业务必须要严谨,比如说文章队列,如果获取不到从库文章信息,是不是再一次投递队列,或者从主库查询,尽量减少延迟带来的影响,当然设计的复杂度就增加了。

如果你重度依赖缓存,那么如何避免缓存信息是脏的,这更难解决。

2:减负

mysql无法是增删改查,要保持数据量可控,我最喜欢在不影响应用的前提下删除数据,看似很low的解决方案其实很管用。

尽量减少慢查询,以前同步延迟都是查询带来的,但这次却不是,而是队列大量更新和插入带来的,比如说每天全量推送用户,长时间高并发写,同步不可避免,所以一定要控制并发写入和更新量。

3:选择合适的解决方案

mysql尽量作为存储使用,因为大规模的查询和更新并不是它的优势,所以非核心业务,可以考虑redis和mongodb,尤其是队列解决方案,不建议使用mysql,或者说有多套解决方案。

4:拆分

受限于mysql本身机制,可以通过升级mysql版本,提升并行复制能力。或者根据不同的场景,使用多个库,甚至多个mysql实例,避免核心服务受影响。

一方面服务能够解耦,另外也方便扩展。这也是分而治之的解决思路之一。

5:负载均衡

有的时候发现某些从库不延迟,就一台延迟,可以通过策略,摘除这台从库,但必须意识到,这只是临时解决方案,出现大量的延迟,说明问题可能已经比较严重了。

目前规模还小,如果大了呢?那时候可能是灾难性的。

 

这段程序的输出与上面中完全相同,其实两者在实际执行中的区别也不大,虽然前者调用了submit(Callable task)而后者调用了submit(Runnable task),但最终都通过execute(futuretask)来把任务加入线程池中。

总结

上面大费周章其实只是尽可能细致地讲清楚了 Callable 中的任务是如何执行的,总结起来就是:

线程池中,submit() 方法实际上将 Callable 封装在 FutureTask 中,将其作为 Runnable 的子类传给 execute()真正执行;

FutureTask 在 run() 中调用 Callable 对象的 call() 方法并接收返回值或捕获异常保存在Object outcome中,同时管理执行过程中的状态state;

FutureTask 同时作为 Future 的子类,通过 get() 返回任务的执行结果,若未执行完成则通过等待队列进行阻塞等待完成;

FutureTask 作为一个 Runnable 的 Future,其中最重要的两个方法如下。


 

(编辑:四平站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读