zoukankan      html  css  js  c++  java
  • 服务重构总结

    最近重构了ID服务,顺便来写个总结。重构的原因无非是两种:

    1. 新增需求不方便,可能会对原有的服务造成不确定的影响

    2. 提升性能

    我们现在的服务开始设计的时候并没有考虑很多,当初只是简单的想生成唯一的订单号就行了,所以并没有进行很好的设计。后来又增加了退款单号,这个也很简单,请求里加个cmd,服务里用if判断下就行了。然后就又增加了账户号、账户流水号、银行流水号等,这个时候就不能再简单的用if...else...来处理了,这些请求耦合在一起导致新增需求很麻烦,且容易影响其他的功能。重构就是一个明智的选择。

    经过两天的考虑我决定采用策略模式+代理模式+单例模式来改造这个服务,关系如下:

    简单介绍下:先定义接口基类IProtocolTask,然后为每种类型的请求创建一个继承自IProtocolTask的子类,当系统启动时每个任务类和一个cmd关联并注册进CCommonTaskManager类中。请求到达时根据调用GetTask(cmd)返回IProtocolTask*,然后多态调用Excute()。新增功能时只需继承IProtocolTask类,在Excute()虚函数中实现自己的业务,和一个cmd关联注册进CCommonTaskManager即可。最后的单例模式可以让每个请求到达时无需创建新的对象,节约系统资源。

    用压测脚本测试后,qps是之前性能的两倍。

  • 相关阅读:
    mysql用户的管理
    openpyxl对excel实现字母与数字之间的转换
    字体识别
    python中os模块简单用法
    python合成语音
    python中openpyxl修改excel中字体及读取字体
    观察者模式-C#实现
    工厂模式-C#改良实现
    建造者模式-C#改良实现
    996 不是福气,努力也未必成功(转)
  • 原文地址:https://www.cnblogs.com/benjaming/p/8432579.html
Copyright © 2011-2022 走看看