什么是股票分仓软件, 实现原理解析2

接上篇博文, 股票分仓交易系统需要实现独立证券账户、产品PB户拆分子账户,每个子账户拥有单独的交易账号及密码,清晰的资金数据和交易记录,与券商一致的操作方式。 实现了更加有效解决因为账户带来的问题,为用户提供更加良好的用户体验。

首先良好的架构与开发模式是保证软件质量与敏捷的基础,我们在这里采用微服务架构,利用CICD工具与K8S使开发,部署,测试,上线自动化. 具体的CICD工具看个人, 我们使用的是阿里云的云效, 截个图大家看看:

    

 

为了统一我们不妨把服务称为子系统, 每个子系统独立部署,再引用下这个代码片段:

type IService interface {
	ICancelOrderService
	IEntrustService
	IFollowService
	IMarketService
	IOpsService
	IOrderService
	IOrderTaskService
	IPositionService
	ISessionService
	ISettleService
	IStatisticsService
	ISysaccService
	ISecurityTraderService
	ISysSettleFlowService
	ISystemService
	ISysTradeService
	ITradeService
	IUserService
	IUserGroupService
	IZixuanService
	IUserRegisterRecordService
	IUserRegister1RecordService
	IUserWithdrawRecordService
	IAgentService
}

其中包含

  * 撤单子系统

     从撤单队列取出撤单任务然后执行撤单操作

  * 委托子系统

    从委托队列取出委托任务然后执行委托操作

    委托管理,查询等

  * 跟单子系统

    从跟单队列取出跟单任务然后执行撤单操作

    跟单管理,查询等

  *  行情子系统

     负责行情推送

  * 运维子系统

     监控,报警等运维功能

  *  报表子系统

     负责报表生成

  *  持仓子系统

     负责此仓管理与查询

  *  Session子系统

     用户session管理

  *  结算子系统

     结算相关管理与查询

  *  统计子系统

     负责统计任务的管理与执行

  *  系统管理子系统

     负责后台接口

  *  券商子系统

     负责券商管理,资金池管理

  *  资金流子系统

     负责资金流管理与查询

  *  用户子系统

     负责用户管理与查询

  *  用户组子系统

     负责用户组管理与查询

  *  自选子系统

     负责自选管理与查询

  *  Agent子系统

     负责Agent的管理与查询

上面的代码片段是Service(服务)的抽象,也是子系统的抽象, 对应的,为了系统的健壮性,我们需要单元测试, 单元测试对覆盖性有要求,覆盖不够全,那么就流于形式了, 但在实际对代码做单元测试时,会发现, Dummy很重要, 下面是Service配套的Dummy代码:

  

type DummyService struct {
	DummyCancelOrderService
	DummyEntrustService
	DummyFollowService
	DummyMarketService
	DummyOpsService
	DummyOrderService
	DummyOrderTaskService
	DummyPositionService
	DummySessionService
	DummySettleService
	DummyStatisticsService
	DummySysaccService
	DummySecurityTraderService
	DummySysSettleFlowService
	DummySystemService
	DummySysTradeService
	DummyTradeService
	DummyUserService
	DummyUserGroupService
	DummyZixuanService
}

具体为啥这么做,搞这么麻烦, 懂得自然懂,为了测试覆盖率,为了软件质量.

下面列一下Service之下,Repository的抽象, Repositiory是对数据的管理, 也就是Service->Repository->Database:

type IRepository interface {
	IAuthRepository
	ICancelOrderRepository
	IEntrustRepository
	IFollowRepository
	IFollowManageRepository
	IFollowTaskRepository
	ILogRepository
	IMainMarketRepository
	IMarketRepository
	IOrderRepository
	IOrderTaskRepository
	IPositionRepository
	IRoleRepository
	ISecurityTraderRepository
	ISetRepository
	ISettleRepository
	ITradeRepository
	IUserRepository
	IUserGroupRepository
	IZixuanRepository
	IEventLogRepository
	IUserRegisterRecordRepository
	IUserRegister1RecordRepository
	IUserWithdrawRecordRepository
	IAgentRepository
}

同时还有对象的Dummy抽象:

type DummyRepository struct {
	DummyAuthRepository
	DummyCancelOrderRepository
	DummyEntrustRepository
	DummyFollowRepository
	DummyFollowManageRepository
	DummyFollowTaskRepository
	DummyLogRepository
	DummyMainMarketRepository
	DummyMarketRepository
	DummyOrderRepository
	DummyOrderTaskRepository
	DummyPositionRepository
	DummyRoleRepository
	DummySecurityTraderRepository
	DummySetRepository
	DummySettleRepository
	DummyTradeRepository
	DummyUserRepository
	DummyUserGroupRepository
	DummyZixuanRepository
	DummyEventLogRepository
	DummyUserRegisterRecordRepository
	DummyUserRegister1RecordRepository
	DummyUserWithdrawRecordRepository
	DummyAgentRepository
}

介绍到这里其实已经把整个系统核心的架构给勾勒出来了,很直接明了,对不对.

下面用图片展示下后台功能, 其实可以与上面的服务抽象做个对应:

 

 

 

 

 

 

 

 

下篇文章会跳到后台,介绍下后台功能的实现方案, 本文介绍的是用golang实现,微服务架构,利用CICD工具,K8S管理服务生命周期。同时,再声明下,单元测试很重要,单元测试覆盖率很重要,虽然代码量会大很多,一切都是为了质量.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_abctee123

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值