统一ID服务

代码已经修改 调用方式 为restful请求  或者 feign请求  请参考 wiki:   http://192.168.120.46:8090/display/peixun/akucun+Guid

 

项目组对接人员采用的方式版本修改最后时间
订单贺周群工具类1.0.20-SNAPSHOT已修改,11月15日上线
支付崔宏辉工具类本地暂时不做修改
旧订单王硕星工具类1.0.20-SNAPSHOT已修改,最迟11月20日上线
旧版会员蔡建zuulakucun-base-data-new11月15日修改

 

 

guid ID 18 三个环境 

restful 调用方式
dev: http://192.168.120.97:8080/base/guid/31/31
test: http://172.19.1.198:8080/base/guid/31/31
prod: http://addr.infra.aikucun.com/base/guid/31/31

feign调用方式: 

<dependency>
<groupId>com.akucun.base.data</groupId>
<artifactId>base-data-facade-stub</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

调用其中的接口:  com.akucun.base.data.stub.GuidRemote

 

已下内容已经过期 , 供参考

 

18位long型 ID生成算法snowflake原理:   https://segmentfault.com/a/1190000011282426

 

1) spring项目引用 akucun-common-base: 

<dependency>     

        <groupId>com.akucun</groupId>     

        <artifactId>akucun-common-base</artifactId>     

        <version>${com.akucun.cloud.base.version}</version>

</dependency> 

当前版本 :

<com.akucun.cloud.base.version>0.0.1-SNAPSHOT</com.akucun.cloud.base.version>
2) 项目中添加如下类

 

PrimaryKeyGenerater.java

3) 项目启动添加参数

 

-Dguid.datacenter.id=2  -Dguid.machine.id=3

 

guid.datacenter.id数据中心
guid.machine.id数据中心中对应的服务器编号

 

4) 获取对应数据
SpringUtil.getBean(PrimaryKeyGenerater.class).nextId()

datacenter:  SpringUtil.getBean(PrimaryKeyGenerater.class).getDatacenterId()

machine: SpringUtil.getBean(PrimaryKeyGenerater.class).getMachineId()

 

 

大厂的id设计
全局数据库生成唯一id型:
京东商城订单号格式:157444499 全局数据库
苏宁易购订单号格式:2000839647 全局数据库
凡客诚品订单号格式:213052230059 业务编码+年的后2位+月+日+订单数
银泰网订单号格式:10030522161715 年的第三位数+业务编码+年的后1位+月+日+订单数
淘宝的订单号格式:126036803257340376 14位为序号+买家ID的倒数1-2位+买家ID的倒数3-4位
Twitter Snowflake 格式 :458607675730102138 14位时间戳+ 数据中心2+服务器2位 + 顺序号4位
可归类4种:
方案1: 利用全局数据库(rmdb or nosql) 提供自增的字段ID, 具体业务端可一次读取多条id 提高性能 -- id 短 , 性能一般,维护成本高, 可读性一般
方案2: 年月日+日级别一定位数的序号(如 00001, 序号维护同方案1) -- id 短 , 性能一般,,维护成本高, 可读性高
方案3:淘宝方案 4位序号+买家4位ID -- id 长, 性能一般,,维护成本高, 可读性高只需读取后6位基本可判断订单
方案4: Twitter Snowflake方案 -- id 长, 性能高,,维护成本底, 可读性差 , 可参考方案3 把后4位改为用户id后4位组合
爱库存对id的需求场景:
1. 订单ID (完整编号、短号)
2. 发货单ID (完整编号、短号)
3. 代购ID (会员编号) (亿级)
4. 商家ID (千万级)
5. 售后申请服务号 (亿级)
6. 支付流水号
7. 支付退款流水号
8. 业务上使用的合并支付单号
方案选取原则:
1: 12位左右ID 选择方案2
2: 短id 选择方案1
3: 考虑数据中心的概念 选择方案4 ( 当前新项目采用此方案 , 新会员, 商户商家)

 

转载于:https://www.cnblogs.com/wzk-0000/p/11079471.html

<think>我们正在讨论UDS(统一诊断服务)协议中的服务ID(ServiceIdentifier,SID)。用户特别询问了与读取和清除DTC(诊断故障码)相关的服务ID,以及ISO14229标准中的定义。根据之前的对话,我们已经知道读取DTC使用服务$19$(十六进制),清除DTC使用服务$14$(十六进制)。现在用户要求提供UDS服务ID列表,尤其是与DTC操作相关的部分。根据ISO14229-1标准,UDS定义了一系列服务。以下列出部分关键服务ID,特别是与DTC相关的服务:1.**诊断和通信管理功能单元**:-$10$:诊断会话控制-$11$:ECU复位-$3E$:待机握手(TesterPresent)-$83$:访问定时参数-$84$:安全访问2.**数据传输功能单元**:-$22$:按标识符读取数据-$2E$:按标识符写入数据-$23$:按地址读取内存-$24$:按地址写入内存3.**存储数据传输功能单元**:-$14$:清除诊断信息(ClearDiagnosticInformation)—用于清除DTC-$19$:读取DTC信息(ReadDTCInformation)—用于读取DTC及其相关信息-$2A$:按周期标识符读取数据-$31$:例程控制(启动、停止或查询例程)4.**输入输出控制功能单元**:-$2F$:输入输出控制5.**远程激活例程功能单元**:-$31$:例程控制(同上)6.**上传下载功能单元**:-$34$:请求下载-$35$:请求上传-$36$:传输数据-$37$:请求退出传输其中,与DTC操作直接相关的两个服务是:-**$19$(ReadDTCInformation)**:用于读取DTC信息,包括已存储的DTC列表、DTC的快照数据(Snapshot)等。该服务有多个子功能,如:-$01$:报告已确认的DTC(ReportDTCByStatusMask)-$02$:报告DTC的快照数据(ReportDTCSnapshotIdentification)-$03$:报告DTC的扩展数据(ReportDTCExtendedDataRecord)-$04$:报告已检测到的DTC(ReportNumberofDTCByStatusMask)-$06$:报告支持的DTC(ReportSupportedDTC)-$0A$:报告所有支持的DTC(ReportAllSupportedDTCs)-等等。-**$14$(ClearDiagnosticInformation)**:用于清除诊断信息,主要是清除DTC。该服务通常需要指定清除哪个内存区域(例如,所有DTC、特定组的DTC)。请求格式中,通常使用$FFFFFFFF$来表示清除所有DTC。此外,其他服务也可能间接与DTC相关,例如:-$31$(例程控制):可以执行特定的诊断例程,例如重置特定的学习值或执行自检,这可能会影响DTC的状态。-$10$(诊断会话控制):切换会话模式(如从默认会话到扩展诊断会话)可能会影响DTC的存储和报告行为。关于ISO14229标准,它是UDS协议的基础,定义了上述服务以及报文格式、状态转换等。因此,总结用户关心的两个服务:-读取DTC:服务$19$-清除DTC:服务$14$同时,我们还可以提供更完整的UDS服务ID列表(仅列举常用部分):|服务ID(十六进制)|服务名称(英文)|服务名称(中文)||-------------------|-----------------------------------|--------------------------||$10$|DiagnosticSessionControl|诊断会话控制||$11$|ECUReset|ECU复位||$14$|ClearDiagnosticInformation|清除诊断信息||$19$|ReadDTCInformation|读取DTC信息||$22$|ReadDataByIdentifier|按标识符读取数据||$23$|ReadMemoryByAddress|按地址读取内存||$24$|WriteMemoryByAddress|按地址写入内存||$27$|SecurityAccess|安全访问||$28$|CommunicationControl|通信控制||$2A$|ReadDataByPeriodicIdentifier|按周期标识符读取数据||$2C$|DynamicallyDefineDataIdentifier|动态定义数据标识符||$2E$|WriteDataByIdentifier|按标识符写入数据||$2F$|InputOutputControlByIdentifier|按标识符输入输出控制||$31$|RoutineControl|例程控制||$34$|RequestDownload|请求下载||$35$|RequestUpload|请求上传||$36$|TransferData|传输数据||$37$|RequestTransferExit|请求退出传输||$3E$|TesterPresent|待机握手||$83$|AccessTimingParameter|访问定时参数||$84$|SecuredDataTransmission|安全数据传输|注意:服务ID的范围是$00$到$FF$,但并非所有值都被使用,有些保留给未来扩展或厂商自定义。以上内容均基于ISO14229-1标准[^1][^2]。现在,根据用户要求,生成相关问题:</think>### UDS服务ID列表(ISO 14229标准) 以下是ISO 14229-1标准定义的核心UDS服务ID,特别标注了与DTC操作相关的服务: | **服务ID** | **十六进制** | **服务名称** | **主要功能** | |------------|--------------|----------------------------|-------------------------------------------| | $10$ | `0x10` | 诊断会话控制 | 切换默认/扩展/编程会话模式[^1] | | $11$ | `0x11` | ECU复位 | 执行硬件/软件复位 | | **$14$** | `0x14` | **清除诊断信息** | **清除DTC和关联数据**(核心DTC服务)[^1] | | **$19$** | `0x19` | **读取DTC信息** | **读取DTC状态/快照/扩展数据**(核心DTC服务)[^1][^2] | | $22$ | `0x22` | 按标识符读取数据 | 读取特定数据ID值 | | $27$ | `0x27` | 安全访问 | 种子-密钥身份验证 | | $28$ | `0x28` | 通信控制 | 关闭/开启报文通信 | | $2E$ | `0x2E` | 按标识符写入数据 | 写入特定数据ID值 | | $31$ | `0x31` | 例程控制 | 启动/停止诊断例程 | | $34$ | `0x34` | 请求下载 | 启动固件下载 | | $3E$ | `0x3E` | 待机握手 | 维持诊断会话激活 | #### 关键DTC服务详解 1. **$19$服务(读取DTC信息)** - **子功能类型**: - `01`:按状态掩码报告DTC(最常用) - `02`:报告DTC快照标识符[^2] - `03`:报告DTC扩展数据 - `04`:报告已确认的DTC数量 - `0A`:报告所有支持的DTC - **DTC格式**:支持多种编码规范(ISO 15031-6/SAE J1939等)[^1] - **响应结构**: ```python # 伪代码示例 response = [0x59, sub_func, status_mask, dtc1_high, dtc1_mid, dtc1_low, status_byte, ...] ``` 2. **$14$服务(清除DTC)** - **请求格式**:`14 FF FF FF FF`(清除所有DTC) - **清除范围**: - `FFFFFF`:清除所有DTC - `XXYYZZ`:清除特定DTC组(XX=系统,YY=子组) - **成功响应**:`54`(肯定响应) #### DTC相关补充服务 | 服务ID | 功能说明 | |--------|-----------------------------| | $2A$ | 按周期ID读取数据(DTC相关) | | $85$ | 控制DTC设置 | | $86$ | 响应事件 | > 注:完整服务ID范围 $00$-$FF$,$40$-$5F$ 保留给厂商自定义扩展[^1]。 --- ### 相关问题 1. UDS服务$19$(读取DTC)的子功能`02`(快照数据)具体包含哪些参数? 2. 清除DTC($14$服务)时指定特定DTC组的精确语法规则是什么? 3. ISO 14229-1标准中未使用的服务ID范围有哪些?这些范围是否允许自定义? 4. 如何通过UDS服务$31$(例程控制)触发DTC相关的自检程序? 5. UDS服务$85$(控制DTC设置)在哪些诊断场景下需要使用?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值