随着互联网电商项目的发展,愈来愈多的购物平台等都使用SOA分布式来做为系统主要架构。为何有那么多的电商项目都选择SOA做为系统架构呢?这确定是存在必定缘由的,由于电商行业的项目它大概存在如下特色:分布式、高并发、高可用、集群、负载均衡、海量数据、系统安全等一系列问题都须要解决,那么我所了解的SOA分布式架构它正好基本能很好的解决这些问题。redis
首先我给你们介绍如下电商项目中一些常见的运营模式:数据库
今天我就以近期开发过的一个电商项目为例,来分享一点我所理解的SOA结构开发流程,但愿可以帮到你们,若有不妥,请指正。安全
一:首先说说项目整体架构的流程服务器
一、该项目采用SOA分布式架构,在此基础上咱们又实现了面向服务的思想,中间件使用阿里巴巴出品的Dubbo服务治理的核心框架来管理整个系统的服务,而且选择zookeeper来做为注册中心;网络
二、你们都知道,一个电商项目是没法避免如何处理海量图片资源的问题,因此这里由使用一款用C语言开发的开源分布式文件系统FastDFS做为图片服务器,专门用于存储系统中全部的商品图片,广告图片等资源,而且经过Nginx反向服务器来访问图片服务器上的资源;架构
三、接着说说商品搜索功能这块的架构,这里咱们将在Linux系统上搭建了solr集群并实现了集群分片,安装了IKAnalyzer中文分词器,定义业务域等一系列部署工做,搭建了专门的搜索子系统,使用solr技术实现了商品搜索功能;
并发
四、商品详情页这块,采用freemarker页面静态化技术,将实现了对全部商品可以生成HTML详情页面,当用户访问网站搜索商品查看商品详情数据时,咱们这里是动态生成详情页,而不是提早设计好,这样即便稍微慢点,也无所谓;负载均衡
五、优化一个电商项目是开发中必不可少的工做,这时通过分析,将采用非关系型数据库redis做为主角搭建了redis集群,将商城首页的广告位数据、页脚数据和将天天访问最多的定时广告数据都存储在redis集群中,用空间换时间来提高网站数据的展现速度;框架
六、互联网项目不一样于传统项目,对网站的登陆用户的安全性校验有很是高的要求,这里采用单点登陆技术,来实现用户的登陆和注册功能,这里我没有参与开发,可是对单点登陆有必定的了解,下面进行分享。分布式
二:业务这块就没啥可说的,都是电商购物平台,你们可能都有在相似的购物平台上购物的经验,咱们项目的业务主线也是购物流程,至于后台管理系统也就是对各个管理模块的维护;可是咱们又新添加了商城倒计时活动和商品秒杀活动,下面具体来讲说这俩个新颖的功能吧。
一、商城倒计时活动实现大概步骤(能够做为参考):
(1)、首先肯定一个基准时间,可使用SQL语句从数据库获取一个时间SELECT NOW();
(2)、活动开始的时间是固定的,使用活动开始的时间-基准时间能够计算出一个秒为单位的时间值;
(3)、而后使用redis数据库,采用string类型的数据类型来存储一个key(值为活动开始的时间),必定设置key的过时时间,使用命令"expire key 10"假设有效时间为10秒;
(4)、展现商城页面的时候,取出存储的活动开始时间,使用js倒计时功能;
(5)、一旦存储的key失效,则说明活动结束(说明一点,须要在活动的逻辑中,先判断活动是否已经开始)。
二、商城商品的秒杀活动实现的大概步骤(能够做为参考):
(1)、首先把秒杀活动的商品数量存放到redis中;
(2)、秒杀活动开始时,使用decr命令对商品数量减1,若是不是负数,则说明抢到礼物;
(3)、一旦返回的商品数量为0,则说明商品已经售完,活动结束。
三:项目部署总结
(项目架构详解图)
(网络拓扑图)
部署总结后期更新!!!