• 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>
    View Code

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

    反倒是

  • 相关阅读:
    第一阶段冲刺第三天
    第一阶段冲刺第二天
    第一阶段冲刺第一天
    典型用户和场景
    第十周学习进度条
    第九周学习进度条
    会议视频
    课堂练习……找水王
    小组项目需求——NABCD
    第二阶段个人总结三
  • 原文地址:https://www.cnblogs.com/bjlhx/p/10909182.html
Copyright © 2020-2023  润新知