JAVA常用开源工具与项目

【XXL开源社区】已经发布一系列开源软件产品,涉及分布式、基础中间件、效率工具等多个领域。包含项目有:任务调度、配置中心、通讯框架(+注册中心)、消息队列、SSO、API管理、爬虫……等等。  

     访问网址: https://www.xuxueli.com/page/projects.html

1.分布式任务调度平台: XXl-JOB

官网使用手册网址: https://www.xuxueli.com/xxl-job/#%E3%80%8A%E5%88%86%E5%B8%83%E5%BC%8F%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6%E5%B9%B3%E5%8F%B0XXL-JOB%E3%80%8B

github源码地址:https://github.com/xuxueli/xxl-job

1.1 架构设计

1.1.1 设计思想

将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。

将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑。

因此,“调度”和“任务”两部分可以相互解耦,提高系统整体稳定性和扩展性;

1.1.2 系统组成

  • 调度模块(调度中心):
    负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块;
    支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE开发和任务报警等,所有上述操作都会实时生效,同时支持监控调度结果以及执行日志,支持执行器Failover。
  • 执行模块(执行器):
    负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效;
    接收“调度中心”的执行请求、终止请求和日志请求等。

1.1.3 架构图

输入图片说明

 2.1 使用总结

       2.1.1 一次调用一个,根据路由策略为如下图,这种模式下执行的效率比较低。

                           

 

 

      2.1.2 一次调用多个,高并发,执行效率高 路由策略为:分片广播

               执行器集群部署时,任务路由策略选择”分片广播”情况下,一次任务调度将会广播触发对应集群中所有执行器执行一次任务,同时系统自动传递分片参数;可根据分片参数开发分片任务;

“分片广播” 以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。

“分片广播” 和普通任务开发流程一致,不同之处在于可以获取分片参数,获取分片参数进行分片业务处理。

    • Java语言任务获取分片参数方式:BEAN、GLUE模式(Java)
      1. // 可参考Sample示例执行器中的示例任务"ShardingJobHandler"了解试用
      2. int shardIndex = XxlJobHelper.getShardIndex();
      3. int shardTotal = XxlJobHelper.getShardTotal();
    • 脚本语言任务获取分片参数方式:GLUE模式(Shell)、GLUE模式(Python)、GLUE模式(Nodejs)
      1. // 脚本任务入参固定为三个,依次为:任务传参、分片序号、分片总数。以Shell模式任务为例,获取分片参数代码如下
      2. echo "分片序号 index = $2"
      3. echo "分片总数 total = $3"

分片参数属性说明:

    1. index:当前分片序号(从0开始),执行器集群列表中当前执行器的序号;
    2. total:总分片数,执行器集群的总机器数量;

该特性适用场景如:

    • 1、分片任务场景:10个执行器的集群来处理10w条数据,每台机器只需要处理1w条数据,耗时降低10倍;
    • 2、广播任务场景:广播执行器机器运行shell脚本、广播集群节点进行缓存更新等

2.接口文档——Swagger

      SWAGGER 官网https://swagger.io/

      SpringBoot集成springfox-swagger2构建restful API :https://blog.csdn.net/u014231523/article/details/54562695

      SpringMVC集成springfox-swagger2构建restful API:https://blog.csdn.net/u014231523/article/details/54411026

      官方Swagger-Wiki使用详情:https://github.com/swagger-api/swagger-core/wiki/Annotations

        首先按照它的规范去定义接口及接口相关的信息。再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,生成多种语言的客户端和服务端的代码,以及在线接口调试页面等等。支持从设计和文档到测试和部署的整个API生命周期的开发。

常用注解    注解手册: https://docs.swagger.io/swagger-core/v1.3.12/apidocs/index.html?com/wordnik/swagger/annotations/ApiResponses.html

名称 描述 属性

@Api

将一个类标记为Swagger资源。 tags–表示说明 
value–也是说明,可以使用tags替代 
但是tags如果有多个值,会生成多个list
@ApiImplicitParam 表示API操作中的单个参数。  
@ApiImplicitParams 包装器,允许多个ApiImplicitParam对象的列表。 name–参数名
value–参数说明 
dataType–数据类型 
paramType–参数类型 
example–举例说明
@ApiModel 提供有关Swagger模型的其他信息。 value–表示对象名 
description–描述 
@ApiModelProperty 添加和操作模型属性的数据。 value–字段说明 
name–重写属性名字 
dataType–重写属性类型 
required–是否必填 
example–举例说明 
hidden–隐藏
@ApiOperation 描述针对特定路径的操作或通常的HTTP方法。 value用于方法描述 
notes用于提示内容 
tags可以重新分组(视情况而用) 
@ApiParam 为操作参数添加其他元数据。 name–参数名 
value–参数说明 
required–是否必填
@ApiResponse 描述操作的可能响应。  
@ApiResponses 包装器,允许包含多个ApiResponse对象的列表。  
@Authorization 声明要在资源或操作上使用的授权方案。  
@AuthorizationScope 描述OAuth2授权范围。  

3.JAVA常用插件

idea代码颜色搭配方案_推荐10个常用IDEA插件:https://blog.csdn.net/weixin_39885469/article/details/111252322

4.JAVA中Idea 使用

  4.1 JAVA中成员变量之间的颜色设置

        

 4.2  idea常用快捷键

Ctrl+Alt+B 进入方法实现
Ctrl+Alt+o 移除无用的包导入
Ctrl+Alt+t try-catch等
Ctrl+Alt+l 代码格式化
Ctrl+Alt+u 查看类图
Ctrl+Alt+v 自动补全返回值
Ctrl+Alt+m 代码块封装成方法
Ctrl+Alt+F12 进入文件硬盘位置
Ctrl+Shift+N 快速打开文件
Ctrl+Shift+空格 代码补全提示
Ctrl+Shift+右键 选中单个单词
Ctrl+N 快速打开类
Ctrl+Shift+F 全局搜索关键字
Ctrl+Shift+U 大小写转换
Ctrl+Q 查看方法注释
Ctrl+G 定位到多少行
Ctrl+E 最近的文件
Ctrl+Y 删除当前行
Ctrl+R 文本替换
Ctrl+o 重写方法
Ctrl+i 实现接口方法
Ctrl+F12 显示当前文件的结构(查看类所有方法)
Ctrl+空格 代码自动补全
Ctrl+e 最近打开的文件
Ctrl+Shift+e 最近修改的文件
Alt+F7 查看方法被调用的地方
Alt+7 查看类所有方法
Alt+Enter 导入包
Shift+Alt+上/下 选中代码上下移动

Alt+INSERT 生成方法

 5.java中的单元测试 

     5.1 Java单元测试(Junit+Mock+代码覆盖率)   https://www.cnblogs.com/AloneSword/p/4109407.html

           其中mock测试使用手册:https://alibaba.github.io/testable-mock/#/zh-cn/doc/use-mock

     5.2代码覆盖率用:IDEA中Coverage组件可以展现的覆盖率

     5.3Squaretest 自动生成Mock单元测试。https://blog.csdn.net/sun5769675/article/details/111043213

     5.4 diff-cover 增量代码单测覆盖率统计工具(待学习)

6.MyBatis 与MyBatis-Plus 的简单使用

    MyBatis官网地址: https://mybatis.org/mybatis-3/zh/index.html
    MyBatis-Plus官网地址:https://mybatis.plus/guide/#%E7%89%B9%E6%80%A7
    常用查询实用案例:https://www.cnblogs.com/zoro-zero/p/12511605.html

 常用转义字符:

Mybatis转义字符表
&lt; < 小于
&gt; > 大于
&amp; &
&apos; ' 单引号
&quot; " 双引号

7.时序图:

在线工具:https://mermaid-js.github.io/mermaid-live-editor/edit

在线文档: https://mermaid-js.github.io/mermaid/#/sequenceDiagram

使用举例:

sequenceDiagram

autonumber
    上游系统(大客户,优惠券,服务码)->>数据落盘(财务核算): 同步财务标准化数据
    数据落盘(财务核算)->>数据落盘(财务核算):标准化数据验证
  alt 验证成功
  数据落盘(财务核算)->>流程引擎(数据中心):创建任务进流转引擎(落盘)
  流程引擎(数据中心)->>落盘数据落库(数据中心):发起数据落盘流程
  落盘数据落库(数据中心)->>落盘数据落库(数据中心):数据验证,幂等性验证
  alt 验证成功
  落盘数据落库(数据中心)-->>流程引擎(数据中心):数据中心落盘成功
  流程引擎(数据中心)-->>数据落盘(财务核算):落盘成功结果通知
  数据落盘(财务核算)-->>上游系统(交易平台):成功结果通知
  流程引擎(数据中心)->>数据清洗(财务核算):创建任务进流转引擎(清洗任务)
  par 多线程并行处理
  数据清洗(财务核算)->>主数据(数据中心):查询相关主数据信息
  Note over  数据清洗(财务核算),主数据(数据中心): 【客户信息、供应商信息、利润中心、成本中心、记帐码、收款公司】
  主数据(数据中心)-->>数据清洗(财务核算):返回相关数据信息
  数据清洗(财务核算)->>商品信息(商品平台):查询商品信息
  Note over  数据清洗(财务核算),商品信息(商品平台): 【业务线、商品类目】
  商品信息(商品平台)-->>数据清洗(财务核算):返回相关数据信息
  
  数据清洗(财务核算)->>订单信息(交易系统):查询订单基础信息
  Note over  数据清洗(财务核算),订单信息(交易系统): 【订单产品信息,订单完成时间,订单类型,订单渠道】
  订单信息(交易系统)-->> 数据清洗(财务核算):返回相关数据信息

  数据清洗(财务核算)->>权益发起方(保养年卡,门店美容,拼团):查询权益相关基础信息
  Note over  数据清洗(财务核算),权益发起方(保养年卡,门店美容,拼团): 【结算价格,退卡价,发码订单】
  权益发起方(保养年卡,门店美容,拼团)-->> 数据清洗(财务核算):返回相关数据信息

  end
    数据清洗(财务核算)->>数据清洗(财务核算):组装清洗数据
    数据清洗(财务核算)-->> 流程引擎(数据中心):清洗组装数据结果通知
   alt 返回组装数据
   流程引擎(数据中心)->>清洗数据落库(数据中心):发起清洗数据落盘
   清洗数据落库(数据中心)->>清洗数据落库(数据中心):数据验证,幂等性验证
  清洗数据落库(数据中心)-->>流程引擎(数据中心):数据中心落盘结果通知
 alt 验证成功
  流程引擎(数据中心)-->>数据清洗(财务核算):清洗成功结果通知
  流程引擎(数据中心)->>流程引擎(数据中心):创建财务记账任务流程
else 验证失败
  流程引擎(数据中心)-->>数据清洗(财务核算):清洗失败通知
  流程引擎(数据中心)->>异常数据记录(数据中心):异常数据记录,后续触发补偿处理
 end
   else 抛出异常信息
  流程引擎(数据中心)->>异常数据记录(数据中心):异常数据记录,后续触发补偿处理
end
  else 验证失败
  流程引擎(数据中心)-->>数据落盘(财务核算):落盘失败结果通知
  流程引擎(数据中心)->>异常数据记录(数据中心):异常数据记录,后续触发补偿处理
  end

  else 验证失败
  数据落盘(财务核算)-->> 上游系统(交易平台):返回失败信息
  上游系统(交易平台)->> 上游系统(交易平台):错误数据落库,后续监控&补偿
  end
View Code

 

  

 

posted @ 2020-11-29 22:01  冰融心  阅读(313)  评论(0编辑  收藏  举报