背景
2016年秋,部门计划将移动广告引擎和新的移动DSP引擎做架构融合。保留原来的移动广告引擎的业务逻辑,将其移植到新的框架当中去。
新框架有很多特点,其中之一是所有模块都使用了多线程模型而老的移动广告引擎的一个模块则使用了多进程模型。
改造注意点
- 临界资源的共享
- 单例资源
- 内存的共享
改造的陷阱
改造方法
在多进程模型中,单例模式可以安全地被使用。但是在多线程环境中,则要考虑多线程都要抢占单例类,单例类会成为瓶颈,而且还有可能出现线程不安全的问题。
解决方法:
将多进程的单例类,改造成进程体里多例模式,但是在每个线程体内单例。具体方法参考线程安全的单例模式
改造结果
改造成功,并且顺利上线,正常服务。
改造后带来的好处和坏处
- 性能的提升
- 内存