耦合,是架构中,本来不相干的代码、模块、服务、系统因为某些原因联系在一起,各自独立性差,影响则相互影响,变动则相互变动的一种架构状态。
公司主营业务:成都网站设计、做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出原平免费做网站回馈大家。
作为技术人,每每在心中骂上下游,骂兄弟部门,“这个东西跟我有什么关系?为什么需要我来配合做这个事情?”。明明不应该联动,却要被动配合,就可能有潜在的耦合。
因为公共库,导致相互受影响,就是一个耦合的典型案例。
一个看似“公共”的业务库(*.so *.jar *.dll *.php),很多业务系统都依赖于这个公共库,这个库使得这些系统都耦合在了一起。
画外音:这里的公共库不是指像“字符串操作”这样的不变化的工具库,更多是指通用业务的公共库。
业务1,业务2,业务3都依赖于某一个biz.jar,业务1因为某个需求需要升级biz.jar。上线前,业务1的QA进行了大量的测试,确保无误后,代码发布,发布完线上验证无误后,上线完成,闪人。
突然,bug群里有人反馈,业务2的系统挂了,业务3的系统也挂了,一下炸开了锅:
额,然而,这个理由,好像在大boss那解释不通…
不知道大家工作中会不会遇到这样的场景,因为公共库的耦合,兄弟部门上线,影响的确是你,此时你心里可能就在骂娘了,这帮不靠谱的**队友。
特别的,如果公共库的使用方很广,这个耦合很严重,可能影响很大的范围。
别嘲笑这个方案,谁敢说自己写代码的时候没这么干过?
我们都知道这不是一个好的方案,但不可否认,拷贝之后,代码各自演化,一个地方升级出错,只影响一方,拷贝方只要不动原有代码,至少是不会受影响的。
代码拷贝缺点很多,系统拆分时,万不得已不要使用这个方案。
需要把业务个性的代码拆分到各个业务线自己的工程,自己的业务库里去,例如s1.jar / s2.jar / s3.jar,修改各自的代码,至少不会扩大影响范围。
大家为什么都把代码往一个公共库里塞?
很多时候,因为惰性,一点一点的惰性,日积月累,终成大坑。
这个垂直拆分是一个架构重构的过程,需要各业务方配合。
完成了第一步,业务个性化的代码提取到业务侧上游。
接下来是第二步,业务通用的代码,下沉抽取一层服务,服务对上游提供RPC接口:
最终,达到通过服务RPC调用的方式来解除耦合。
有朋友会问:
都是测试,为何前者能控制影响范围呢?
个性业务代码上浮,共性业务代码服务化下沉,只是一个很小的优化点,但对于公共库解耦却是非常的有效。
希望大家每天收获一点点,这样架构就能美好一点点。
画外音:原来拷贝代码,还有解耦的功效?
【本文为专栏作者“58沈剑”原创稿件,转载请联系原作者】
分享名称:我去,拷贝代码,居然还有这等好处?
本文来源:http://www.shufengxianlan.com/qtweb/news32/60832.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联