001-软件架构概览、maven补充【分包工程、合并包、web容器插件】、git补充
一、整体概述
1.1、共性问题
技术瓶颈、不成体系、不能实际使用、不能落地、无法入门
1.2、目标-软件架构
专注于构建:高可扩展、高性能、大数据量、高并发、分布式的系统架构。
各项技术、组合构建分布式的、高可扩展的系统架构,为高性能、大数据量、高并发的处理和性能优化做好准备。
软件架构和软件设计关注的是不同层面的体系
1.3、内容概述
1、构建基本的业务功能模块
(基于maven+git+spring mvc+spring+mybatis+ehcache+mysql+X-gen代码生成),前端页面jquery+css+html
基本业务:用户管理、商品管理、购物车、订单管理、库存管理
2、高扩展性的分布式体系架构(基于nginx+Varnish+Memcache+ActiveMQ)
3、Nosql的合理使用和架构优化(基于MongoDB)
4、分布式文件存储和架构优化(基于MogileFS)
说明
1、maven、springmvc、spring、x-gen等
2、mybatis、ehcache、mysql等
3、git、nginx、Varnish、Memcache、ActiveMQ、MongoDB、MogileFS等
1.4、具体内容
1、准备
Maven:分模块、分工程、多模块、多web应用、合并成一个war包
git:入门egit,冲突解决
2、不关注业务、技术整合
大数据量、高并发下,并发读、并发写、并发混合读写性能等
3、架构应用的技术、安装配置
nginx:各个模块的配置使用、反向代理、负载均衡、动静分离、Rewrite、配置优化和使用建议等
Varnish:VCL基础和进阶、负载均衡、缓存管理、日志、监控分析并优化Varnish等
Memcache:缓存读写、分布式缓存、一致性hash算法、虚拟节点、命中率的提升、缓存管理与监控、理解Memcache的数据存储方式、最佳实践等
ActiveMQ:JMS编程、基于ActiveMQ的并发、ActiveMQ的集群、管理监控、消息传递、持久化、ActiveMQ高级特性、与tomcat集成、与spring集成、性能优化
MongoDB:CURD操作、索引、集合、聚合框架、副本集、分片、应用管理、运行监控、管理、备份、Java操作MongoDB、与Spring集成、最佳实践等
MogileFS:配置和使用、理解MogileFS、Java客户端的应用开发、文件存储、管理监控
4、整体发布和部署分布式部署
整理代码、整合war包、发布服务
配置nginx和varnish、配置mogilefs,全局搭建
二、maven补充
详细参看:maven系列博客
2.1、分模块、分工程管理
architecture1web:最后合并用的war
common:公共包
customermgr:用户或客户管理webapp
goodsmgr:商品管理
goodsmgrweb:商品管理
2.2、多模块、多web应用、合并成一个war包
1、在总的web的pom里面,加入要合并的war内容,如下:在build下plugins
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<overlays>
<overlay>
<artifactId>customermgr</artifactId>
<groupId>com.github.bjlhx15.architecture</groupId>
</overlay>
<overlay>
<artifactId>goodsmgrweb</artifactId>
<groupId>com.github.bjlhx15.architecture</groupId>
</overlay>
</overlays>
</configuration>
</plugin>
2、同时依赖也要对应添加,注意依赖包的type
<dependencies>
<dependency>
<artifactId>customermgr</artifactId>
<groupId>com.github.bjlhx15.architecture</groupId>
<version>1.0-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<artifactId>goodsmgrweb</artifactId>
<groupId>com.github.bjlhx15.architecture</groupId>
<version>1.0-SNAPSHOT</version>
<type>war</type>
</dependency>
</dependencies>
3、创建基础项目并且合并后整理,参看分支:dev01-splitbase
如果多个war有相同路径且同名的文件,如果总的web里面有,那么总的这个文件会覆盖分支的;如果总的没有,那么看plugin的合并顺序,留下第一个的文件
4、在每个要测试的web的pom里面,加入web容器
jetty配置
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.5.v20170502</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<stopPort>9999</stopPort>
<httpConnector>
<port>8081</port>
</httpConnector>
<webAppConfig>
<contextPath>/goods</contextPath>
</webAppConfig>
</configuration>
</plugin>
三、git补充
详细参看:git系列博客
3.1、补充技术点
git的版本号都是生成的一个hash值
windows上工具git 和 TortoiseGit
推荐直接使用idea上git默认插件即可,eclipse上egit;
git server,可以选择使用github、码云等
3.2、其他
Fetch和Pull区别:Fetch:从远程获取最新到本地,不自动merge;Pull=Fetch+merge
Revert和reset:
Reset:回滚到指定版本号,会将当前head内容重置,不留痕迹【soft:留树和索引;Mixed:留树,不要索引,hard,都不要(一般已经重置了就都不要了)】;
Revert:撤销某次提交,这次撤销也会作为一次commit提交保存
反倒是
001-软件架构概览、maven补充【分包工程、合并包、web容器插件】、git补充的更多相关文章
- 如何从maven资源库下载jar包
如何从maven资源库下载jar包 CreationTime--2018年6月7日09点00分 Author:Marydon 一.前提 需要安装并配置maven环境 二.准备工作 1.在桌面创建一 ...
- 解决IDEA中Maven加载依赖包慢的问题
原理:maven加载jar包过程,默认的是先扫描本地仓库,若本地仓库没有,则扫描远程仓库下载.默认的conf/settings.xml文件没有配置远程仓库,所以扫描的是maven的中央仓库(在国外), ...
- Maven工程引入jar包
Maven项目引入jar包的方法 法一.手动导入:项目右键—>Build Path—>Configure Build Path—>选中Libraries—>点击Add Exte ...
- maven加载jar包配置
maven build时报程序包不存在和找不到符号的错误,但是代码中不报错,如下: [ERROR] Failed to execute goal org.apache.maven.plugins:ma ...
- maven本地安装jar包同时生成pom文件
maven 本地安装jar包:mvn install:install-file -Dfile=本地路径/ojdbc12.jar -DgroupId=com.oracle -DartifactId=oj ...
- 如何在maven中添加jar包
Maven 中央仓库地址: 1. http://www.sonatype.org/nexus/ 2. http://mvnrepository.com/ (本人推荐仓库) 3. http://repo ...
- maven 加入本地jar包
Apache Maven,由Apache软件基金会所提供.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建.报告和文档等步骤.曾是Jakarta项目的子项目,现 ...
- 解决Maven关于本地jar包的打包处理
在使用maven进行jar包管理时,通过我们都是通过maven去下载一些jar包,但有些jar在maven上没有,所以就就可能在本地直接手动加入一些需要用到的外部jar包.但如果我们用maven pa ...
- 转:maven项目添加jar包.
很多新手都不知道如何在maven项目里添加jar包. 以前我还没接触maven的时候下载过一个demo,是maven项目. 我居然是照着他的pom.xml文件一个一个的写!!! 很多人认为理所当然的东 ...
随机推荐
- Dart 面向对象 类 方法
Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类. 面向对象编程(OOP)的三个基本特征是:封装.继承.多态 封装:封装是对象和类概念的主要特性. ...
- oppo面经-java开发
Oppo一面(1)自我简介(2)介绍一个自己做过的最得意的项目,项目的细节,难点,怎么解决的,还存在的问题,有什么优化的想法吗(这个我说了很长时间,面试官说非计算机专业的,有这种实习经验确实能加分)( ...
- Python3+Appium学习笔记01-环境配置(上)
公司可能也有关于对app自动化的一些想法,让我去研究下.当然以移动互联网的热度.对于app自动化测试技术听闻已久.也一直想要去学习.正好.这次可以在工作时间中学习.emmm.希望自己能坚持把这个系列更 ...
- cmake学习笔记之add_library、target_link_libraries和link_directories
cmake是Linux(这里默认是Ubuntu系统)下常使用的编译C++的工具,而使用cmake就需要先在CmakeLists.txt文件中对编译规则进行.这里介绍常用的三种指令add_library ...
- 第三章 URL与视图
配置文件两种方式详解 先讲两种直接传参: 直接简单传参 app =Flask(__name__) app.config['DEBUG']=True app.config.update( DEBUG=t ...
- Qt中PushButton的pressed,released,clicked三种响应的区别
Qt的PushButton的常用的三种响应有pressed,released和clicked. 优先级:pressed>released>clicked 按下按钮pressed函数的内容, ...
- (八)树控件(Tree Control),标签控件(tab control)
树控件 基于对话框创建工程 // 01_TreeCtrlDlg.cpp : 实现文件 // #include "stdafx.h" #include "01_TreeCt ...
- HDU - 5528Count a * b 数学公式推导
HDU - 5528Count a * b 照着这个写的,忘了哪个大佬博客里的了, 但很多初学者,像我一样可能不懂其中一些符号的意义,还有为什么可以这样推导,所以我自己又推导了一下,并用自己的观点解释 ...
- NSObject和反射2
NSObject和反射2. commend +R run id stu=[Student student]; // –> Student *stu=[Student student]; : ...
- 利用Python构建时间序列模型解决实际问题的正确姿势
要本着应用到实际工作中目的去学时间序列分析,才能深入浅出的学会,不要纠结于理论,只听我的,我有信心说明白. 本章内容 趋势分析 序列分解 序列预测 序列分解 统计学基础铺垫 划分 时间序列按照季节性划 ...