快捷搜索:

程序员难题给老系统增加新能力试试这招

程序员难题给老系统增加新能力试试这招

  在一些老旧的系统上做一些开发往往不是一件容易的事,特别是有些系统,往往已经是失传已久,加上互联网流动又快,别说开发系统的人已经离职,有时候交接的同学,也离职好几批了。在老旧系统上做改造,是一件吃力不讨好的事情,很多人在这个情况下会选择重构,但重构的时候往往机关重重,一不小心就踩坑,造成线上故障。

  举个简单的例子,我们有一些陈年的老系统,已经跑了有一段时间了,整个项目已经进入了维护的阶段,很少需要进行新功能的开发。虽然是老旧的系统,但是还是有不少的流量,偶尔还是会过载引起一些用户的投诉,但是老的框架的监控系统并不好用,也没有什么限流的功能,需要对老系统进行改造。

  最彻底的方法,当然是把旧的代码迁移到我们新的框架上,但是这个工作量巨大,更重要的是,当年负责系统的人基本已经离职了,要重构的话,就必须耗费巨大的人力物力去熟悉旧逻辑,对于这个已经进入维护阶段的系统asp代码的逻辑思维方式有哪些类型分类,显然是投入大,产出小,还可能引出其他问题。

  这里我们介绍下一种设计模式,边车模式。相信大家在游戏中或者一些老电影会看过下面这样的一种车,在一辆摩托车旁边在挂一个座位,一个摩托车就变成了3人摩托,我们也称之为边车模式。边车模式的核心思想,就是将功能与业务逻辑进行分离,让开发者可以更加专注于业务的实现。有时候,它也称之为搭档模式或者伴侣模式。

  像监控、日志、限流、熔断asp技术、服务注册、协议转换的功能,大多都是大同小异,假如我们可以把他们变成一个Agent,那么就可以在业务逻辑不用修改的情况下,去实现我们想要的功能。

  在原有的应用基础上,我们增加一个代理,将外部调用先经过Sidecar再由Sidecar去调用真正的服务。举个例子,原本的系统可能是C框架,新的系统是J框架,我们可能很难把C框架直接改成J框架。但是,我们可以在原有的服务上部署一个J框架的Sidecar,负责与J框架通信,同时通过信号或者共享内存的方式,与本地的C框架通信。这样子,我们把监控的代码放在新部署的Sidecar上,就可以在不改变原有的代码的情况下,轻松为旧代码增加上监控功能。

  那么Sidercar适合什么样的场景呢?例如上面例子所示,我们需要对老旧模块进行改造与扩展。或者是系统由不同的语言混合出来的分布式服务系统asp代码大全文库。无论是哪种情况,边车模式虽然消耗了较多的资源,但却不会侵入原有的代码逻辑,从而将业务与功能分开,方便开发人员的维护。

您可能还会对下面的文章感兴趣: