15 Jun 2020
提到设计模式,有一个非常有意思的现象: 理论学习中,几乎所有的开发人员都认为它非常有用很重要。 工作实践中,绝大部分开发人员在项目中找不到合适的应用场景。 设计模式学了一遍又一遍,却毫无用武之地。大概设计模式最好的归宿,就是存在程序员的深深的脑海里。 难道设计模式真的没有用了吗? 关于本文 本文目的,通过对设计模式的本质进行探讨剖析,建立起更为高效的认知模式。最终可以灵活运用设计模式到日常工作中,产出稳定、高效、灵活的业务实现。 内容上分为上下两篇,上篇为理论篇,讲述了设计模式一些共识、原则的思考理解等。下篇为实践篇,通过一个完整的系统设计实例,…
Read More
11 Mar 2020
7月份某个平凡的下午,我们突然收到大量的线上告警:应用A的老年代内存使用率大于95%。登陆到监控管理平台可以看到3点半之后该应用的老年代内存使用率一路飙升,直逼100%,接着年轻代也一路上升。 图1 我们查看了一下进来的请求也很平稳,并没有突然爆发,那这个地方的罪魁祸首会是谁呢?为了方便读者接下来的阅读,在介绍这次故障之前,我们首先介绍一下我司的dubbo服务发现的流程。 dubbo服务发现流程 我们的开发人员在使用远程服务的时候首先需要配置一个dubbo xml文件或者在使用的地方加上@Reference,二者都是用来对dubbo消费者引用服务进行一些配置,然后应用在启动的时候会将配置信息转化为一个ReferenceBean对象,并调用createProxy方法创建一个远程服务接口的代理对象。因为我们的消费者并不是和服务端直接地址相连的,…
Read More
11 Mar 2020
一、背景和简介 1.1 背景 电商云有容器应用场景下,第三方外部开发者的应用是托管在我们有赞云平台的容器中的,出于安全以及整个平台稳定性的要求,应用容器执行环境对外部开发者用户都应该是透明黑盒的。而电商云环境下容器应用的运行会直接依赖于电商云平台所提供Apollo、rds、kvds等各种底层中间件能力,这就导致外部开发者想要实现应用代码的本地调试几乎是不现实的。同时考虑到复杂的网络环境和安全稳定性的要求,平台也不可能开放用户直接连到线上容器应用中利用JVM提供的基于JDWP的远程调试功能。外部开发者强烈的调试需求要求我们平台给外部开发者提供一种在电商云环境下的应用的调试能力。 1.2 简介 有赞云应用远程调试工具是一种不侵入应用代码、不打断应用代码执行、尽可能少的影响代码执行效率的前提下,实现线上应用近似本地调试的体验的调试工具。 总体实现思路是通过java字节码增强技术对开发者指定的代码类包进行精准增强,在满足设定的命中条件时对应用程序执行过程进行录制生成快照,…
Read More
14 Feb 2019
一、Druid介绍 Druid 是 MetaMarket 公司研发,专为海量数据集上的做高性能 OLAP (OnLine Analysis Processing)而设计的数据存储和分析系统,目前Druid 已经在Apache基金会下孵化。Druid的主要特性: 交互式查询( Interactive Query ): Druid 的低延迟数据摄取架构允许事件在它们创建后毫秒内查询,因为 Druid 的查询延时通过只读取和扫描有必要的元素被优化。Druid 是列式存储,…
Read More