一、整体概述

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提交保存

反倒是

最新文章

  1. python print及格式化
  2. 《2016ThoughtWorks技术雷达峰会----微服务架构》
  3. Qt程序启动画面播放(gif与swf两种动画格式)
  4. Selenium2学习-008-WebUI自动化实战实例-006-易迅登录之 frame 处理
  5. 022. ASP.NET为DataSet中数据集添加关系及动态创建主子表和添加主子表关系
  6. 07-Java 中的IO操作
  7. 【C语言模拟实现】浮点数-转-定点数
  8. kettle Row Normaliser(行转列)
  9. 排序算法源码(JAVA)
  10. gdbserver 安卓apk
  11. python re库的正则表达式学习笔记
  12. idea使用破解版mybatis plugin插件失败,idea打不开的解决方案
  13. Apache之Rewrite和RewriteRule规则梳理以及http强转https的配置总结
  14. android okhttp的使用
  15. 最小生成树 prime算法 UVALive - 6437
  16. 通过blockchain_go分析区块链交易原理
  17. cocos代码研究(2)Layer学习笔记
  18. 不用中间变量,交换a、b值
  19. [转]编译防火墙——C++的Pimpl惯用法解析
  20. JavaScript学习总结(二十一)——使用JavaScript的数组实现数据结构中的队列与堆栈

热门文章

  1. (二十五)防编译后函数名通过ida查看到
  2. EasyUI+JSP之java读取数据库后JSON格式数据的返回及调用
  3. kubernetes之node资源紧缺时pod驱逐机制
  4. 记一次引用maven插件报错解决方法
  5. 【完美解决】vue,页面跳转样式错位但是刷新又好了的情况
  6. Java中的数据结构通俗易懂的介绍
  7. hbuilderX创建vue项目之添加router路由(前端萌新)
  8. Python3-for-enumerate
  9. Verilog写入变量值到文件语句
  10. IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表