Skip to main content

David LiuAbout 5 min

(可围绕以下两点进行评价:1.是否给出解决方案,并意识到方案的局限性;2.是否主动提出并清晰表达观点。)

小组开会发现的问题总结下来,放到存在问题那一栏里面

这周总结需求分析的时候存在的问题

下周设计部分存在的问题

要写出来:提出问题、讨论、解决问题

  1. 如果中心仓库只有一个,则很难为各地均提供快速的物流服务。

我设计出了分布式的中心库房,即分区中心库房。具体如华北库房、华中库房分别优先进行其各自区域内订单的物流配送,以提升配送的速度,同时减少货物集中带来的仓储的压力。

  1. 商品在中心库房有货时可以很快配送给用户,但是中心库房缺货时,需要先从供货商配送到中心库房再从中心库房给用户配货造成物流资源和时间成本上的浪费

因此我设计出了加急订单和常规订单两种下单机制。在用户下单时,如果存在区域中心仓库有足够的该商品,则可以下加急订单,系统将从区域中心仓库向用户调货。否则,用户只能选择常规订单,系统将通知商家匹配物流公司向用户进行配送。

  1. 用户、配送员都需要从客户端登录,如果要做统一认证登录的话,一张用户表无法满足同时存储用户和配送员信息的需求

因此我设计出了在用户表上加一个字段user_type,根据这个type来决定是普通用户还是配送员。同时配送员特有的信息如属于那个分站、工作时段等由一个弱实体集courier_info来存储,该表有一个外键user_id来绑定到user表上改配送员的基本信息。

后台管理系统中,有超级管理员、手动调度员、产品管理员、配送管理员等职能角色,如何管理他们的权限和可以使用的接口方法

系统扩展性问题:随着业务的增长和发展,系统需要具备良好的扩展性,能够应对未来的需求变化和用户增加。解决方案是采用可扩展的架构设计,如微服务架构或分布式系统架构,将系统拆分为独立的服务模块,并使用合适的通信机制进行集成。然而,方案的局限性在于增加了系统的复杂性和维护成本,需要对扩展性与复杂性之间进行权衡。

技术选型与兼容性问题:在系统设计阶段,需要选择合适的技术和工具来支持系统实现。然而,不同技术之间可能存在兼容性问题,或者某些技术在特定场景下性能不佳。解决方案是进行技术评估和验证,选择兼容性良好、性能稳定的技术,并在必要时进行定制化开发。然而,方案的局限性在于技术的快速发展和变化,可能需要在后续阶段进行技术更新和调整。

安全性与隐私保护问题:物流配送系统涉及到大量的敏感数据和交易信息,安全性和隐私保护是至关重要的。解决方案是采用安全的网络协议和加密算法,确保数据的机密性和完整性。同时,采取访问控制和权限管理的措施,限制用户的访问权限。然而,方案的局限性在于无法完全消除安全风险,需要定期进行安全性评估和漏洞修补。

本系统一共47张表,都存在同一个数据库造成存储压力过大

解决方案:根据表之间的关系和对应业务逻辑的职能进行分库分表,分为acl、order、product、sys和user共五个数据库,分别存储对应部分的表,各个微服务只连接各自对应的数据库,这样可以有效降低耦合度和数据库存储的压力

订单id是数据库自增id字段保证了唯一性和递增型,但是安全性不够好,根据一个订单号可以轻易猜到前面的订单号存在,就可能会造成泄漏的问题。

解决方案:我重新设计将订单号和订单id分开处理,用户无法看到订单的id,但是可以看到系统提供的订单号,订单号是采用snowflake算法生成的id,可以保证唯一性,同时安全性更好攻击者难以破解规律找到其他的订单号。

用户的密码直接明文存储,在系统数据库泄漏时,用户的隐私将受到巨大损害

解决方案:MD5加上一个固定的私钥

MD5加上一个固定的私钥情况下,输入相同的两个串加密结果一样,还是可能会被彩虹表攻击破解。

解决方案:MD5加上一个固定的私钥再加上随机加盐,