千里马平台介绍(2)

千里马平台的核心是微服务架构。微服务架构有很多种,我们锁定springCloud。服务注册与发现锁定nacos,网关为spring gateway。选型曾经花了很多时间,做了很多比较,我认为这是目前最优组合。不选用这套架构的同学们可以转学了,大家不是一条道上的。

​版本选择也是个头痛问题,有关版本的问题可见版本说明

千里马架构当前选择版本如下:

​    <spring.boot.version>2.3.2.RELEASE</spring.boot.version>
   <spring.cloud.version>Hoxton.SR9</spring.cloud.version>
   <spring.cloud.alibaba.version>2.2.6.RELEASE</spring.cloud.alibaba.version>

以上摘自qlm-parent的pom文件。对应代码会择机开源。 nacos为1.4.2(友情提醒,早期版本的nacos有漏洞CVE-2021-29441)
jdk用1.8
后续如果有版本变动会在社区发布。记住一个原则,版本不是最新最好。
微服务架构中最核心的部分是前后端接口结构。任何一个平台甚至任何一个前后端分离的系统都需要定义这样一个结构。参考其他架构结合自身经验,千里马平台的接口结构定义为:

package org.qlm.io.vo;
public class RequestInfo implements Serializable {
  //1.0
  @Schema(description = "请求包版本标识 用于版本兼容")
  private String version;
  @Schema(description = "请求者")
  private String consumer;//请求者 标识发出请求的系统
  @Schema(description = "请求流水号")
  private String serialNo;//请求流水号
  @Schema(description = "请求者语言")
  private String language;//请求者 要求使用的语言 zh-cn zh-tw en jp
  //分页要求参数
  @Schema(description = "页码")
  private Integer page;//页码  下标从0开始
  @Schema(description = "每页最大数据")
  private Integer size;//每页最大数据
  //附加参数
  @Schema(description = "附加参数 简单的单参数请求可以使用该参数")
  private String tag;
  @Schema(description = "描述tag的用处")
  private String tagDescription;
  @Schema(description = "附加参数2 简单的单参数请求可以使用该参数")
  private String tag2;
  @Schema(description = "描述tag2的用处")
  private String tagDescription2;
}

以上代码摘自qlm.io

结构早期还有模板类T data,用于传入业务数据,很多系统也是这样的设计。但是在swagger中不能解析出结构。设计改为,如果需要传入简单1-2个参数,使用​tag、tag2,如果需要传入复杂参数,需要自行定义请求类(需继承RequestInfo),如用户管理dto类定义:

@Schema(name="UserRequestDto",description="用户请求信息")
public class UserRequestDto  extends RequestInfo {
  @Schema(name="userId",description="用户ID")
  private String userId;
  @Schema(name="loginName",description="登录账号")
  private String loginName;

以上代码摘自qlm-dto-auth
​前端传入简单参数的写法(根据id删除用户):

export function deleteUser(id) {
const RequestInfo={
 version:"1.0",
 consumer:store.getters.QLMConfig.application_id,
 serialNo:uuid.v1(),
 tag:id
}
return request({
 url: store.getters.QLMConfig.qlm_gateway_url+'/usermanager/deleteUser',
 method: 'post',
 data:RequestInfo
})
}

传入复杂参数的写法(查询用户)

​export function getUserList(data){
const UserQueryDto={
  version:"1.0",
  consumer:store.getters.QLMConfig.application_id,
  serialNo:uuid.v1(),
  page:data.pageNum-1,
  size:data.pageSize,
  nickName:"",
  userName:data.userName,
  isuse:data.isuse,
  loginName:data.loginName,
  infosource:data.infosource,
  tag:"",
}

return request({
  url:store.getters.QLMConfig.qlm_gateway_url+'/usermanager/getUserListForPage',
  method: 'post',
  data:UserQueryDto
})
}

以上摘自@/api/qlm_user.js
以上结构完全可以做到全行业统一的,这就是千里马联盟的使命之一。
千里马平台代码会择机发布,希望同道志士共同努力。​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道不孤,众行致远

请给我加油

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值