产生背景
业务复杂、需求不断、人员变更快、问题多等诸多原因导致项目分层混乱,服务技术是基于PaaS开发的服务定义Jstorm Topo的一个分布式服务。
存在问题
- 服务初始化混乱,如有通过PostConstruct注解初始化,有通过Spout的open初始化,有通过Bolt的prepare方法初始化,有通过其他一些初始化方法初始化的;
- 服务没有按需初始化,例如Spout、Bolt需要的依赖数据是不一样的,分布式服务,需要根据业务需求按需初始化;
- 开发新需求时,很难决定类建在何处更合适,在扩展旧的需求时,经常需要稍等重构很多的代码,重复代码极其多;
- 缓存使用混乱,无法统计项目使用的堆内、堆外内存,且随意创建缓存,导致服务运行期间产生大量OOM;
- 设计模式意识淡薄,例如在写文件时,代码套用在一起,用if-else去分流逻辑,慢慢积累下来,项目硬编码极其多,往往在做新需求时才发现现有框架已不支持,导致需求完成时间骤增;
- 线程乱用,随意创建线程,运行期间导致线程数量暴增,在大容量下导致IO问题,为定位问题造成了很大的困难。
为什么需要好的分层设计
- 节省内存资源,按需初始化缓存,缩短服务初始化时间;
- 需求扩展时更得心应手,让新手书写功能时,知道如何更好去写代码;
- 更好的管理业务,不能一写需求牵一发而动全身;
- 好的分层设计