• 敏捷开发使用


    1.敏捷开发

    	敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
    
    • 1

    2.敏捷开发优势

    
    如果不进行maven父子工程搭建会有什么问题:
    一、业务耦合性高,体积大,A17 in one
    所有的业务都在一个大工程里面,体积庞大,如果需求变更频繁,无法快速满足新业务快速上线和持续交付。
    二、部署麻烦
    开发时,一处修改,需要重启整个服务,启动耗时长。
    每次局部小改动上线,需要对整个系统重新打包部署,部署周期长。
    三、水平扩展性差
    由于是单体应用,不能做某些局部功能对高并发要求高而单独部署,从而造成服务在某些时段响应特别慢。好医生预约挂号病例导入导出
    ---部署到服务器----并发量---集群
    四、稳定性差
    在某一时段,一个高并发请求会导致整个服务宕机,轻则响应慢,重则停止对外提供服务。给用户造成不可估量的损失。
    五、代码维护成本高
    业务在不停迭代的同时,源代码也在不停的更新迭代,源代码的作者也是换了一波又一波,造成后来者很难理解和维护这些代码,更为恐怖的是多处地方出现重复的代码。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3.项目拆分

    横向拆分,即按照不同的业务功能,拆分成不同的微服务,如天气数据采集、数据存储、天气查询等服务,形成独立的业务领域微服务集群
    
    • 1
    纵向拆分,即把一个业务功能里的不同模块或组件进行拆分。例如,把公共组件拆分成独立的基础设施,下沉到底层,形成相对独立的基础设施层
    
    • 1

    4.项目纵向拆分

    1. 创建一个maven项目 作为所有项目的父目录
    选择quickstart 。 创建完成之后将src目录删除 配置pom文件为父项目
    
    
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0modelVersion>
        <groupId>com.aaagroupId>
        <artifactId>haoyishengartifactId>
        <name>haoyishengname>
        <packaging>pompackaging>
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    2.选择父项目 右键-- new module
    	在此处创建子项目
    此时在创建的子项目的pom文件中会出现
    	<parent>
            <groupId>com.aaagroupId>
            <artifactId>haoyishengartifactId>
            <version>Unknownversion>
        parent>
    
    而在父项目中会出现
    	<modules>
            <module>nd-commonmodule>
            <module>nd-servicemodule>
            <module>nd-adminmodule>
        modules>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    此时一个父子项目就搭建好了

    在这里插入图片描述

    5.项目依赖

    nd-common  公共资源(工具类等)
    nd-service 业务操作(service mapper domain)
    nd-admin 对外API (controller)
    
    需要在项目中导入这个依赖 才能完成项目之间的互相调用
    admin 依赖 service 就是在admin的pom中导入service的依赖
    		<dependency>
                <groupId>com.aaagroupId>
                <artifactId>nd-serviceartifactId>
                <version>1.0-SNAPSHOTversion>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    6.项目的第三方依赖

    1.在父项目的pom文件中 导入所有的jar包 所有子项目都可以用
    	但是在子项目中,往往不需要部分jar包
    	所以子项目只需要使用它所需要的jar包
    
    2.各自导入各自需要的都需要的在最底层导入
    nd-commpn 公共资源((工具类等)              1ombok spring aop
    nd-service 业务操作(service mapper domain) mybatis
    nd-admin 对外API (contro1ler)              mvc
    	common中需要 lombok但是 service依赖于common 会导致lombok也会导入到service中
    	
    3.
     	   <dependency>
                <groupId>org.projectlombokgroupId>
                <artifactId>lombokartifactId>
                <version>1.18.28version>
                <optional>trueoptional> 设置为true表示不可依赖传递
            dependency>
    	这样会导致版本迭代问题
    4. 解决方案:在父项目中引入 子项目中添加 
    
    	父项目pom
    	<dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.projectlombokgroupId>
                    <artifactId>lombokartifactId>
                    <version>1.18.28version>
                dependency>
            dependencies>
        dependencyManagement>
    	
    	子项目pom
            <dependency>
                <groupId>org.projectlombokgroupId>
                <artifactId>lombokartifactId>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
  • 相关阅读:
    Ubuntu18 无法加载登录界面【100%解决】
    科学计算与仿真-高斯牛顿法的非线性最小二乘问题简单介绍与应用
    【JS】你不知道的 console 命令
    12月准备进军开源社区啦
    强化学习 Proximal Policy Optimization (PPO)
    Codeforces Round #833 (Div. 2)
    守护进程daemon
    【软件安装】Linux系统中安装MySQL数据库服务
    NR频率资源划分
    Greenplum 对比 Hadoop
  • 原文地址:https://blog.csdn.net/g877835148/article/details/133683618