品优购项目记录:day01

 

 

今日目标:

        (1)了解电商行业特点以及理解电商的模式

        (2)了解整体品优购的架构特点

        (3)能够运用Dubbox + SSM 搭建分布式应用

        (4)搭建工程框架,完成品牌列表的后端代码

目录

1、系统架构

2、Dubbox

3、品优购工程框架搭建

4、品牌列表-后端


 

1、系统架构

 

1.1 SOA 架构

        SOA是Service-Oriented Architecture的首字母简称,它是一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看,面向服务是一种思考方式。其实SOA架构更多应用于互联网项目开发。

 

1.2 品优购架构

 

1.3 数据表

 

表名称

含义

tb_brand

品牌

tb_specification

规格

tb_specification_option

规格选项

tb_type_template

类型模板:用于关联品牌和规格

tb_item_cat

商品分类

tb_seller

商家

tb_goods

商品

tb_goods_desc

商品详情

tb_item

商品明细

tb_content

内容(广告)

tb_content_category

内容(广告)类型

tb_user

用户

tb_order

订单

tb_order_item

订单明细

tb_pay_log

支付日志

 

1.4 框架组合

        品优购采用当前流行的前后端编程架构。

        后端框架采用Spring+SpringMVC+mybatis +Dubbox 。前端采用angularJS +Bootstrap。

 

 

2、Dubbox

 

2.1 Dubbox 架构图

 

节点角色说明:

 Provider: 暴露服务的服务提供方。

 Consumer: 调用远程服务的服务消费方。

 Registry: 服务注册与发现的注册中心。

 Monitor: 统计服务的调用次调和调用时间的监控中心。

 Container: 服务运行容器。

调用关系说明:

 0. 服务容器负责启动,加载,运行服务提供者。

 1. 服务提供者在启动时,向注册中心注册自己提供的服务。

 2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

 3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推

送变更数据给消费者。

 4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,

如果调用失败,再选另一台调用。

 5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计

数据到监控中心。

 

2.2 注册中心 Zookeeper 安装

(1)上传zookeeper压缩包到linux服务器,并解压缩。

(2)在zookeeper中创建一个data文件夹。

(3)进入conf文件夹,修改 zoo_simple.cfg 为 zoo.cfg,并编辑dataDir的值为刚新建的data文件夹的路径。

(4)运行zookeeper,查看状态

 

2.3 Dubbox 管理中心

(1)获取到 Dubbox 的管理中心war包,并上传到linux服务器。还需要上传tomcat压缩包,用于运行war

(2)解压缩 tomcat 的压缩包,并将管理中心的war包,放入webapps目录下,启动tomcat

(3)访问 Dubbox 的管理中心页面,会显示输入登录名和密码,均为:root

(4)登陆后的界面

 

 

备注:

    (1)Dubbox 没有上传到 maven 仓库中,如果需要使用需要手动安装到本地 maven仓库中。

 

 

 

 

3、品优购工程框架搭建

 

3.1 创建一个聚合工程,为整个项目的父工程,并配置 pom.xml,主要为相关jar包的版本号锁定

 

3.2 创建通用实体类模块工程

 

3.3 创建通用数据访问模块工程

 

3.4 创建通用组件模块工程

 

3.5 创建商家商品模块工程(sellergoods-interface、sellergoods-service)

 

3.6 创建运营商管理后台工程(manager-web)

 

3.7 创建商家管理后台工程(shop-web)

 

3.8 使用逆向工程生成pojo和dao代码,其中pojo类需要手动实现 Serializable 接口

 

3.9 完成各个工程的基本配置

 

 

4、品牌列表-后端

 

4.1 服务层接口(sellergoods-interface)

package com.pinyougou.sellergoods.service;

import java.util.List;

import com.pinyougou.pojo.TbBrand;

/**
 * 品牌相关接口
 * @author Administrator
 *
 */
public interface BrandService {

	/**
	 * 获取品牌列表
	 *
	 * @return java.util.List<com.pinyougou.pojo.TbBrand>
	 */
	List<TbBrand> findAll();
	
}

 

4.2 服务层实现(sellergoods-service)

package com.pinyougou.sellergoods.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.alibaba.dubbo.config.annotation.Service;
import com.pinyougou.mapper.TbBrandMapper;
import com.pinyougou.pojo.TbBrand;
import com.pinyougou.sellergoods.service.BrandService;
@Service
public class BrandServiceImpl implements BrandService {

	@Autowired
	private TbBrandMapper brandMapper;
	
	@Override
	public List<TbBrand> findAll() {

		return brandMapper.selectByExample(null);
	}

}

 

4.3 控制层(manager-web)

package com.pinyougou.manager.controller;

import java.util.List;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.annotation.Reference;
import com.pinyougou.pojo.TbBrand;
import com.pinyougou.sellergoods.service.BrandService;

@RestController
@RequestMapping("/brand")
public class BrandController {

	@Reference
	private BrandService brandService;

	/**
	 * 获取品牌列表
	 *
	 * @return java.util.List<com.pinyougou.pojo.TbBrand>
	 */
	@RequestMapping("/findAll")
	public List<TbBrand> findAll(){
		return brandService.findAll();
	}

}

 

 

 

4.4 测试

dubbox监控中心:

 

 

备注:

        (1)在项目搭建过程中,最后的测试阶段,出现了一次问题,访问 url 报404错误,控制台卡在 Initializing Spring FrameworkServlet 'springmvc',后来发现是因为使用idea创建的maven web骨架没有resources和java的目录,需要手动创建,创建resources时不小心输成了resource,把资源文件的目录名resource改成resources即可。

 

 

 

 

 

1.2. 结构化一下 1.3. 图形化一下 1.3.1. 运营商后台 1.3.2. 商家后台 1.3.3. 网页前台 参考京东 2. 技术选型 前端:angularJS + Bootstrap 后台:SSM( springmvc+spring+mybatis) 数据库:mysql,使用mycat读写分离 开发模式:SOA 服务中间件:dubbox,需要和zookeeper配合使用 注册中心:zookeeper 消息中间件:Activemq,使用spring-jms 负载均衡:nginx 搜索:solr集群(solrCloud),配合zookeeper搭建, 使用spring-data-solor 缓存:redis集群,使用spring-data-redis 图片存储:fastDFS集群 网页静态化:freemarker 单点登录:cas 权限管理:SpringSecurity, 跨域:cros 支付:微信扫描 短信验证:阿里大于 密码加密:BCrypt 富文本:KindEditor 事务:声明式事务 任务调度:spring task 所有的技术,都可能涉及到为什么用?怎么用?用的过程中有什么问题? 3. 框架搭建 3.1. 前端 理解baseControler.js、base.js、base_pagination.js,以及每一个xxxController.js里面都公共的做了些什么。 baseControler.js 分页配置 列表刷新 处理checkBox勾选 xxxControler.js 自动生成增删改查 base_pagination.js 带分页 base.js 不带分页 3.2. dao 使用了mybatis逆向工程 4. 模块开发 逐个模块开发就好 4.1. 学会评估模块难不难 一个模块难不难从几方面考虑。 涉及几张表? 1,2张表的操作还是没有什么难度的。 涉及哪些功能? 增删改查,批量删除。 前端展示? 分页列表、树形、面包屑、三级联动、内容格式化。 4.2. 举几个简单模块的例子 4.2.1. 品牌管理 单表 分页、新增、删除、修改 4.2.2. 规格管理 2张表 分页、新增、删除、修改、显示优化(显示列表内容的一部分) 4.2.3. 模板管理 2张表 分页、新增、删除、修改、显示优化(显示列表内容的一部分) 4.2.4. 分类管理 单表 4.2.5. 商家审核 单表 4.3. 举一个复杂模块 4.3.1. 商品新增 需要插入3张表,tb_goods、tb_goods_desc、tb_item 前端:三级联动、富文本、图片上传、动态生成内容 4.3.2. 商品修改 需要从3张表获取数据,然后进行回显。 4.4. 典型模块设计 4.4.1. 管理后台 商品新增、商品修改 4.4.2. 前台页面 搜索模块实现 购物车模块实现 支付模块实现 秒杀模块实现 5. 开发过程中问题&优化 1.1. 登录 单点登录怎么实现 session怎么共享 1.2. 缓存 哪些场景需要用到redis redis存储格式的选择 怎么提高redis缓存利用率 缓存如何同步 1.3. 图片上传 图片怎么存储 图片怎么上传 1.4. 搜索 ​ 怎么实现 数据量大、 并发量高的搜索 怎么分词 1.5. 消息通知 ​ 哪些情况用到activeMq 1.6. 优化 seo怎么优化 怎么加快访问速度 1.7. 秒杀 ​ 怎么处理高并发 ​ 秒杀过程中怎么控制库存
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值