大数据量下的订单架构设计方案

终于找到丢了的CSDN账号了= =,趁最近找工作没啥事写写博客吧..顺便回顾下最近的项目

分库分表

存储大量的订单最长想到的就是分库分表了,这应该也是最为常见的手段.

最简单的策略是根据用户ID去分表,比如取用户的ID做模运算(用户ID % 表数量 or 用户ID % 库数量)

我们使用的 sharding-jdbc 进行分库分表操作,sharding-jdbc 它定位为轻量级Java框架,在Java的JDBC层提供的额外服务.它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架.就算程序写完在上线之前都很容易加入到系统中.

冷热数据分库

        当然数据量非常巨大的时候分库也不能满足需求的时候就可以把数据分为冷热数据了...什么是冷热数据不明白?那烧壶水就明白了吧..刚烧的水是热的过阵子凉了就是冷的.这只是举个小例子.其实是较为常用的数据是热数据,反之冷数据.在订单中用户一般只会查看最近的数据而一般不会查看之前的数据...跑题了..对于订单这类数据可以将近期的数据存到DB中定期将以前的数据放入HDFS系统中(使用Impala Hive等等),关键字查询的数据可以异构到solr索引系统中,这样用户做查询的时候可以查询出完整的数据.

数据库拆分

        一般来说数据不会单单存在一个表中,比如订单不会只存在订单这一张表,其中有些信息可能会分开存储(比如我用户看到订单可能其中有商户的信息,我商户在查询的时候往往是不会查看商户信息..自己看自己有啥用?).当查询的时候需要大量的join,当表很大的时候join是非常耗时和资源的.这时候可以将数据根据用户维度和需求分别存入不同的库中,比如我们商城的订单根据用户和商户的需求分别存入不同的表和库中.具体操作也很简单,正常的下单后正常存入DB中然后发送队列信息,由消费程序重构数据分别存入不同的表和库中.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是一道系统架构设计师题目: 你正在设计一个在线购物平台的系统架构,该平台需要支持高并发访问、快速响应、高可用性和可扩展性。请设计一个可行的系统架构,并说明你所做的决策及其原因。同时,请考虑以下几个方面: 1. 用户登录、注册和鉴权 2. 商品展示与搜索 3. 购物车和订单管理 4. 支付与物流 期望你能够详细说明你所设计的系统架构,并解释你为什么做出这些决策。 ### 回答2: 题目:设计一个在线购物系统的架构。 回答: 设计在线购物系统的架构需要考虑系统的可扩展性、性能、安全性和可维护性等方面。以下是简要的架构设计方案: 1. 前端层:采用现代化的Web前端技术,如HTML5、CSS3和JavaScript等,实现用户界面与交互。可以使用流行的前端框架,如React或Vue.js。 2. 应用层:采用分布式微服务架构,将核心业务功能拆分为独立的服务,如用户管理服务、商品管理服务、订单管理服务等。服务之间通过轻级的通信协议进行通信,如RESTful API或消息队列。 3. 后端层:使用可靠的后端技术,如Java、Python或Node.js等,实现业务逻辑和数据处理。可以采用业界流行的框架,如Spring Boot或Django。 4. 数据库层:选择适合业务需求的数据库,如关系型数据库(如MySQL或PostgreSQL)或NoSQL数据库(如MongoDB或Redis)。可以采用主从复制或分片技术来提高数据库的性能和可用性。 5. 缓存层:使用缓存技术来提高系统的性能和响应速度,如使用Redis作为缓存数据库。将热门数据缓存在内存中,减轻数据库的读写压力。 6. 安全层:采用安全性能证书(SSL/TLS)保护用户数据在传输过程中的安全。对用户身份认证和授权进行有效管理,并通过防火墙、入侵检测和数据加密等技术保护系统免受恶意攻击。 7. 高可用层:通过负载均衡技术实现系统的高可用性,如使用反向代理服务器(如Nginx)进行请求的分发和负载均衡,以及部署多个服务提供节点进行容错和故障恢复。 8. 监控层:部署监控系统对系统的各个组件进行监控和报警,及时发现和解决潜在的性能瓶颈或故障,确保系统稳定可靠。 以上是基本的在线购物系统架构设计方案,具体实现还需根据实际需求进行调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值