• 服务重构总结


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

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

    2. 提升性能

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

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

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

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

  • 相关阅读:
    BEC listen and translation exercise 44
    中译英12
    BEC listen and translation exercise 43
    中译英11
    BEC listen and translation exercise 42
    中译英10
    BEC listen and translation exercise 41
    中译英9
    BEC listen and translation exercise 40
    中译英8
  • 原文地址:https://www.cnblogs.com/benjaming/p/8432579.html
Copyright © 2020-2023  润新知