近年来,**的电子商务快速发展,交易额连创新高,电子商务在各领域的应用不断 拓展和深化、相关服务业蓬勃发展、支撑体系不断健全完善、创新的动力和能力不断增强。 电子商务正在与实体经济深度融合,进入规模性发展阶段,对经济社会生活的影响不断增大, 正成为我国经济发展的新引擎。 **电子商务研究中心数据显示,2017 年底,**电子商务市场交易规模达 29.16 万亿 人民币,全年 29.16 万亿元电商交易额中,商品类电商交易额 16.87 万亿元,服务类电商务交 易额 4.96 万亿元,同比分别增长 21%和 35.1%。全国网上零售额达 7.18 万亿元,同比增逾 三成,占据全球份额的半壁江山,成为**电商发展一大亮点。而伴随电商发展,移动端网 络支付也在悄然改变传统支付习惯,2017 年非银行支付机构发生网络支付 143.26 亿万元, 同比增长 44.32%。 图 1.2012-2017 年**电子商务市场交易规模(万亿元)
- 技术新
- 技术范围广
- 分布式
- 高并发、集群、负载均衡、高可用
- 海量数据
- 业务复杂
- 系统安全
- B2B:企业到企业,商家到商家。代表:阿里巴巴、慧聪网
- B2C:商家到客户。代表:京东、淘宝商城(B2B2C)。
- C2C:客户到客户。淘宝集市。
- O2O:线上到线下。
- 易购网上商城是一个综合性的 B2C 平台,类似京东商城、天猫商城。
- 会员:可以通过商城浏览商品、下订单、积分兑换以及参加各种活动。
- 管理员、运营:可以在平台后台管理系统中管理商品、订单、会员等。
- 客服:可以在后台管理系统中处理用户的询问以及投诉。
- B2C电商系统架构
- 前台
- 注册&登陆 支付 会员中心
- 商品展示
- 订单提交
- 网站门户 商品搜索
- 客户服务 公告 帮助中心 社区
- 后台
- 财务管理
- CRM 采购管理 WMS
- 商品管理 订单管理
- 统计报表
- CMS
- 购物车
- 系统管理 网络管理
- 活动管理 商品推荐
- 单体项目:将所有的功能放入一个项目中进行管理和开发。
- 优点: 方便调试,代码都在一起。 没有分布式开销,所有服务都在本地容器内。 中小型项目可以快速迭代,不需要太多资源。
- 缺点: 版本管理难:当项目规模变大时,代码容易产生冲突。 稳定性差:局部服务有问题,可能会影响整体; 可维护性差:规模扩大复杂性直线上升,造成系统不易理解; 可扩展性差:无法满足高并发下对应用的要求,不利于较高利用率的横向扩展; 可复用性差:服务被打包在应用中,功能不易复用;
分布式架构:通过 SOA:面向服务的体系结构,它将应用程序的分为不同服务,通过服务之 间定义良好的接口和契约联系起来,把系统按照模块拆分成多个子系统开发,子系统之间通 过接口进行通信。 优点: 把模块拆分,使用接口通信,降低模块之间的耦合度。 把项目拆分成若干个子项目,不同的团队负责不同的子项目。 增加功能时只需要在增加一个子项目,调用其它系统的接口就可以。 可以灵活的进行分布式部署。
缺点: 系统之间交互需要使用远程通信,接口开发增加工作量。
######2.3.3 技术选型
- Spring、SpringMVC、Mybatis
- JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV
- Redis (缓存服务器)
- Solr (搜索)
- Dubbo RPC(Remote Procedure Call)解决方案
- Mysql (数据库)
- Nginx (web 服务器)
- Maven (项目构建管理工具)
######2.3.4 开发工具和环境
- Idea
- Maven 3.6.1
- Tomcat 7(Maven Tomcat Plugin)
- JDK 1.8
- Mysql 5.7
- Nginx 1.8.0
- Solr 4.10.3
- Redis 3.0.0
- Ubuntu 19.04 操作系统
- 产品经理:3 人,确定需求以及给出产品原型图。Axure
- 项目经理:1 人,项目管理。
- 前端团队:5 人,根据产品经理给出的原型制作静态页面。
- 后端团队:20 人,实现产品功能。
- 测试团队:5 人,测试所有的功能。
- 运维团队:3 人,项目的发布以及维护。
- [INFO] ego[pom]
- [INFO] ego-common[jar]
- [INFO] ego-rpc[pom]
- [INFO] ego-rpc-pojo[jar]
- [INFO] ego-rpc-mapper[jar]
- [INFO] ego-rpc-service[jar]
- [INFO] ego-rpc-service-impl[jar]
- [INFO] ego-manager-web Maven Webapp[war]-->非伪静态化
- [INFO] ego-portal-web Maven Webapp[war]-->伪静态化,接收.html结尾的请求
- [INFO] ego-search-web Maven Webapp[war]-->伪静态化,接收.html结尾的请求
- [INFO] ego-sso-web Maven Webapp[war]-->非伪静态化
- [INFO] ego-item-web Maven Webapp[war]-->伪静态化,接收.html结尾的请求;有登录拦截器
- [INFO] ego-order-web Maven Webapp[war]-->非伪静态化;有登录拦截器
- 启动Zookeeper服务注册中心(172.18.25.171,192.168.1.171)
ssh 172.18.25.171
cd /usr/local/zookeeper
./zk1/bin/zkServer.sh start
./zk2/bin/zkServer.sh start
./zk3/bin/zkServer.sh start
- 启动ftp服务器(172.18.25.172,192.168.1.172)
ssh 172.18.25.172(已配置开机默认启动)
- 启动Http服务器(172.18.25.172,192.168.1.172)
ssh 172.18.25.172
cd /usr/local/nginx/sbin/
./nginx
- 启动Redis集群(172.18.25.174,192.168.1.174)
ssh 172.18.25.174
./usr/local/redis/bin/redis-server redis-6380.conf
./usr/local/redis/bin/redis-server redis-6381.conf
./usr/local/redis/bin/redis-server redis-6382.conf
./usr/local/redis/bin/redis-server redis-6383.conf
./usr/local/redis/bin/redis-server redis-6384.conf
./usr/local/redis/bin/redis-server redis-6385.conf
- 启动Solr集群(172.18.25.173,192.168.1.173)
ssh 172.18.25.173
./usr/local/tomcat-01/bin/startup.sh
./usr/local/tomcat-02/bin/startup.sh
./usr/local/tomcat-03/bin/startup.sh
./usr/local/tomcat-04/bin/startup.sh
- 启动nginx代理的tomcat集群(172.18.25.176,192.168.1.176)
ssh 172.18.25.176
./usr/local/tomcat/apache-tomcat-9.0.20-01/bin/startup.sh
./usr/local/tomcat/apache-tomcat-9.0.20-02/bin/startup.sh
./usr/local/tomcat/apache-tomcat-9.0.20-03/bin/startup.sh
- 启动nginx反向代理_负载均衡服务器(172.18.25.175,192.168.1.175)
ssh 172.18.25.175
./usr/local/nginx/sbin/nginx
# 重启命令#
./usr/local/nginx/sbin/nginx -s reload
- 发布RPC服务
运行ego-rpc-service-impl包下的com.soldier.ego.test.ProviderTest的main方法
- 启动商品门户(ego-portal-web)和商品检索(ego-search-web)的tomcat
1、install ego项目,启动Zookeeper服务注册中心、ftp服务器、Http服务器 2、将ego-rpc-service-impl的target下生成的ego-rpc-service-impl-assembly.tar.gz上传到nginx代理的tomcat服务器
scp /home/soldier/SOLDIER/IDE_project/idea_project/ego/ego-rpc/ego-rpc-service-impl/target/ego-rpc-service-impl-assembly.tar.gz 172.18.25.176:/soldier/app
3、连接tomcat服务器,解压文件
ssh 172.18.25.176
cd /soldier/app
tar -zxvf ego-rpc-service-impl-assembly.tar.gz
./ego-rpc-service-impl/bin/start.sh
1、修改tomcat服务器的3个tomcat的tomcat-users.xml文件,配置tomcat账户
vi apache-tomcat-9.0.20-01/conf/tomcat-users.xml
vi apache-tomcat-9.0.20-02/conf/tomcat-users.xml
vi apache-tomcat-9.0.20-03/conf/tomcat-users.xml
末尾加入
# 2019.11.28 10:16:25
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,admin-script,admin-gui"/>
2、删除每个tomcat默认访问的webapps下的ROOT
rm -rf apache-tomcat-9.0.20-01/webapps/ROOT/
rm -rf apache-tomcat-9.0.20-02/webapps/ROOT/
rm -rf apache-tomcat-9.0.20-03/webapps/ROOT/
3、启动三个tomcat
./apache-tomcat-9.0.20-01/bin/startup.sh
./apache-tomcat-9.0.20-02/bin/startup.sh
./apache-tomcat-9.0.20-03/bin/startup.sh
4、修改本地maven的settings.xml文件,关联tomcat账户;因为是用maven打包上传的
vim /home/soldier/SOLDIER/IDE_environment/apache-maven-3.6.1/conf/settings.xml
加入
<!-- 在maven中关联tomcat服务器的tomcat账户 -->
<server>
<id>176_tomcatCloud</id>
<username>admin</username>
<password>admin</password>
</server>
修改ego-manager-web的pom文件 5、允许ego-manager-web的tomcat7:deploy,上传tomcat的war包