面试:电商项目

1.行业概念

  • B2C:商家对客户,京东、当当、发展为B2C平台,天猫
  • B2B:商家对商家,阿里巴巴(不零售,只批发,淘宝很多商家都会去阿里巴巴进货)
  • C2C:个人对个人,淘宝市场,淘宝,QQ商城

2.系统功能

  • 后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能
  • 前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作
  • 会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息
  • 订单系统:提供下单、查询订单、修改订单状态、定时处理订单
  • 搜索系统:提供商品的搜索功能
  • 单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息

3. 项目介绍

3.1 项目的模式

属于B2C平台,商家对客户

3.2 项目的功能

提供B2C的平台,其中自营商品也有商家入住,类似天猫

3.3 项目的架构

采用分布式的系统架构,其中前台系统和单点登录系统采用了集群的方式部署,在后台管理系统中采用了Maven的多模块化的管理,其中采用了水平切分的方式,将pojo、dao、service、web分层开发,这样做的好处就是可以重用性更高
系统之间的通知机制采用MQ的方式,使用RabbitMQ的实现,使用了RabbitMQ的消息订阅模式的消息机制
系统的接口还对JS的跨域做了支持,采用了jsonp的解决方法,在后台接口中扩展了spirng提供的jackson数据转化器实现

3.3 项目的部署

采用了Nginx+tomcat的模式,其中nginx的作用一方面是做反向代理、负载均衡、另一方面是做图片等静态资源的服务器

4.项目服务

  1. 后台管理系统:主要实现商品管理、商品规格参数管理、订单管理、会员管理等、CMS(内容管理系统)等,并且提供了跨域支持
  2. 前台系统:主要是面向用户访问,使用Httpclient和后台系统接口做交互,并且该系统在部署上采用集群的方式
  3. 单点登录系统:主要是提供集中用户登录凭证的集中解决方案,提供和用户信息相关的接口,比如说用户注册、查询等接口
  4. 订单系统:主要是提供和订单相关的业务接口,在订单系统了做了严格的数据校验以及高并发写的支持(这里可以说使用队列实现),并且使用了Quartz定时任务实现对订单的定时扫描,比如说关闭超时未付款的订单
  5. 搜索系统:主要是提供商品的搜索,采用开源企业级系统Solr实现,采用了MQ机制保证了商品数据可以及时同步到solr中
  6. 会员系统:主要是维护用户的信息,已购买订单、优惠券、系统消息、修改密码、绑定手机等功能
  7. 缓存:主要是用Redis实现,并且对Redis做了集群来保证Redis服务的高可用。
  8. 支付系统,主要是负责订单的支付、对账等功能,主要是对接了支付宝的接口

5.常见问题

5.1支付请求超时怎么处理?

重试,一般三次,每次重试都要停顿一会,比如,以第一次停顿1秒,第二次停顿2秒,第三次停顿3秒
给订单标识付款异常状态,并且发出警告(邮件、短信)给相关人员
写个定时任务,定时处理异常状态的订单

5.2支付成功但无数据返回,或者返回按时,怎么处理?

请求了支付宝/微信,但是没有接受到响应,就认为该订单没有支付成功,并且将订单标识为异常状态
使用定时任务处理
做一个对账的任务,实时处理异常状态的订单

5.3项目的金额用什么数据类型存储?

第一种:使用BigDecimal来表示金额(igDecimal在进行入库时, 数据库选择decimal类型, 长度可以自定义, 如18; 小数点我们项目中用的是2, 保留2位小数. 此外还要注意的就是默认值, 一定写成0.00, 不要用默认的NULL, 否则在进行加减排序等操作时, 会带来转换的麻烦)
第二种:数据库里存分为单位的整型数据

5.4项目接口如何保证安全性?

  1. 凭证。 根据用户名或者用户id,结合用户的ip或者设备号,生成一个token。在请求后台,后台获取http的head中的token,校验是否合法(和数据库或者redis中记录的是否一致,在登录或者初始化的时候,存入数据库/redis)
  2. 加密。客户端和服务器都保存一个秘钥,每次传输都加密,服务端根据秘钥解密

客户端:

1、设置一个key(和服务器端相同)

2、根据上述key对请求进行某种加密(加密必须是可逆的,以便服务器端解密)

3、发送请求给服务器

服务器端:

1、设置一个key

2、根据上述的key对请求进行解密(校验成功就是「信任」的客户端发来的数据,否则拒绝响应)

3、处理业务逻辑并产生结果

4、将结果反馈给客户端
  1. 第三方支持。比如spring security-oauth

本文地址:https://blog.csdn.net/xueguchen/article/details/108196349

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐