电商项目---订单模块以及负载均衡和分库分表

学习主题:订单模块以及负载均衡和分库分表

1.创建ego-order-web订单系统

(1)描述订单系统的实现流程

订单系统的实现流程及将购物车中的数据保存到数据库,将购物车中的数据保存到数据库有两种实现方式,一种是调用购物车远程服务加载购物车集合从而获取数据保存到数据库,还有一种是给订单系统添加拦截器,用户必须登陆才能访问订单系统,在拦截器中获取用户的信息,通过用户id获取购物车数据然后保存到数据库中。

(2)描述订单系统中需要的表和表之间的关系

用户表和订单表一对多,一个用户可以包含过个订单
订单表和订单明细表一对多,一个订单包含多个订单明细,通过订单id进行关联
订单表和订单物流表一对一

2.ego-order-web添加拦截器

(1)说明springmvc中拦截器要重写的几个方法和执行顺序

执行方法前
@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {

		return true;
	}
执行方法后
@Override
	public void postHandle(
			HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
			throws Exception {
	}
页面渲染后
@Override
	public void afterCompletion(
			HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
	}

(2)说明springmvc中拦截器postHandle()方法的执行时间和作用

postHandle:后处理回调方法,实现处理器的后处理(但在渲染视图之前),此时我们可以通过modelAndView(模型和视图对象)对模型数据进行处理或对视图进行处理,modelAndView也可能为null。

3.保存订单信息_查看订单列表_明细

(1)描述用户订单保存中订单明细表中的数据是怎么获取的?

根据用户的id获取到购物车对象集合,根据购物车对象集合获得商品对象,商品对象中保存着订单明细。

(2)描述订单保存成功后,订单的情况是怎么实现的?

4.Nginx介绍_Nginx安装

(1)描述nginx的在开发中的作用。

静态资源服务器
虚拟主机
反向代理服务器
负载均衡

(2)谈谈你对反向代理和正向代理的理解

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从 原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原 始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然 后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连 接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

5.Nginx实现虚拟主机

(1)谈谈你对nginx虚拟主机的理解

虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主 机,每个虚拟主机可以独立对外提供 www 服务,这样就可以实现一台主机对外提供多个 web 服务,每个虚拟主机之间是独立的,互不影响的。 
虚拟主机技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应 用于 HTTP(Hypertext Transfer Protocol,超文本传输协议)服务,将一台服务器的某项或 者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬 件资源。

(2)nginx实现虚拟主机有几种方式,分别具体描述

实现虚拟主机有三种方式
基于 IP 的虚拟主机
#一个server一个虚拟主机   
    server {
        listen       80;
	#为虚拟机指定IP或者是域名
       server_name  192.168.170.128;

        #主要配置路由访问信息
       location / {
	    #用于指定访问根目录时,访问虚拟主机的web目录
           root   html128;
	    #在不指定访问具体资源时,默认的展示资源的列表
           index  index.html index.htm;
        }

       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
           root   html;
        }
       
    }


    #一个server一个虚拟主机
    server {
        listen       80;
	#为虚拟机指定IP或者是域名
        server_name  192.168.170.138;

        #主要配置路由访问信息
        location / {
	    #用于指定访问根目录时,访问虚拟主机的web目录
            root   html138;
	    #在不指定访问具体资源时,默认的展示资源的列表
            index  index.html index.htm;
        }

       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       
    }

基于端口的虚拟主机
#一个server一个虚拟主机  
    server {
        listen       8080;
	#为虚拟机指定IP或者是域名
        server_name  192.168.170.138;

        #主要配置路由访问信息
        location / {
	    #用于指定访问根目录时,访问虚拟主机的web目录
            root   html8080;
	    #在不指定访问具体资源时,默认的展示资源的列表
            index  index.html index.htm;
        }

       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       
    }

    #一个server一个虚拟主机
     server {
         listen       9090;
	#为虚拟机指定IP或者是域名
         server_name  192.168.170.138;

        #主要配置路由访问信息
         location / {
	    #用于指定访问根目录时,访问虚拟主机的web目录
             root   html9090;
	    #在不指定访问具体资源时,默认的展示资源的列表
             index  index.html index.htm;
         }

       
         error_page   500 502 503 504  /50x.html;
         location = /50x.html {
             root   html;
         }
       
     }

基于域名的虚拟主机
	host文件配置

#一个server一个虚拟主机   
    server {
       listen       80;
	#为虚拟机指定IP或者是域名
       server_name  www.gl.cn;

       #主要配置路由访问信息
       location / {
	    #用于指定访问根目录时,访问虚拟主机的web目录
           root   html-gl;
	    #在不指定访问具体资源时,默认的展示资源的列表
           index  index.html index.htm;
       }

       
       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
        root   html;
       }
       
    }


    #一个server一个虚拟主机
     server {
       listen       80;
	#为虚拟机指定IP或者是域名
       server_name  www.ww.com;

        #主要配置路由访问信息
       location / {
	    #用于指定访问根目录时,访问虚拟主机的web目录
           root   html-ww;
	    #在不指定访问具体资源时,默认的展示资源的列表
           index  index.html index.htm;
        }

       
       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
         root   html;
       }
       
    }

6.Nginx实现反向代理_负载均衡

(1)描述什么是nginx的反向代理和好处

反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受 internet 上的连接请求, 然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求 连接的客户端,此时代理服务器对外就表现为一个服务器。
反向代理的好处:
(1)保证内网的安全,可以使用反向代理提供 WAF 功能,阻止 web 攻击 大型网站,通常将反向代理作为公网访问地址,Web 服务器是内网
(2)负载均衡,通过反向代理服务器来优化网站的负载
(2)nginx的负载均衡算法有哪些
1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后 端服务器 down 掉,能自动剔除。
2.指定权重 指定轮询几率,weight 和访问比率成正比,用于后端服务器 性能不均的情况。
upstream backserver {
server 192.168.170.128 weight=10;
server 192.168.170.129 ;
}

3.IP 绑定 ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访 问一个后端服务器,可以解决 session 的问题。
upstream backserver {
ip_hash;
server 192.168.170.128:88;
server 192.168.170.129:80;
}

7.ego-rpc_ego-manager项目发布

(1)描述ego-rpc项目发布需要什么插件,做哪些配置

assembly插件
<resources>
			<!--用于资源拷贝 -->
			<resource>
				<directory>src/main/resources/spring</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
				<!-- dubbo 框架的项目发布完成后,默认dubbo去META-INF/spring目录下加载spring -->
				<targetPath>META-INF/spring/</targetPath>
			</resource>
			<!-- 默认加载到classpath文件 -->
			<resource>
				<directory>src/main/resources/mybatis</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
				<!-- -->
			</resource>
			<resource>
				<directory>src/main/resources/resources</directory>
				<includes>
					<include>**/*.properties</include>
				</includes>
				<!-- -->
			</resource>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.properties</include>
				</includes>
				<!-- -->
			</resource>
		</resources>

(2)描述ego-rpc发布为dubbo服务的时候spring配置文件去哪里加载

默认去META-INF/spring目录下加载spring配置文件

8.Mycat介绍_垂直拆分_水平拆分

(1)谈谈mycat分库垂直拆分的理解。

一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分 类,分布到不同 的数据库上面,这样也就将数据或者说压力分担到不同的库上面

(2)谈谈mycat分库水平拆分的理解。

水平拆分是按照某个字段的某种规则来分散到多个库 之中,每个表中包含一部分数据。简单来说,我们可以将数据的水平切分理解为是按照数据 行的切分,就是将表中的某些行切分到一个数据库,而另外的某些行又切分到其他的数据库 中

9.Mycat相关概念_Mycat安装

(1)请对mycat以下概念做详细说明

①数据库中间件
数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服 务。从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构成了整个完整的 数据库存储
②逻辑库(schema)
对实际应用来说,并不需要知道中间件的存在,业务开发人员只需要知道 数据库的概念, 所以数据库中间件可以被看做是一个或多个数据库集群构成的逻辑库
③逻辑表(table)
分布式数据库中,对应用来说,读写数据的表就是逻辑 表。逻辑表,可以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分 片,只有一个表构成
④ER表
关系型数据库是基于实体关系模型(Entity-Relationship Model)之上,通过其描述了真实世界 中事物与关系,Mycat 中的 ER 表即是来源于此。根据这一思路,提出了基于 E-R 关系的 数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上,即子表依赖于父 表,通过表分组(Table Group)保证数据 Join 不会跨库操作
⑤分片规则
数据切分,一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务 规则把数据分到某个分片的规则就是分片规则,数据切分选择合适的分片规则非常重要,将 极大的避免后续数据处理的难度。

10.MyCat配置_数据导入_测试数据拆分

(1)描述mycat配置的三个关键文件和作用

在这里插入图片描述

(2)详细schema.xml常用配置标签和作用

schema标签:配置逻辑库的标签
table标签:定义逻辑表
dataNode标签:定义数据节点
dataHost标签:定义数据库主机
dataHost子标签writeHost:写数据的数据库定义标签,实现读写分离操作
dataHost子标签readHost:读数据的数据库定义标签

11.Mysql实现主从同步

(1)谈谈对数据库读写分离的理解

主数据库(master)处理事务性增、改、删操作(INSERT、 UPDATE、DELETE),而从数据库(slave)处理 SELECT 查询操作。
*

(2)谈谈对象数据库主从同步的理解

主从备份: 就是一种主备模式的数据库应用.
主库(Master)数据与备库(Slave)数据完全一致. 实现数据的多重备份, 保证数据的安全.
可以在 Master[InnoDB]和 Slave[MyISAM]中使用不同的数据库引擎,实现读写的分离

你可能感兴趣的:(电商项目---订单模块以及负载均衡和分库分表)