配合筑材网的服务拆分,筑材金融独立为单独的 服务,采用dubbo的框架和zookeeper的筑材,进行拆分,然后把筑材网所有相关的支付订单模块也独立到金融服务,在不改变原有大架构的情况下重新设计优化订单相关业务的表和业务接口。
将筑材金融独立为单独的服务,采用Dubbo框架和Zookeeper进行服务拆分,然后将筑材网的支付订单模块也独立到金融服务中:
服务拆分:
技术选型: 选择Dubbo作为服务框架,Zookeeper作为服务注册中心。
服务定义: 定义筑材金融服务接口,包括金融业务和支付订单相关的接口。
服务实现: 实现筑材金融服务的业务逻辑,包括支付订单相关的处理。
数据库设计优化:
业务表优化: 重新设计和优化订单相关的数据库表结构,确保表的设计符合金融服务的需求,包括订单的存储、查询、更新等操作。
索引优化: 根据订单查询的频率,添加适当的索引以提高查询效率。
业务接口设计优化:
优化后的设计遵循单一职责原则,将订单表中与订单不相关的快递部分信息独立出去,形成了更为模块化的结构。
重新定义一个新的服务接口,专门处理与快递相关的操作,例如查询快递状态、更新快递信息等。
使用Lambda表达式优化集合内数据操作,使得代码更为简洁、可读,并能够充分发挥函数式编程的优势。
接口默认方法:
利用接口默认方法,将银行接口调用的一些通用逻辑提取到接口默认实现中,以降低重复代码的出现。
重新设计银行任务打印日志系统。
分布式锁: 利用Zookeeper的分布式锁确保在多台服务器上运行的任务不会出现冲突。一台服务器获取锁后,其他服务器会等待,确保同一时刻只有一个服务器执行相关任务。
异步线程: 为了应对银行接口可能导致任务长时间占用资源的情况,异步线程可以在后台处理银行接口调用,而不影响主线程的执行。这样可以避免其他任务因为等待线程结束而被中断的问题。