day68_淘淘商城项目_01_电商介绍 + 互联网术语 + SOA + 分布式 + 集群介绍 + 环境配置 + 框架搭建_匠心笔记

本文主要是介绍day68_淘淘商城项目_01_电商介绍 + 互联网术语 + SOA + 分布式 + 集群介绍 + 环境配置 + 框架搭建_匠心笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

淘淘商城项目_01

    • 1、电商行业的背景介绍--电子商务
      • 1.1、11.11
      • 1.2、电商行业技术特点
    • 2、淘淘商城的系统架构
      • 2.1、淘淘商城介绍
      • 2.2、功能介绍
      • 2.3、系统架构
        • 2.3.1、传统架构
        • 2.3.2、1000个并发
        • 2.3.3、分布式架构(10000个并发)
        • 2.3.4、基于SOA的架构
        • 2.3.5、淘淘商城系统架构
    • 3、技术选型和开发环境
      • 3.1、技术选型
      • 3.2、开发工具版本和环境
    • 4、工程搭建--后台工程
      • 4.1、使用maven的好处
      • 4.2、后台工程搭建分析
      • 4.3、工程搭建
        • 4.3.1、taotao-parent
        • 4.3.2、taotao-common
        • 4.3.3、taotao-manager
        • 4.3.4、taotao-manager-pojo
        • 4.3.5、taotao-manager-dao
        • 4.3.6、taotao-manager-interface
        • 4.3.7、taotao-manager-service
        • 4.3.8、taotao-manager-web
      • 4.4、使用maven的tomcat插件启动web工程
      • 4.5、使用maven的tomcat插件启动聚合工程
    • 5、SVN的使用
      • 5.1、SVN服务端
      • 5.2、SVN客户端

课程计划

  • 第一天:
    • 1、电商行业的背景介绍–电子商务
    • 2、淘淘商城的系统架构
      • a) 功能介绍
      • b) 架构讲解
    • 3、工程搭建–后台工程
      • a) 使用maven搭建工程(工程大)
      • b) 使用maven的tomcat插件启动工程
    • 4、SVN的使用
  • 第二天:
    • 1、服务中间件dubbo–远程调用技术
    • 2、SSM框架整合
    • 3、整合测试
    • 4、商品列表查询功能实现
  • 第三天:
    • 1、商品类目选择
    • 2、图片上传
      • a) 图片服务器FastDFS
      • b) 图片上传功能实现
    • 3、富文本编辑器KindEditor的使用
    • 4、商品添加功能完成
  • 第四天:
    • 1、前台系统搭建
    • 2、CMS系统的实现–内容管理系统
      • a) 内容分类管理
      • b) 内容管理
    • 3、前台内容动态展示
  • 第五天:
    • 1、Redis服务器搭建–缓存
    • 2、向业务逻辑中添加缓存
    • 3、使用redis做缓存
    • 4、缓存同步
    • 5、Solr服务器安装–搜索
  • 第六天:
    • 1、Solrj使用测试–Solr服务的java客户端
    • 2、把数据库中的数据导入索引库
    • 3、搜索功能的实现
  • 第七天:
    • 1、Solr集群搭建–SlorCloud
    • 2、使用solrj管理solr集群
    • 3、把搜索功能切换到集群版
  • 第八天:
    • 1、什么是MQ–消息队列
    • 2、MQ的应用场景
    • 3、ActiveMQ的使用方法
    • 4、使用消息队列实现商品同步
  • 第九天:
    • 1、商品详情页面展示–动态展示 jsp + redis
    • 2、使用freemarker实现网页静态化
    • 3、ActiveMq同步生成静态网页
  • 第十天:
    • 1、Nginx的安装–访问静态资源
    • 2、Nginx配置虚拟机
    • 3、Nginx实现反向代理
    • 4、Nginx实现负载均衡
    • 5、SSO系统工程搭建–单点登录系统
  • 第十一天:
    • 1、SSO注册功能实现
    • 2、SSO登录功能实现
    • 3、通过token获得用户信息
    • 4、Ajax跨域请求(jsonp)
  • 第十二天:
    • 1、购物车实现
    • 2、订单确认页面展示
  • 第十三天:
    • 1、订单系统完成
    • 2、系统部署–上线流程
  • 第十四天~十六天:
    • 项目实战–需求、分组、实现
    • 项目总结

1、电商行业的背景介绍–电子商务

  近年来,中国的电子商务快速发展,交易额连创新高,电子商务在各领域的应用不断拓展和深化、相关服务业蓬勃发展、支撑体系不断健全完善、创新的动力和能力 不断增强。电子商务正在与实体经济深度融合,进入规模性发展阶段,对经济社会生活的影响不断增大,正成为我国经济发展的新引擎。
  中国电子商务研究中心数据显示,截止到2012年底,中国电子商务市场交易规模达7.85万亿人民币,同比增长30.83%。其中,B2B电子商务交易额达6.25万亿,同比增长27%。而2011年全年,中国电子商务市场交易额达6万亿人民币,同比增长33%,占GDP比重上升到13%;2012年,电子商务占GDP的比重已经高达15%。预计2013年我国电子商务规模将突破十万亿大关。

1.1、11.11

  • 结论:
    • 1、电商行业很挣钱,找互联网相关的工作。
    • 2、电商行业技术要求很高、高可用、海量数据的存储。

1.2、电商行业技术特点

  • 技术新
  • 技术范围广
  • 分布式
  • 高并发、集群、负载均衡、高可用
  • 海量数据
  • 业务复杂
  • 系统安全

2、淘淘商城的系统架构

2.1、淘淘商城介绍

  淘淘网上商城是一个综合性的B2C平台,类似京东商城、天猫商城。会员可以在商城浏览商品、下订单,以及参加各种活动。
  管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。
  客服可以在后台管理系统中处理用户的询问以及投诉。

  • 电商模式:
    • B2B:商家到商家。阿里巴巴、1688(批发)、慧聪网、铭万网。
    • B2C:商家(京东)到用户。京东(自营)。
    • C2C:用户到用户。淘宝(赶集)。
    • B2B2C:商家(天猫)到商家(耐克)到用户。天猫(开发票)。
    • O2O:线上到线下。百度外卖、美团外卖、饿了么。

2.2、功能介绍

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

2.3、系统架构

2.3.1、传统架构

  • 存在的问题:
    • 1、功能耦合度高
    • 2、系统维护成本高
    • 3、如果并发量大,无法解决高并发的问题
2.3.2、1000个并发

  • 存在的问题:
    • 1、系统无法有效进行水平扩展(集群不能针对功能模块)
    • 2、用户存在重复登录的问题
      • 针对第二点:需要session共享,是以session广播的形式,比较消耗资源(宽带)。
  • 如果要达到10000并发
    • 需要20台服务器做tomcat集群。
    • 注意:当tomcat集群中节点数量增加,服务能力先增加后下降。所以集群中节点数量不能太多,一般也就5个左右。
2.3.3、分布式架构(10000个并发)
  • 需要按照功能点把系统拆分,拆分成独立的功能。单独为某一个节点添加服务器。需要系统之间配合才能完成整个业务逻辑。叫做分布式
  • 分布式架构:多个子系统相互协作才能完成业务流程。系统之间需要进行通信
  • 集群同一个工程部署到多台服务器上。相当于同一个工程代码拷贝多份部署到多台服务器,每台服务器单独独立部署运行。
  • 分布式架构:
    • 把系统按照模块拆分成多个子系统,多个子系统相互协作才能完成业务流程系统之间需要进行通信。
  • 优点:
    • 1、把模块拆分,使用接口通信降低模块之间的耦合度
    • 2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
    • 3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
    • 4、可以灵活的进行分布式部署
  • 缺点:
    • 1、系统之间交互需要使用远程通信,接口开发增加工作量
    • 2、各个模块有一些通用的业务逻辑无法共用
2.3.4、基于SOA的架构

SOA:Service Oriented Architecture 面向服务的架构。也就是把工程拆分成服务层表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。

2.3.5、淘淘商城系统架构

3、技术选型和开发环境

3.1、技术选型

  • Spring、SpringMVC、Mybatis
  • JSP、JSTL、jQuery、EasyUI、KindEditor(富文本编辑器)
  • Redis(缓存服务器,单点登录,购物车)
  • Solr(全文搜索)
  • dubbo(分布式服务框架)
  • HttpClient(HTTP 协议访问客户端)
  • ActiveMQ(消息队列)
  • Quartz(定时任务)
  • FastDFS(图片服务器)
  • FreeMarker(网页静态化)
  • Nginx(反向代理服务器)
  • MyCat(数据库中间件)

3.2、开发工具版本和环境

  • Eclipse Mars.2 Release (4.5.2)
  • Maven 3.5.4
  • Tomcat 7.0.47(Maven Tomcat Plugin)
  • JDK 1.7
  • Mysql 5.7
  • Dubbo 2.5.3
  • Nginx 1.8.0
  • Redis 3.0.0
  • ActiveMQ 5.13.0
  • Win10 操作系统
  • SVN (版本管理)

4、工程搭建–后台工程

4.1、使用maven的好处

  • 使用maven管理工程的好处如下:
      1. jar包的管理
      1. 工程之间的依赖管理
      1. 自动打包
      1. 统一的版本的控制

4.2、后台工程搭建分析

详解如下:

Maven的常见打包方式:jar、war、pom
pom工程一般都是父工程,管理jar包的版本、maven插件的版本、统一的依赖管理。聚合工程。taotao-parent:父工程,打包方式pom,管理jar包的版本号。|          项目中所有工程都应该继承父工程。|--taotao-common:通用的工具类、通用的pojo。打包方式jar|--taotao-manager:服务层工程。聚合工程。pom工程|--taotao-manager-pojo:打包方式jar|--taotao-manager-dao:打包方式jar|--taotao-manager-interface:打包方式jar|--taotao-manager-service:打包方式war (为了发布服务的方便)|--taotao-manager-web:表现层工程。打包方式war

4.3、工程搭建

Maven相关配置:

  • M2Eclipse是eclipse中的Maven插件。(低版本的ecplise需要手动安装,高版本的eclipse自带,本博主用的是高版本的ecplise)
  • M2Eclipse是MyEclipse中自带的Maven插件。
    • 注意:
      • 如果我们单独用命令行的方式进行maven的使用时,我们用户的配置文件默认在~/.m2/setting.xml
      • 如果我们使用Eclipse或者MyEclipse的方式进行maven的使用时,我们用户的配置文件可以想放哪里就放哪里,只需要指定配置文件的路径即可。
  • 本地仓库目录:默认位置在:~/.m2/repository
  • 因为我们使用eclipse开发,所以我们把本地仓库放到我们安排好的目录中,需要在eclipse中指定用户的配置文件路径即可。如下图:
  • 本地仓库的使用,我们既可以提前下好所需要的jar包,也可以边开发边联网下载!

Eclipse相关配置:

  • eclipse 设置默认编码为Utf-8
  • 需要设置的几处地方为:
    • Window --> Preferences --> General --> Content Type --> Text --> JSP 最下面设置为UTF-8
    • Window --> Preferences --> General --> Workspace 面板Text file encoding 选择UTF-8
    • Window --> Preferences --> Web --> JSP Files 面板选择 ISO 10646/Unicode(UTF-8)
    • Window --> Preferences --> General --> Workspace 面板 New text file line delimiter 选择 Unix
4.3.1、taotao-parent
  • 父工程必须是pom工程。
    • 创建步骤如下:
      (1)

      (2)

      (3)
  • pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.taotao</groupId><artifactId>taotao-parent</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><!-- 集中定义依赖版本号 --><properties><junit.version>4.12</junit.version><spring.version>4.2.4.RELEASE</spring.version><mybatis.version>3.2.8</mybatis.version><mybatis.spring.version>1.2.2</mybatis.spring.version><mybatis.paginator.version>1.2.15</mybatis.paginator.version><mysql.version>5.1.32</mysql.version><slf4j.version>1.6.4</slf4j.version><jackson.version>2.4.2</jackson.version><druid.version>1.0.9</druid.version><httpclient.version>4.3.5</httpclient.version><jstl.version>1.2</jstl.version><servlet-api.version>2.5</servlet-api.version><jsp-api.version>2.0</jsp-api.version><joda-time.version>2.5</joda-time.version><commons-lang3.version>3.3.2</commons-lang3.version><commons-io.version>1.3.2</commons-io.version><commons-net.version>3.3</commons-net.version><pagehelper.version>3.4.2-fix</pagehelper.version><jsqlparser.version>0.9.1</jsqlparser.version><commons-fileupload.version>1.3.1</commons-fileupload.version><jedis.version>2.7.2</jedis.version><solrj.version>4.10.3</solrj.version><dubbo.version>2.5.3</dubbo.version><zookeeper.version>3.4.7</zookeeper.version><zkclient.version>0.1</zkclient.version><activemq.version>5.13.0</activemq.version><freemarker.version>2.3.23</freemarker.version><quartz.version>2.2.2</quartz.version></properties><!-- 统一依赖jar包版本的管理, 其下的标签dependencies只是版本的管理,并不是依赖jar包--><dependencyManagement><dependencies><!-- 时间操作组件 --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>${joda-time.version}</version></dependency><!-- Apache工具组件 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>${commons-lang3.version}</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>${commons-io.version}</version></dependency><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>${commons-net.version}</version></dependency><!-- Jackson Json处理工具包 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version></dependency><!-- httpclient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>${httpclient.version}</version></dependency><!-- quartz任务调度框架 --><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>${quartz.version}</version></dependency><!-- 单元测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope><!-- test表示该范围传递不到下面去 --></dependency><!-- 日志处理 --><dependency><groupId>org.slf4j</groupId>

这篇关于day68_淘淘商城项目_01_电商介绍 + 互联网术语 + SOA + 分布式 + 集群介绍 + 环境配置 + 框架搭建_匠心笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1100828

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam