淘淘商城_day11_课堂笔记
今日大纲
- 发布前的准备
- 实施发布
- 一部分是由我来发布
- 一部分是由你们来发布
- 讲解分布式部署架构
- 测试
- 功能测试
- 压力测试
- 项目实战的准备以及分组
- 分组
- 抽取功能
- 讲解所需要开发的功能
项目部署上线流程
- 需要知道有几台服务器
- 服务器是否在同一个机房
- 在同一个机房,通过内网进行通信 -- 速度快
- 不在同一个机房,通过外网通信 -- 速度慢
- 服务器的硬件以及操作系统
- 硬件
- 内存 -- 多大?
- CPU -- 几核?
- 硬盘 -- 多大? IO? 机械硬盘还是SSD(固态硬盘)?
- 操作系统
- Windows?
- Linux?
- 32? 64?
- 做最后的功能测试
- 略过。
- SVN打tag
- 打包程序(Maven)
- 数据库脚本以及初始数据
- 编写发布文档
- 要将发布的内容以及发布步骤都写下来
- 回滚的机制
- 程序的回滚
- 数据的回滚
- 系统间的调用关系的回滚
- 实施发布
服务器情况
在同一个机房,操作系统是linux,64位版本。
企业中的服务器是使用虚拟机还是实体机? -- 虚拟机 方便管理。
企业中为什么要使用linux虚拟机而不是实体机?
虚拟机,有2种:
- 在windows平台安装linux虚拟机
- 常常用于测试、开发
- 服务器的虚拟化
- 直接在实体机基础之上安装虚拟机,没有windows这一层,对硬件的利用率更高
今天共有9台虚拟机发布,每台虚拟机的配置都是一样的:
CPU: 4核 -- top à 1
内存:2GB -- free -m
硬盘:机械硬盘 45G -- df - h

SVN打包tag
直接在SVN视图中复制粘贴

在Eclipse中右键操作

程序打包
需要打包哪些工程
Taotao-cart
Taotao-manage
Taotao-web
Taotao-sso
Taotao-sso-service
Taotao-order
Taotao-search
Taotao-solr(原solr)
Taotao-upload
Taotao-static
数据将脚本
Nginx的配置文件
实施打包


打包jar程序(可执行)
配置maven的jar插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<outputDirectory>${publish}</outputDirectory>
<archive>
<manifest>
<addDefaultImplementationEntries>true
</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true
</addDefaultSpecificationEntries>
<addClasspath>true</addClasspath>
<!-- 运行需要的依赖放到这个目录下 -->
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.taotao.sso.main.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
自定义打包
- 配置Maven的自定义打包插件

- 自定义打包插件的配置
- 打包之后的效果
程序中的配置文件:
- 把配置文件放到config目录
- 启动程序时指定参数-DconfigPath=配置文件的路径
- 程序中获取配置文件路径的参数
实施发布
部署架构

服务器分配情况

|
应用 |
IP |
端口 |
执行人 |
完成情况 |
备注 |
|
Nginx |
192.168.50.23 |
80 |
花和尚 |
OK |
|
|
Taotao-web-1 |
192.168.50.24 |
8080 |
张志栋 |
||
|
Taotao-web-2 |
192.168.50.25 |
8080 |
黄柯 |
OK |
|
|
Taotao-web-3 |
192.168.50.25 |
8081 |
李春凤 |
OK |
|
|
Taotao-SSO |
192.168.50.26 |
8080 |
董孙维 |
OK |
|
|
Taotao-SSO-service |
192.168.50.26 |
8081 |
付璐璐 |
OK |
|
|
Taotao-order |
192.168.50.27 |
8080 |
李娟 |
OK |
|
|
Taotao-search |
192.168.50.27 |
8081 |
张有路 |
OK |
|
|
Taotao-solr |
192.168.50.27 |
8983 |
蔡麒 |
OK |
|
|
Taotao-cart |
192.168.50.27 |
8082 |
张凯业 |
OK |
|
|
Taotao-manage |
192.168.50.29 |
8080 |
花和尚 |
OK |
|
|
Mysql |
192.168.50.30 |
3306 |
花和尚 |
OK |
|
|
Redis |
192.168.50.30 |
6379 |
花和尚 |
OK |
|
|
RabbitMQ |
192.168.50.30 |
5672/15672 |
花和尚 |
OK |
|
|
Zookeeper |
192.168.50.31 |
2181 |
花和尚 |
OK |
|
|
Dubbo-admin |
192.168.50.31 |
8080 |
刘成达 |
OK |
|
|
Dubbo-monitor |
192.168.50.31 |
8088 |
高计豪 |
OK |
部署情况:
- 时间:今天中午
- 程序:我打好的包 war
- 服务器的账号密码:root/root123
Linux下nginx使用
Nginx/sbin
启动:./nginx
停止: ./nginx -s stop
重新加载: ./nginx -s reload
将防火墙的80端口开放:
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables status

非root用户不能占用80端口的解决方案

Linux下安装mysql


Linux执行SQL脚本:cat taotao.sql | mysql -uroot -proot -Dtaotao
Linux下安装Redis

注意:需要开放6379端口。
Linux下安装RabbitMQ
- 启动RabbitMQ非常的慢问题解决:
- 需要在hosts文件中添加主机名的映射,映射到本地127.0.0.1
- 需要配置可以通过guest用户远程登录:
- 修改guest用户的密码

- 创建taotao用户以及/taotao的vhost,并且设置taotao用户的权限
测试:

部署taotao-manage
解压war包:
jar -xvf taotao-manage-web.war
配置nginx(192.168.0.50):

部署前台系统
访问后台系统接口出错:

解决:在192.168.50.24机器配置hosts内容:

部署static.taotao.com
在192.168.0.41上的nginx配置static.taotao.com指向到/ucneter/web/taotao-static

但是,后台系统上传的图片没有显示。
配置tomcat集群
配置:

负载均衡的策略:轮询
如果其中的一个server宕机,nginx会将该server移除出轮询列表。
如果宕机的服务恢复的话,会自动加回到轮询的列表中。
图片无法显示的问题
后台系统上传的图片是在192.168.50.29的/ucenter/web/taotao-upload
现在的nginx的配置是:将image.taotao.com指向到本地(192.168.50.23)的/ucenter/web/taotao-upload
问题,新上传的图片将无法显示。
如何解决?
- 部署一台单独的图片服务器
- 后台管理系统如何将图片上传到图片服务器?
- 使用FTP
- NFS – 网络文件系统
现在的解决:
在192.168.50.23上直接上传taotao-upload.tar.gz (临时解决方案)
测试:

部署taotao-search和taotao-solr
如何在linux中使命令在后台运行:
java -Dsolr.solr.home=taotao-solr -jar start.jar &
在执行的命令后面添加一个 &符号即可。
部署taotao-sso
如何在同一台机器启动多个tomcat
需要修改3个端口才能启动:
1、
2、
3、
高可用架构
目前架构存在的问题
如果nginx宕机,那么整个架构将瘫痪。
双机主备

已经解决上述问题,但是,又有了新问题。 -- 备用服务器的资源浪费问题。
双主热备

以上的问题
Nginx宕机是指:nginx服务宕机,不是nginx所在的服务器宕机。
Nginx自身的性能将成为系统的瓶颈。
Nginx的负载均衡存在性能问题。
解决:使用LVS替代nginx的负载均衡功能。

压力测试
压力测试
作用:保证系统上线之后能够满足线上并发的要求。
模拟并发
用线程模拟并发。
Jmeter压力测试工具
《测试淘淘商城首页简要示例.docx》
淘淘商城_day11_课堂笔记的更多相关文章
- 淘淘商城_day01_课堂笔记
今日大纲 聊聊电商行业 电商行业发展 11.11 2015双11: 2016年: 预测:2017年的双11交易额将达到:1400亿 电商行业技术特点 淘淘商城简介 淘淘商城的前身 电商行业的概念 B2 ...
- 淘淘商城_day04_课堂笔记
今日大纲 实现首页的大广告位功能 实现内容管理系统 首页的大广告 什么是大广告 JS效果: 点击下面的序号选择查询哪个广告 自动切换 点击图片查询具体的页面 以上是由前端团队来开发. 数据结构 说明: ...
- 淘淘商城_day02_课堂笔记
今日大纲 学习Nginx的使用 实现商品的管理 新增商品 查询商品列表 编辑商品 删除商品 上架和下架商品 学习nginx 开发阶段中的环境 开发环境:自己的电脑 测试环境:提供给测试人员使用的环境 ...
- 淘淘商城_day10_课堂笔记
今日大纲 Dubbo入门学习 使用dubbo优化单点登录系统 系统间服务调用方式 浏览器直接访问 浏览器发起请求,通过ajax或jsonp方式请求: Httpclient方式 系统与系统之间通过Htt ...
- 淘淘商城_day09_课堂笔记
今日大纲 实现购物车 基于Mysql实现读写分离 购物车 需求描述 用户可以在登录状态下将商品添加到购物车 用户可以在未登录状态下将商品添加到购物车 用户可以使用购物车一起结算下单 用户可以查询自己的 ...
- 淘淘商城_day08_课堂笔记
今日大纲 问题,如何实现商品数据的同步? 学习MQ(消息队列) 搭建RabbitMQ的环境 学习RabbitMQ的队列 学习Spring-Rabbit 使用RabbitMQ完成商品数据的同步 如何实现 ...
- 淘淘商城_day07_课堂笔记
今日大纲 讲解订单系统 基于订单系统完成下单功能的开发 使用Solr完成商品的搜索功能 订单系统 说明:订单系统只是做讲解,不做开发. 导入taotao-order 表结构 订单表: 订单商品表: 疑 ...
- 淘淘商城_day05_课堂笔记
今日大纲 学习Redis 使用Redis完成项目中缓存需求 实现商品详情页功能 缓存的需求 大广告位数据无需每次查询后台系统的接口,可以在前台系统添加缓存,提高访问首页的速度. 商品类目的数据也可以缓 ...
- 淘淘商城_day06_课堂笔记
今日大纲 实现单点登录系统 基于单点登录系统实现,用户的注册和登录 商品数据同步问题 问题 后台系统中将商品修改,前台系统没有进行数据的同步,导致前端系统不能够实时显示最新的数据. 解决 后台系统中商 ...
随机推荐
- web开发技术中Servlet技术的概述
1.servlet是什么:servlet是一个位于服务器端的java应用程序它可以像jsp一样,直接输出信息 servlet类必须继承HttpServlet类,否则,不能称为serlvet servl ...
- C#异步的世界【上】
新进阶的程序员可能对async.await用得比较多,却对之前的异步了解甚少.本人就是此类,因此打算回顾学习下异步的进化史. 本文主要是回顾async异步模式之前的异步,下篇文章再来重点分析async ...
- 解决安装失败的 Internet Explorer 11
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成.微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章.然而由机器翻译的文章并不总是完美的.它 ...
- HTTP could not register URL http://+:86/. 设置VS默认以管理员权限打开
在使用visual studio 2013启动self host webapi时候碰到下面的错误: 详细错误信息如下: HTTP could not register URL http://+:8 ...
- Extjs的GridPanel分页前后台完整代码实例
第一次写文章啊,有些冲动.最近在公司学习Extjs,做了一个分页的小实例和大家分享. 1.首先编写paging-grid.js文件,这是我在网上参考的例子改写的,大同小异. Ext.onReady(f ...
- input中的name,value以及label中的for
input具有很多属性,比较常用的有type,value,name,placeholder,multiple,checked等.对于其中的name.value.label相关以及标签外的文字,我一直是 ...
- 启用div作为编辑器 添加contentEditalbe属性
1.自从HTML5中新引入了contentEditalbe属性以后,div就与textarea一样,可以作为最常用的编辑器使用. 1.启用div作为编辑器 让div进入编辑状态很简单,只需要: 复制代 ...
- jQuery事件命名空间
先看一些代码: 也可以用bind进行事件绑定.我们看到上面的代码,我们可以在事件后面,以点号,加我们的名字,就是事件命名空间.所谓事件命名空间,就是事件类型后面以点语法附加一个别名,以便引用事件,如& ...
- noip 2016 提高组总结(不是题解)
小弱鸡杨树辰是第一次参加像noip这样的高大上的比赛,于是他非常,非常,非常激动. 当他第二天考完试后,他正在yy自己的分数:day1T1应该是a掉了,T2写了个30分的暴力,T3也是个40分的暴力, ...
- mimi
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"& ...