摘要:
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。 #1、QPS保障目标 一开始就要明确定义QPS保障目标,以此来推算所需的服务、存储资源。可根据历史同期QPS,或者平时峰值的2到3倍估算。 压 阅读全文
摘要:
本文介绍如何应用Canal实现异步、解耦的架构,后续有空再写文章分析Canal原理和源代码。 Canal简介 Canal是用来获取数据库变更的中间件。 伪装自己为MySQL从库,拉取主库binlog并解析、处理。处理结果可发送给MQ,方便其他服务获取数据库变更消息,这一点非常有用。下面介绍一些典型用 阅读全文
摘要:
上一篇文章介绍了MySQL主从同步的原理和应用,本文总结了MySQL主从延迟的原因和解决办法。如果主从延迟过大,会影响到业务,应当采用合适的解决方案。 MySQL主从延迟的表现 先insert或update写入更新操作,再立即select查询,但是得不到最新的结果。 可通过show slave st 阅读全文
摘要:
日常工作中,MySQL数据库是必不可少的存储,其中读写分离基本是标配,而这背后需要MySQL开启主从同步,形成一主一从、或一主多从的架构,掌握主从同步的原理和知道如何实际应用,是一个架构师的必备技能。楼主将在本文做总结,看这一篇就够了。 1、主从同步原理 主从同步架构图(异步同步) 这是最常见的主从 阅读全文
摘要:
按楼主的经验和知识,本文总结了应用开发中的各种存储架构,从易到难,从起步到起飞。如有不对之处,欢迎留言。 1、单库 最简单的初始架构,适用于千万级以下的数据,并发量低的场景。 单库、单表 或单库、多个分表:之所以分表是为了给后续分库做预留准备 2、分库分表、读写分离 最常见的存储架构,适用于十亿级别 阅读全文
摘要:
通常,如果我们要在程序中做一个耗时的操作(例如调用其他外部模块),一般会通过异步的方式执行。使用Spring @Async注解,修饰在需要异步执行的方法上,即可方便地让代码在新线程中异步执行。
对于Spring @Async注解的方法,如何进行异常处理呢?楼主想到了2种方法。方法一:配置AsyncUncaughtExceptionHandler(对于无返回值的方法),
方法二:通过AsyncResult捕获异常(对于有返回值的方法) 阅读全文
摘要:
平时大家的工作一般是基于开发框架进行的(比如Spring MVC,或Spring Boot),所以会有相应特定的异常处理方法,这篇文章要介绍的就是web应用中的异常处理。
想快速解决问题的小伙伴可以只看“解决办法”,想进一步了解细节的小伙伴还可以看“深入剖析”部分。 阅读全文
摘要:
在普通的单线程程序中,捕获异常只需要通过try ... catch ... finally ...代码块就可以了。那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相应的处理呢?
也许有人会觉得,很简单嘛,直接在父线程启动子线程的地方try ... catch一把就可以了,其实这是不对的。楼主想到了3种通用解决办法,分享给大家。 阅读全文