前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >互联网项目架构之基于服务的分布式架构

互联网项目架构之基于服务的分布式架构

作者头像
赵小忠
发布2018-01-24 19:19:05
1.3K0
发布2018-01-24 19:19:05
举报
文章被收录于专栏:禁心尽力禁心尽力

  随着互联网电商项目的发展,越来越多的购物平台等都使用SOA分布式来作为系统主要架构。为什么有那么多的电商项目都选择SOA作为系统架构呢?这肯定是存在一定原因的,因为电商行业的项目它大概存在以下特点:分布式、高并发、高可用、集群、负载均衡、海量数据、系统安全等一系列问题都需要解决,那么我所了解的SOA分布式架构它正好基本能很好的解决这些问题。

  首先我给大家介绍以下电商项目中一些常见的运营模式:

今天我就以近期开发过的一个电商项目为例,来分享一点我所理解的SOA结构开发流程,希望能够帮到大家,如有不妥,请指正。

一:首先说说项目总体架构的流程

  1、该项目采用SOA分布式架构,在此基础上我们又实现了面向服务的思想,中间件使用阿里巴巴出品的Dubbo服务治理的核心框架来管理整个系统的服务,并且选择zookeeper来作为注册中心;

    2、大家都知道,一个电商项目是无法避免如何处理海量图片资源的问题,所以这里由使用一款用C语言开发的开源分布式文件系统FastDFS作为图片服务器,专门用于存储系统中所有的商品图片,广告图片等资源,并且通过Nginx反向服务器来访问图片服务器上的资源;

       3、接着说说商品搜索功能这块的架构,这里我们将在Linux系统上搭建了solr集群并实现了集群分片,安装了IKAnalyzer中文分词器,定义业务域等一系列部署工作,搭建了专门的搜索子系统,使用solr技术实现了商品搜索功能;

  4、商品详情页这块,采用freemarker页面静态化技术,将实现了对所有商品能够生成HTML详情页面,当用户访问网站搜索商品查看商品详情数据时,我们这里是动态生成详情页,而不是提前设计好,这样即使稍微慢点,也无所谓;

  5、优化一个电商项目是开发中必不可少的工作,这时经过分析,将采用非关系型数据库redis作为主角搭建了redis集群,将商城首页的广告位数据、页脚数据和将每天访问最多的定时广告数据都存储在redis集群中,用空间换时间来提升网站数据的展示速度;

  6、互联网项目不同于传统项目,对网站的登录用户的安全性校验有非常高的要求,这里采用单点登录技术,来实现用户的登录和注册功能,这里我没有参与开发,但是对单点登录有一定的了解,下面进行分享。

二:业务这块就没啥可说的,都是电商购物平台,大家可能都有在类似的购物平台上购物的经验,我们项目的业务主线也是购物流程,至于后台管理系统也就是对各个管理模块的维护;但是我们又新添加了商城倒计时活动和商品秒杀活动,下面具体来说说这俩个新颖的功能吧。

  1、商城倒计时活动实现大概步骤(可以作为参考):

    (1)、首先确定一个基准时间,可以使用SQL语句从数据库获取一个时间SELECT NOW();

    (2)、活动开始的时间是固定的,使用活动开始的时间-基准时间可以计算出一个秒为单位的时间值;

    (3)、然后使用redis数据库,采用string类型的数据类型来存储一个key(值为活动开始的时间),一定设置key的过期时间,使用命令"expire key 10"假设有效时间为10秒;

(4)、展示商城页面的时候,取出存储的活动开始时间,使用js倒计时功能;

    (5)、一旦存储的key失效,则说明活动结束(说明一点,需要在活动的逻辑中,先判断活动是否已经开始)。

  2、商城商品的秒杀活动实现的大概步骤(可以作为参考):

    (1)、首先把秒杀活动的商品数量存放到redis中;

    (2)、秒杀活动开始时,使用decr命令对商品数量减1,如果不是负数,则说明抢到礼物;

    (3)、一旦返回的商品数量为0,则说明商品已经售完,活动结束。

三:项目部署总结

(项目架构详解图)

(网络拓扑图)

部署总结后期更新!!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-02-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档