java进阶之电商架构简介

1电商核心业务主线

2电商介绍

2.1电商理解

电商,全名叫电子商务,英文名称Electronic Commerce,简称EC。

“21世纪要么‘电子商务’,要么‘无商可务’”——比尔盖茨对电子商务的高度评价。

电子商务通常是指在全球各地广泛的商业贸易活动中,在因特网开放的网络环境下,基于浏览器/服务器应用方式,买卖双方不谋面地进行各种商贸活动,实现消费者的网上购物、商户之间的网上交易和在线电子支付以及各种商务活动、交易活动、金融活动和相关的综合服务活动的一种新型的商业运营模式。

2.2电商运营模式(掌握)

按照电商行业的运营模型,一般分为以下几种模式:

B2B:商家到商家。例如:阿里巴巴(www.1688.com)、慧聪网。

B2C:商家到用户。例如京东商城、国美网上商城。

B2B2C:商家到商家到用户,比如京东、天猫都有第三方商户。

C2C:用户到用户。比如淘宝。

O2O:线上到线下,比如百度外卖、美团等。

2.3 11.11

2.4电商行业技术特点

分布式

高并发

高可用

集群

负载均衡

海量数据

系统安全

3天上人间商城介绍

3.1商城概述

天上人间(名字随便哈…)商城是一个综合性的B2C商城,运营模式类似京东商城。对于B2C模式的商城来说,它的系统主要包括『前台商城系统』、『后台管理系统』,及一些『周边系统』。

[商城会员]可以在『前台商城系统』搜索商品、用户登录、添加购物车、提交订单等操作。

[商城运营人员]可以在『后台管理系统』中管理商品、订单、会员等信息。

[商城客服人员]可以在『后台管理系统』中处理用户的询问以及投诉等操作。

3.2功能架构

3.3系统架构(重点)

项目类型:传统项目、互联网项目。

传统项目:使用人群是公司内部员工。没有高并发、集群、分布式等部署问题。

互联网项目:使用人群是互联网用户。有高并发、集群、分布式等部署问题。

传统项目只需要传统架构即可。

互联网项目需要集群分布式等架构思维。

3.3.1传统架构

依照传统架构实现的话,只需要创建一个应用(最终打成一个war包的工程)即可。

思考:传统架构在互联网应用中存在什么问题?

1、系统耦合性高,一个模块出现问题,其他模块都无法正常使用。

2、系统扩展性差,添加新功能时,会对现有系统产生破坏。

3.3.2分布式系统架构

依据分布式系统架构实现的话,需要创建多个工程,不同的工程完成不同的功能。

分布式架构:把系统按照系统模块拆分成多个独立的子系统。

优点:

1、系统之间弱耦合,把模块拆分,使用接口通信,降低模块之间的耦合度。

2、系统之间扩展性好,有新功能时,添加子模块即可,不会对原有系统产生破坏,大大增强系统可扩展性。

3、部署灵活方便,互联网应用需要进行分布式部署,使用这种架构,可以灵活的进行分布式部署。

缺点:

系统之间交互需要使用远程通信,接口开发增加工作量。

3.3.3天上人间商城系统架构(SOA)

天上人间商城的架构就是采用的分布式架构,只不过在此架构基础之上,我们又实现了面向服务的思想,所以天上人间商城的架构就是分布式服务架构。

天上人间商城架构体系两部分信息:

1、分布式(表现层分布式、服务层分布式)

2、面向服务(表现层和服务层拆分)

a)需要使用RPC框架(webservice,soap协议很大)

b)使用restful请求(比如移动端app调用后台服务,调用http请求)

c)Dubbo(阿里出品,只能在公司内部使用)

具体架构如下:

天上人间商城的架构:

1、先是按照工程的三层结构进行拆分。

2、其次再根据功能模块进行拆分。

3.4技术选项

Maven(管理依赖及工程构建)

SVN(版本控制工具)

SSM框架(spring+springmvc+mybatis)

Mysql(数据库)

JSP、jQuery、jQuery EasyUI、KindEditor(富文本编辑器)

Redis(缓存服务器)

Solr(搜索服务器)

Dubbo+zookeeper(调用&发布服务)

Nginx(http&反向代理服务器)

FastDFS(图片服务器)

Freemarker(页面静态化)

Activemq消息中间件

4搭建后台管理系统

整个电商系统中的工程都是由maven来创建。

Maven的核心功能:依赖管理、项目构建

Maven的核心概念:坐标(GAV)、依赖传递、继承、聚合

继承和聚合都是POM工程。

项目一创建的父工程,即体现继承也体现聚合。

在继承的父工程中,项目管理依赖版本。

在聚合工程中,实际上就是将聚合工程的子模块,最终合成一个war包。

使用maven很重要的认识就是需要知道本地仓库?建议一个项目单独指定本地仓库地址。

我们为什么使用maven来创建工程呢?

首先,maven是一个优秀的项目构建工具。使用maven,可以很方便的对项目进行分模块构建,这样在开发和测试打包部署时,效率会提高很多。

其次,maven可以进行依赖的管理。使用maven,可以将不同系统的依赖进行统一管理,并且可以进行依赖之间的传递和继承。

4.1设置天上人间商城Maven本地仓库

使用eclipse mars2自带的maven插件,但是maven版本是3.3.9,指定天上人间商城专用本地仓库地址。

如果不能联网,可以将以下仓库压缩包解压,然后拷贝repository目录中的内容到自己的本地仓库位置,比如我的本地仓库:E:\08-repo\02-tsrj\repository

4.2Maven工程结构

|--tsrj-parent(父工程,主要管理依赖版本,不真实添加依赖,打包类型POM)

|--tsrj-common(通用工具类工程,jar)

|--tsrj-manager(后台管理系统,聚合工程POM)

|--tsrj-manager-pojo(实体类工程,jar)

|--tsrj-manager-dao(持久层工程,jar)

|--tsrj-manager-interface(服务层工程,jar)

|--tsrj-manager-service(服务实现类工程,jar)

|--tsrj-manager-web(表现层工程,war)

为什么需要tsrj-parent工程?

为什么需要对tsrj-manager工程创建聚合工程,聚合工程的作用是什么?

可以提高子模块的可重用性。

4.3搭建tsrj-parent

作用:使用dependencyManagement标签统一管理依赖版本号。

4.3.1POM文件

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

cn.tsrjmall

tsrj-parent

0.0.1-SNAPSHOT

pom

5.1.32

1.0.9

3.2.8

3.4.2-fix

1.2.2

4.1.3.RELEASE

1.2

2.3.23

2.4.2

1.6.4

2.5

3.3.2

1.3.2

1.3.1

3.3

2.7.2

4.10.3

2.2.2

2.5

2.0

4.12

2.5.3

3.4.7

0.1

1.25

5.11.2

joda-time

joda-time

${joda-time.version}

org.apache.commons

commons-lang3

${commons-lang3.version}

commons-io

${commons-io.version}

commons-fileupload

commons-fileupload

${commons-fileupload.version}

commons-net

commons-net

${commons-net.version}

com.fasterxml.jackson.core

jackson-databind

${jackson.version}

junit

junit

${junit.version}

org.slf4j

slf4j-log4j12

${slf4j.version}

mysql

mysql-connector-java

${mysql.version}

com.alibaba

druid

${druid.version}

org.mybatis

mybatis

${mybatis.version}

com.github.pagehelper

pagehelper

${pagehelper.version}

mybatis-spring

${mybatis.spring.version}

org.springframework

spring-context

${spring.version}

spring-beans

spring-jdbc

spring-webmvc

spring-aspects

spring-context-support

spring-jms

jstl

jstl

${jstl.version}

org.freemarker

freemarker

${freemarker.version}

javax.servlet

servlet-api

${servlet-api.version}

provided

jsp-api

${jsp-api.version}

redis.clients

jedis

${jedis.version}

org.apache.solr

solr-solrj

${solrj.version}

org.quartz-scheduler

quartz

${quartz.version}

dubbo

${dubbo.version}

org.apache.zookeeper

zookeeper

${zookeeper.version}

com.github.sgroschupf

zkclient

${zkclient.version}

fastdfs_client

fastdfs_client

${fastdfs_client.version}

org.apache.activemq

activemq-all

${activemq.verion}

${project.artifactId}

org.apache.maven.plugins

maven-resources-plugin

2.7

UTF-8

maven-compiler-plugin

3.2

1.7

1.7

org.apache.tomcat.maven

tomcat7-maven-plugin

2.2

4.4搭建tsrj-common

4.4.1POM文件

tsrj-common

4.5搭建tsrj-manager

tsrj-manager工程是一个聚合工程,也就是POM工程。

4.5.1创建聚合工程

4.5.2修改POM文件

要运行聚合工程,需要配置tomcat7的插件。

tsrj-manager

8080

/

4.5.3创建tsrj-manager-pojo

创建聚合工程的子模块tsrj-manager-pojo工程。

第一步:右键点击tsrj-manager工程,new—>project

第二步:next

第三步:点击Finish,创建工程。

4.5.4创建tsrj-manager-dao

同tsrj-manager-pojo的创建

4.5.4.1POM文件

tsrj-manager-dao

${project.groupId}

tsrj-manager-pojo

4.5.5创建tsrj-manager-interface

4.5.5.1POM文件

tsrj-manager-interface

4.5.6创建tsrj-manager-service

4.5.6.1POM文件

tsrj-manager-service

${project.version}

4.5.7搭建tsrj-manager-web

4.5.7.1POM文件

tsrj-manager-web

war

4.5.7.2Web.xml

注意:使用maven创建的web工程,需要手动创建WEB-INF目录和web.xml文件(或使用eclipse自带工具生成)。

xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

id="tsrj" version="2.5">

如果有的小伙伴是用的idea,下面的截图是在idea中的结构

最近想了下,打算写个电商(京东)的案例,从这篇开始,大概持续一个月左右,每天都会更新一部分,对于想做电商的同学肯定会有帮助,至于页面资料和源码,需要的同学可以私信我,之后我也会放在GitHub上,感谢大家的支持。

你可能感兴趣的:(系统架构/中间件)