PHP技术,PHP研究及学习,Python学习,人工智能,大数据服务

PHP+Python » 编程开发 » 【转】互联网项目架构之基于服务的分布式架构

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

此文被围观203日期: 2019-01-16 分类 : 编程开发  标签:  ········

以前一直找一篇通俗易懂的文章,今天终于找到了,记录下。

文章来源:赵小忠

文章地址:https://www.cnblogs.com/1315925303zxz/p/6371550.html

  随着互联网电商项目的发展,越来越多的购物平台等都使用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,则说明商品已经售完,活动结束。

 

三:项目部署总结

(项目架构详解图)

(网络拓扑图)

 

部署总结后期更新!!!

 

 


本站使用ThinkPHP框架开发读图网主题,目前托管在阿里云,图片由读图网提供. 蜀ICP备12031064号

Copyright © 2011-2019adophper.com All Rights Reserved.