一、整体概述

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补充的更多相关文章

  1. 如何从maven资源库下载jar包

      如何从maven资源库下载jar包 CreationTime--2018年6月7日09点00分 Author:Marydon 一.前提 需要安装并配置maven环境 二.准备工作 1.在桌面创建一 ...

  2. 解决IDEA中Maven加载依赖包慢的问题

    原理:maven加载jar包过程,默认的是先扫描本地仓库,若本地仓库没有,则扫描远程仓库下载.默认的conf/settings.xml文件没有配置远程仓库,所以扫描的是maven的中央仓库(在国外), ...

  3. Maven工程引入jar包

    Maven项目引入jar包的方法 法一.手动导入:项目右键—>Build Path—>Configure Build Path—>选中Libraries—>点击Add Exte ...

  4. maven加载jar包配置

    maven build时报程序包不存在和找不到符号的错误,但是代码中不报错,如下: [ERROR] Failed to execute goal org.apache.maven.plugins:ma ...

  5. maven本地安装jar包同时生成pom文件

    maven 本地安装jar包:mvn install:install-file -Dfile=本地路径/ojdbc12.jar -DgroupId=com.oracle -DartifactId=oj ...

  6. 如何在maven中添加jar包

    Maven 中央仓库地址: 1. http://www.sonatype.org/nexus/ 2. http://mvnrepository.com/ (本人推荐仓库) 3. http://repo ...

  7. maven 加入本地jar包

    Apache Maven,由Apache软件基金会所提供.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建.报告和文档等步骤.曾是Jakarta项目的子项目,现 ...

  8. 解决Maven关于本地jar包的打包处理

    在使用maven进行jar包管理时,通过我们都是通过maven去下载一些jar包,但有些jar在maven上没有,所以就就可能在本地直接手动加入一些需要用到的外部jar包.但如果我们用maven pa ...

  9. 转:maven项目添加jar包.

    很多新手都不知道如何在maven项目里添加jar包. 以前我还没接触maven的时候下载过一个demo,是maven项目. 我居然是照着他的pom.xml文件一个一个的写!!! 很多人认为理所当然的东 ...

随机推荐

  1. Maven 基础概念

    Project:任何你想构建的事务Maven都可以认为它们是工程,这些工程被定义为工程对象模型(project Object Model POM) 一个工程可以依赖其他的工程,一个工程也可以由多个子工 ...

  2. 目标检测之RefineDet

    RefineDet 一.相关背景 中科院自动化所最新成果,CVPR 2018 <Single-Shot Refinement Neural Network for Object Detectio ...

  3. 《浏览器工作原理与实践》<05>渲染流程(上):HTML、CSS和JavaScript,是如何变成页面的?

    在上一篇文章中我们介绍了导航相关的流程,那导航被提交后又会怎么样呢?就进入了渲染阶段.这个阶段很重要,了解其相关流程能让你“看透”页面是如何工作的,有了这些知识,你可以解决一系列相关的问题,比如能熟练 ...

  4. 关于网站子目录绑定二级域名的方法(php网站手机端)

    最近帮客户做zencart网站手机模板用到了二级域名,通过判断手机访问来调用二级目录程序,http://afish.cnblogs.com/ 怎么说都比 http://www.cnblogs.com/ ...

  5. poj1236 Network of Schools(SCC缩点+结论推导)

    第一问简单不讲. 第二问简化后问题是给一张DAG求最少添加几条边使得DAG变成一个SCC.首先所有中间点(有入度有出度)肯定直接顺着走到无出度点,所以肯定是无出度点连向无入度点. 把无入度点作为点集S ...

  6. C# 内存管理和指针 (13)

    本章要点 运行库在栈和堆上分配空间 垃圾回收 使用析构函数 和 SYstem.IDisposable 接口来释放非托管的资源 C#中使用指针的语法 使用指针实现基于栈的高性能数组 值类型数据 程序第一 ...

  7. 两种atm取款方式

    1.//函数 密码 账号function User(username, password, account){ this.username = username; this.password = pa ...

  8. Eclipse断点种类

    本文是Eclipse调试(1)——基础篇 的提高篇.分两个部分: 1) Debug视图下的3个小窗口视图:变量视图.断点视图和表达式视图 2) 设置各种类型的断点 变量视图.断点视图和表达式视图 1. ...

  9. Hive中遇到全角

    今天在梳理银行SQL业务的时候出现了一个全角的问题:两个种代码 都可以 使用了UDF函数解决 package 广发; import org.apache.hadoop.hive.ql.exec.Des ...

  10. Codeforces Round #509 (Div. 2) E. Tree Reconstruction(构造)

    题目链接:http://codeforces.com/contest/1041/problem/E 题意:给出n - 1对pair,构造一颗树,使得断开其中一条边,树两边的最大值为 a 和 b . 题 ...