摘要: 如何确保高并发下网站的高可用性?基本思路:解耦、集群、负载均衡、按需扩展、缓存、动静分离、读写分离、分库分表。 阅读全文
posted @ 2017-05-01 21:24 倒骑的驴 阅读(1504) 评论(1) 推荐(0) 编辑
摘要: 线上故障通常是指大规模的影响线上服务可用性的问题或者事件,通俗点讲就是:掉‘坑’里了,这个‘坑’就是线上故障!线上故障的处理过程可以形象地表达为:‘踩坑’、‘跳坑’、‘填坑’、‘避坑’。 线上故障的处理不仅是一项技术活,更是对技术人员/技术团队反应能力、决策能力、判定能力、组织能力的考验。面对突发的生产故障,需要快速定位问题,找到解决方案,快速实施解决方案并不是一件容易的事情。本文主要包括如下内容:线上故障处理的目标、思路、步骤、基础设施。 阅读全文
posted @ 2017-05-01 17:10 倒骑的驴 阅读(12508) 评论(17) 推荐(28) 编辑
摘要: 系统背景介绍 用户系统负责用户生命周期管理,包括注册、登陆、用户信息获取等,其作为基础服务只提供内网服务,简称为service;application组件包装service的服务对app渠道提供服务;service前面使用F5作为负载均衡器。 架构简图如下: 线上故障事件描述 上午9点50分,监控系 阅读全文
posted @ 2017-05-01 17:08 倒骑的驴 阅读(3196) 评论(3) 推荐(1) 编辑
摘要: 概述 java cocurrent包提供了很多并发容器,在提供并发控制的前提下,通过优化,提升性能。本文主要讨论常见的并发容器的实现机制和绝妙之处,但并不会对所有实现细节面面俱到。 为什么JUC需要提供并发容器? java collection framework提供了丰富的容器,有map、list 阅读全文
posted @ 2017-04-23 22:11 倒骑的驴 阅读(9064) 评论(0) 推荐(1) 编辑
摘要: java cocurrent package中的Excutor体系,主要提供了实时和定时(含定频)的Excutor,支持单个线程,也支持线程池;他们的职责在于将任务执行者和任务发布者解耦。 实时任务处理可以当着定时任务的特例,ScheduledThreadPoolExecutor也提供了支持实时任务的api。线程池创建通常使用Excutors搞定,典型的线程池:单个、固定大小线程池、可调节大小线程池,自定义线程池时,需要调配好queue大小和线程池大小的关系。使用submit api将任务提交给线程池,根据实际场景,通过对应的Future接口实现类的api对任务执行情况进行监控,必要时可以将执行中的任务停止。 使用流程:创建线程池,创建任务,提交任务,跟踪并处理任务结果。 阅读全文
posted @ 2017-04-23 12:32 倒骑的驴 阅读(1648) 评论(0) 推荐(1) 编辑
摘要: BlockingQueue顾名思义‘阻塞的队列’,是指在:队列的读取行为被阻塞直到队列不为空时,队列的写入行为被阻塞直到队列不满时。BlockingQueue是java.util.concurrent工具包(jdk1.5版本引入,作者:Doug Lea)的重要基础工具,在ThreadPoolExcutor及tomcat等服务端容器中都有使用到。从代码层面剖析BlockingQueue的实现细节。 阅读全文
posted @ 2017-04-22 11:51 倒骑的驴 阅读(795) 评论(0) 推荐(0) 编辑