做民宿要给网站多少合同钱,joomla建站教程,wordpress 导航栏代码,qq游戏做任务领铜板网站前言 最近一年半多一直在做一个CMS项目#xff0c;做了快两年了也没有上线#xff0c;而且开发还走了不少#xff0c;其中有不少原因是因为开发中频繁改动需求导致开发人员失去耐心#xff0c;但是其中还有一个重要的原因就是架构设计的不好#xff0c;导致很多服务的边界…前言 最近一年半多一直在做一个CMS项目做了快两年了也没有上线而且开发还走了不少其中有不少原因是因为开发中频繁改动需求导致开发人员失去耐心但是其中还有一个重要的原因就是架构设计的不好导致很多服务的边界很模糊耦合性强改一处需求从而导致迁一发动全身的恶果下面复盘下这个项目中架构设计的坑从中吸取教训 架构图 首先这个项目采用的SOA的架构分为多媒体、广告、任务调度、核心这四个模块其中核心这个模块定义的很模糊把认证、授权、站群全部放在的核心模块中这样导致核心模块成了一个臃肿的单体服务。 多媒体模块负责图片、视频、文件资源的上传下载需要视频转码、图片处理时则调用task模块负责task处理完成后再通过mq回调core通知任务处理成功。 广告模块负责接入大数据便签通过大数据推送的人物画像标签动态生成广告实现千人千页广告效果广告模块的理想状态下的功能实质上有各种原因没有实现‘千人千页’的效果后面会具体说下原因 调度模块负责处理多媒体的图片、视频站群的发布任务这个模块的服务边界很模糊导致调度模块过多耦合业务最终成了一个谁也说不清楚的烂摊子服务…… 核心模块这个模块同样存在服务边界模糊的问题核心模块里面有包含了用户模块、站群站点模块、OpenApi模块最终结果就是一个四不像的单体应用…… 通过上面的描述其实发现一最大的问题就是模块之间服务边界很模糊大家谁也说不清楚这个模块到底是一个工具模块调度模块还是一个业务模块开发者不清楚那些逻辑要写在core里面那些逻辑是要交给task里面再加上开发者的水平也参差不齐对业务和架构理解不透彻架构师也没有及时的codeview或者说架构师自己对模块之间的服务边界问题也很模糊最终的结果就是大家没有统一的开发原则自己的代码想写在那个模块就写到哪个模块中时间长了连开发者自己也不清楚一个业务到底有哪个几个模块参与了或者自己捋不清楚自己负责的业务线当然这里还有一种可能就是模块之间的服务边界很模糊有些开发者可能为了偷懒强行把一个业务部分逻辑放在其他模块中让别人替自己实现美其曰这是按照模块开发的思想其实这本质是一种不负责的表现。 优化后的架构 优化后的架构还是SOA架构把核心模块拆分成了用户模块、站群站点模块调度模块里面的业务逻辑迁移到业务层中从此调度模块不再负责业务处理只负责任务的调度所有的业务代码全部放在业务层中生命周期也全部在业务层中。 这里强调一下之前的调度模块里面有业务代码所有有些业务的生命周期是跨模块的这样会导致业务线不完整或者耦合很大。调整后的调度模块只服务调度任务任务的的具体实现是由发起调度任务的开发者实现即谁调度谁实现这样的好处有两点一是调度模块由业务模块转变成了工具模块解耦合二是业务代码的生命周期完全在业务层中不会再出现一个业务线开发者自己都捋不清楚的情况发生即谁开发谁掌握代码的生命周期。具体调度模块怎么调度任务这里有很很多的实现方式rest、rpc都可以实现完全没有必要通过MQ来调度任务。 最后吐个槽一个合格的架构师一定是一直保持在一线码代码的高级工程师如果只会ppt不能技术落地这样会害死人的…… 转载于:https://www.cnblogs.com/salvinlee/p/10986460.html