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是之前性能的两倍。

  • 相关阅读:
    VOA 转
    DataTable中动态的赋值 转
    哈希表 转
    利用Hook技术实现键盘监控 转
    sql 里的 order by 和 group by 的区别 转
    DES加密算法 转
    Windows的消息机制 转
    “赢在中国”点评人给80后年轻人的30个忠告 转
    ASCII码对照表 转
    以太网 转
  • 原文地址:https://www.cnblogs.com/benjaming/p/8432579.html
Copyright © 2011-2022 走看看