亿级流量架构|day01-京淘环境搭建

1. 项目环境配置

修改eclipse文档编码为UTF-8

亿级流量架构|day01-京淘环境搭建_第1张图片

配置JDK

亿级流量架构|day01-京淘环境搭建_第2张图片

Window中JDK

亿级流量架构|day01-京淘环境搭建_第3张图片

检测是否有JAVA_HOME

亿级流量架构|day01-京淘环境搭建_第4张图片

检查是否有path

亿级流量架构|day01-京淘环境搭建_第5张图片

Path ;%JAVA_HOME%/bin

关闭校验

亿级流量架构|day01-京淘环境搭建_第6张图片

添加maven

亿级流量架构|day01-京淘环境搭建_第7张图片

2. maven配置

2.1 maven作用

说明:

Maven是一站式的项目管理工具.负责项目中jar包管理/依赖.

Maven可以实现项目的自动的打包部署.

Mvn install/mvn package命令

依赖说明:

Maven可以实现jar包自动依赖的下载.同时依赖具有传递性.

A.jar-----B.10.jar-----C.2.0.jar

使用原则:

Maven的使用必须基于网络!!!!

2.2 maven使用原理

部件:1.本地仓库  2.私服镜像  3.中央仓库

亿级流量架构|day01-京淘环境搭建_第8张图片

 

2.3 修改本地仓库路径

1. 配置仓库

亿级流量架构|day01-京淘环境搭建_第9张图片

 

2. 配置私服镜像



	nexus
	Tedu Maven
	*
	http://maven.tedu.cn/nexus/content/groups/public/

3. 添加JDK配置

    
    jdk18    
        
        true    
        1.8    
        
        
        1.8    
        1.8    
        1.8    
         

2.4 编辑本地仓库路径

亿级流量架构|day01-京淘环境搭建_第10张图片

 

更新完成后保存.

3. maven高级

3.1 Mavenjar包如何自动依赖

说明:Maven加载jar包的过程

  1. 根据POM文件的坐标首先到本地仓库/私服镜像中查询jar包.
  2. 在引入jar包文件之前,需要先加载该jar包的pom.xml文件,对其中依赖的jar包再次解析.
  3. 解析完成后.实现jar包的自动依赖.

亿级流量架构|day01-京淘环境搭建_第11张图片

 

3.2 Maven的jar包如何保证不被篡改

SHA1介绍:

安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要,(但会有1x10 ^ 48分之一的机率出现相同的消息摘要,一般使用时忽略)。

王小云提出了密码哈希函数的碰撞攻击理论,即模差分比特分析法,提高了破解了包括MD5、SHA-1在内的5个国际通用哈希函数算法的概率;给出了系列消息认证码MD5-MAC等的子密钥恢复攻击和HMAC-MD5的区分攻击;提出了格最短向量求解的启发式算法二重筛法;设计了中国哈希函数标准SM3,该算法在金融、国家电网、交通等国家重要经济领域广泛使用。 [1] 

 

亿级流量架构|day01-京淘环境搭建_第12张图片

3.3 Mavenjar包依赖关系

如果parent项目中依赖jar包.但是自己项目同样依赖jar包则以自己的依赖为准.

 

3.4 如何解决jar包冲突问题

依赖A-----B.1.0.jar     

依赖C-----B.2.0.jar

解决思路:去除低版本jar包.

亿级流量架构|day01-京淘环境搭建_第13张图片

3.5 如何确定jar包版本关系

说明:架构师准备项目时需要保证jar包版本匹配.

网址: http://mvnrepository.com/

亿级流量架构|day01-京淘环境搭建_第14张图片

Jar包依赖关系

亿级流量架构|day01-京淘环境搭建_第15张图片

4. 项目构建

4.1 分布式项目中存在的问题

问题描述:

1.根据项目拆分的思想,可以将项目根据垂直拆分和水平拆分.将大型项目拆分为不同的小项目但是jar包管理几份??如果jar包多份,将来扩展不易.

 

4.2 分布式项目中jar包如何管理

说明:采用parent的形式,将项目中公共的jar包进行管理.其他的项目只需要继承parent即可.实现了jar包的统一管理.

 

4.3 分布式项目中工具类如何管理

说明:如果将工具代码分别保存到不同的项目中,如果对工具类方法进行编辑.则需要修改多次.对编程不易.

 

4.4 解决方案

说明:在分布式项目中需要使用jar包的统一管理方式,还有工具类的统一的管理方式.所以创建jt-parent和jt-common.

把上述的2个项目叫做业务的支持系统

将jt-manage/jt-cart/jt-web/jt-order等项目称之为业务系统.搭建一个大型的项目.必须添加业务的支撑系统.

亿级流量架构|day01-京淘环境搭建_第16张图片

 

4.5 京淘项目划分

序号

项目名称

主要作用

1

jt-manage

京淘后台管理系统 负责商品的更新和维护

2

jt-web

京淘前台系统,主要负责商品的展现

3

jt-cart

京淘购物车系统,负责用户购物车信息维护

4

jt-sso

京淘单点登陆系统,实现session数据共享

5

jt-order

京淘订单系统,负责订单维护

6

jt-search

京淘项目的全文检索

7

jt-rabbitMQ

消息队列系统

8

jt-parent

负责jar包的管理和依赖

9

jt-common

管理工具类文件

5. 构建jt-parent

5.1 创建项目

亿级流量架构|day01-京淘环境搭建_第17张图片

5.2 添加jar包文件



	4.10
	4.1.3.RELEASE
	3.2.8
	1.2.2
	1.2.15
	5.1.32
	0.8.0.RELEASE
	1.0.29
	2.3.2
	3.4.2
	0.9.1
	1.6.4
	1.2
	2.5
	2.0
	2.5
	3.3.2
	1.3.1
	2.4.2
	4.3.5
	2.6.2



	
	
		junit
		junit
		${junit.version}
		test
	

	
	
		org.springframework
		spring-webmvc
		${spring.version}
	
	
		org.springframework
		spring-jdbc
		${spring.version}
	
	
		org.springframework
		spring-aspects
		${spring.version}
	
	
	
	
	
		org.mybatis
		mybatis
		${mybatis.version}
	
	
		org.mybatis
		mybatis-spring
		${mybatis.spring.version}
	
	
		com.github.miemiedev
		mybatis-paginator
		${mybatis.paginator.version}
	

	
	
	
		mysql
		mysql-connector-java
		${mysql.version}
	

	
	
		com.alibaba
		druid
		${druid.version}
	

	
	
		com.github.abel533
		mapper
		${mapper.version}
	

	
	
		com.github.pagehelper
		pagehelper
		${pagehelper.version}
	
	
		com.github.jsqlparser
		jsqlparser
		${jsqlparser.version}
	

	
	
		com.jolbox
		bonecp-spring
		${bonecp-spring.version}
	

	
		org.slf4j
		slf4j-log4j12
		${slf4j.version}
	

	
	
		com.fasterxml.jackson.core
		jackson-databind
		${jackson.version}
	

	
	
		org.apache.httpcomponents
		httpclient
		${httpclient.version}
	
	
		org.apache.httpcomponents
		httpmime
		4.3.1
	
	
	
	
		com.rabbitmq
		amqp-client
		3.5.1
	
	
	       org.springframework.amqp
	       spring-rabbit
	       1.4.0.RELEASE
	

	
	
		jstl
		jstl
		${jstl.version}
	
	
		javax.servlet
		servlet-api
		${servlet-api.version}
		provided
	
	
		javax.servlet
		jsp-api
		${jsp-api.version}
		provided
	

	
	
		joda-time
		joda-time
		${joda-time.version}
	

	
	
		org.apache.commons
		commons-lang3
		${commons-lang3.version}
	
	
	
		commons-fileupload
		commons-fileupload
		${commons-fileupload.version}
	

	
	
		redis.clients
		jedis
		${jedis.version}
	

	
	
		org.springframework.data
		spring-data-redis
		1.4.1.RELEASE
	
	
	
	
		commons-codec
		commons-codec
		1.9
	

	
	
		org.hibernate
		hibernate-validator
		5.1.3.Final
	

6. 构建工具类项目

6.1 创建项目

亿级流量架构|day01-京淘环境搭建_第18张图片

亿级流量架构|day01-京淘环境搭建_第19张图片

 

6.2 添加继承

说明:jt-parent必须是pom类型

亿级流量架构|day01-京淘环境搭建_第20张图片

 

6.3 导入工具类

说明:将课前资料中的工具类项目中src文件导入项目中

亿级流量架构|day01-京淘环境搭建_第21张图片

说明:编辑完工具类后,分别将jt-parent和jt-common打包

亿级流量架构|day01-京淘环境搭建_第22张图片

7. 构建jt-manage

7.1 创建项目

1.选择骨架

亿级流量架构|day01-京淘环境搭建_第23张图片

2.编辑项目

亿级流量架构|day01-京淘环境搭建_第24张图片

3.补全项目文件路径

亿级流量架构|day01-京淘环境搭建_第25张图片

 

7.2 添加继承和依赖

1. 继承

亿级流量架构|day01-京淘环境搭建_第26张图片

2. 依赖

亿级流量架构|day01-京淘环境搭建_第27张图片

继承和依赖的关系:

继承:获取父级项目全部的jar包(多)

依赖:某些项目中需要引入额外的jar包 所以采用依赖的方式.(单个)

8. tomcat插件

8.1 传统tomcat服务器弊端

1. eclipse中整合tomcat时,配置繁琐.

亿级流量架构|day01-京淘环境搭建_第28张图片

2. tomcat使用一段时间后,tomcat启动时间越来越长.

因为里边的项目变多了,生成了大量的临时文件.造成启动慢

3. 搭建tomcat集群时,必须修改端口 8005/8080/8009

 

8.2 Tomcat插件介绍

说明:tomcat插件在程序启动时,会开启单独的线程加载tomcat,在tomcat中部署的项目,只有在线程工作时才能正常访问.即使生成了大量的临时文件则也在内存中.当线程关闭(tomcat服务).

搭建tomcat集群时只需要修改8080端口即可.

 

8.3 Tomcat插件配置

1.添加插件


	
		
			org.apache.tomcat.maven
			tomcat7-maven-plugin
			2.2
			
				8091
				/
			
		
	

2.配置启动项

亿级流量架构|day01-京淘环境搭建_第29张图片

3.添加源码

亿级流量架构|day01-京淘环境搭建_第30张图片

4.tomcat启动报错

亿级流量架构|day01-京淘环境搭建_第31张图片

图中表示tomcat端口被占用.关闭服务即可.

5.打包报错

亿级流量架构|day01-京淘环境搭建_第32张图片

如果出现上述报错,则按照顺序jt-parent/jt-common/jt-manage

9. 项目水平拆分

9.1 概念描述

说明:按照程序的层级进行拆分(聚合项目)

View层----Controller----Service------dao-------pojo

 

9.2 项目创建

1. 创建项目jt-aa

亿级流量架构|day01-京淘环境搭建_第33张图片

2. 项目类型划分

Jt-aa-controller  war包

Jt-aa-service   jar包

Jt-aa-dao          jar包

Jt-aa-pojo         jar包

 

9.3 水平拆分项目创建规则

1. 选择模块类型

亿级流量架构|day01-京淘环境搭建_第34张图片

2. 创建子模块

亿级流量架构|day01-京淘环境搭建_第35张图片

3. 根据规则创建模块项目

亿级流量架构|day01-京淘环境搭建_第36张图片

 

9.4 水平拆分后项目依赖关系

依赖顺序:

Controller----Service------dao-------pojo

添加继承和依赖

1.父级项目继承

亿级流量架构|day01-京淘环境搭建_第37张图片

2.aa中的依赖

亿级流量架构|day01-京淘环境搭建_第38张图片

3.聚合项目详情

亿级流量架构|day01-京淘环境搭建_第39张图片

打包:

亿级流量架构|day01-京淘环境搭建_第40张图片

你可能感兴趣的:(Java笔记)