适用项目:线上商品的销售与运营平台
复习状态:未复习
面向服务架构 SOA 是一种以服务为核心的软件架构风格,它将业务功能封装为可独立部署、可复用的服务,通过服务注册、发现和调用机制实现服务之间的松耦合协作。SOA 的核心组件包括服务提供者、服务请求者和服务注册中心,三者通过服务契约和标准化的通信协议完成交互。线上商品的销售与运营平台涉及商品管理、订单交易、库存扣减、优惠券核销、支付结算、会员积分和经营报表等多个业务领域,如果各模块紧耦合,任一功能的修改或扩展都会牵动整体系统。因此,在本项目中,我采用 SOA 架构,围绕服务划分与注册、服务通信与总线集成、服务组合与治理三个方面进行设计,提升系统的灵活性和复用能力。
首先,我从服务划分与注册入手,构建了平台的服务基础。服务划分的核心是按照业务领域将系统拆分为若干个职责内聚、接口明确的服务,并通过注册中心实现服务的统一管理。在本项目中,我将平台划分为商品服务、订单服务、库存服务、营销服务、会员服务、支付服务和数据分析服务等 7 个核心服务,每个服务面向一个业务领域,拥有独立的数据存储和接口定义。例如,订单服务对外暴露订单创建、订单查询、订单取消和订单状态变更接口,库存服务对外暴露库存查询、库存锁定和库存释放接口。所有服务启动时自动向注册中心上报自身地址和健康状态,服务请求者通过注册中心查找目标服务位置。通过服务划分与注册,平台服务边界清晰,各服务可独立升级和部署,新增一个业务功能的上线时间从原来修改单体系统的 3 天缩短到 6 小时。
其次,我从服务通信与集成入手,实现了服务之间的高效协作。服务通信的重点是选择合适的交互方式和集成总线,确保服务之间能够可靠地请求和响应。在本项目中,我采用企业服务总线承担服务之间的消息路由、协议转换和流程编排职责。同步调用场景如订单创建时的库存校验和金额计算,服务请求者通过 ESB 以 REST 协议同步调用目标服务;异步调用场景如支付回调后的订单状态更新、积分发放和消息通知,服务提供者通过 ESB 发布事件消息,相关服务订阅后异步消费。同时,ESB 还负责协议适配和消息格式转换,确保不同技术栈的服务能够正常交互。通过 ESB 集成,平台服务间调用成功率达到了 99.9% 以上,消息路由延迟控制在 50 毫秒以内,服务替换和扩展无需改动其他服务代码。
最后,我从服务组合与治理入手,保障了平台服务的高可靠和可管理。服务组合是将多个底层服务按业务流程编排为更粗粒度的业务服务,服务治理则是通过监控、限流、熔断和版本管理保障服务运行质量。在本项目中,我通过 ESB 的流程引擎对下单、退款和营销活动等关键场景进行了服务编排。例如在用户下单场景中,流程引擎依次调用商品服务校验商品状态、营销服务计算优惠金额、库存服务锁定库存、订单服务生成订单;当库存服务不可用时,流程引擎触发熔断机制返回友好提示,避免上游请求堆积。同时,我对各服务设置了调用次数上限和超时阈值,当某个服务错误率超过 10% 时自动触发告警并切换到备选逻辑。通过服务组合与治理,核心交易流程的编排成功率达到 99% 以上,服务异常熔断后平均恢复时间控制在 2 分钟以内,平台服务运行稳定性明显提升。