检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
redis缓存不存在的属性反序列化 问题描述 redis在存入的时候,如果对象中存在is开头的方法,但是又没有具体的属性。那么在存入的时候,会将auth转换为一个属性存入缓存当中,在反序列化的时候就会报反序列化失败。 public boolean isAuth(){ return
Abstract BO 功能介绍 Abstract BO是一个抽象对象,不能单独存在,没有数据库表,需要和业务对象建立继承的关系。建立继承关系后,业务对象会继承抽象对象中的字段。例如,抽象对象Abstract和业务对象Role存在继承关系,在抽象对象Abstract中,新建一个name字段,该字段会被Role自动继承。
能。当使用缓存优先功能时,在执行目标业务代码时,优先会查询缓存,如果缓存存在则返回缓存结果,如果缓存不存在则执行目标业务代码。 当使用缓存优先时clientcontrol的处理逻辑如下: 读取缓存,判断是否是性能缓存。 如果是性能缓存,直接将性能缓存当结果返回。 如果不是性能缓存,执行原方法。
Definition Language),是SQL(结构化查询语言)的一部分,用于定义和管理数据库的结构。导入DDL通常指的是将数据库结构定义导入到数据库管理系统中,以便创建或修改数据库的模式。 本章节将为您介绍一系列核心DDL标签,帮助简化您的开发流程并提高编辑效率。 注意事项
DING表的分库策略和ROOTED必须保持一致。 单库对象(SINGLE):单表,不进行分库,也不是广播表,仅在一个数据库实例中存在。 表名:设置BO对象在数据库中的表名。 字段:编辑对象的字段。单击“字段”,进入编辑对象字段页面,可为对象添加字段和索引。其中,“NORMAL”为
anceTtl(性能缓存)。 存在误解这两个为是两个缓存,其实缓存只有一个。 实际给缓存设置的缓存过期时间为ttl配置,缓存存入的时候,连同当前时间一同存入了,取出的时候就可以取出缓存存入时间,通过计算与performanceTtl进行比较得出是否是性能缓存。 父主题: 常见问题
对象名称:设置对象的名称,必须使用大驼峰格式,不允许存在连续的大写字母。 中文名:设置对象的中文名称。 软删除策略:开启软删除策略后,数据删除时执行逻辑删除,数据仍然保留在数据库中。关闭软删除策略后,数据删除为物理删除,即直接从数据库中删除,不可恢复。 注意:购买AstroPro企业
包括用户(User)、订单(Order)和订单详情(OrderDetail)三个业务对象,且三个对象之间存在聚合关系,即用户存在时,订单才会存在,订单存在时,订单详情才会存在。同时一个用户可以关联多个订单,订单通过单号进行标识,一个订单又可以关联多个商品,例如手机、耳机等,商品可
如果使用的是Spring数据库,则使用shardingsphere的读写分离模式。 读写分离数据库+分布式缓存(参考单表查询QPS < 5w):数据库开启读写分离,并且开启Redis缓存。 数据库分库+分布式缓存(参考单表查询QPS < 5w):支持数据库分库,分库数量及规则自定义,并且开启Redis缓存。
通过导入DDL文件实现业务设计 本章节指导您如何通过导入DDL文件来实现业务设计。DDL文件不仅定义了数据库的结构,还确保了数据的完整性和一致性,为业务应用提供了坚实的基础。 DDL文件设计 根据业务模型,完成DDL文件设计,DDL标签使用可参考DDL标签使用指南。 示例: CREATE
包括用户(User)、订单(Order)和订单详情(OrderDetail)三个业务对象,且三个对象之间存在聚合关系,即用户存在时,订单才会存在,订单存在时,订单详情才会存在。同时一个用户可以关联多个订单,订单通过单号进行标识,一个订单又可以关联多个商品,例如手机、耳机等,商品可
而树递归的双方为相同的对象类型,存储在同一张表中,递归关系的双方可以抽象成父子关系。树递归中,一个对象最多存在一个父对象,类似于数据结构中的树结构。创建树递归后,在数据库中会增加一个parentId字段,用来指向父节点。 图1 新增parentId字段 关系属性设置 在业务设计
应用场景 新服务构建 应用场景 应用场景复杂,缺乏软件架构设计能力,以及微服务开发能力。 开发能力不足,缺乏编码规范和安全编码意识。 对云上数据库、中间件和存储等服务不了解,缺乏云上服务对接能力。 价值 根据用户的诉求,快速帮助用户生成满足DDD领域驱动设计的框架代码,并且内置稳定的
通常情况下,一个应用不是一个单独的服务,可能由多个服务共同组成。这些服务之间可能存在一些跨服务的调用,此时就需要通过添加依赖服务,把这些服务的客户端集成过来。添加依赖服务前,请确保依赖服务的“是否生成客户端”按钮已启用。 图1 开启“是否生成客户端”配置 在服务依赖中,选择当前服务依赖的服务。 图2
CACHE_FIRST:当一个请求到来时,系统首先尝试获取缓存。如果缓存存在,判断当前缓存的存在时间是否小于一定时间,小于则直接返回缓存中的数据,否则执行请求下游服务的操作,请求成功,更新缓存,返回结果。请求失败,直接返回获取缓存结果。如果缓存不存在,执行请求下游服务的操作,请求成功,更新缓存,返回结果,请求失败,抛出异常。
erDetail)三个业务对象,且三个对象之间存在聚合关系,即用户存在时,订单才会存在,订单存在时,订单详情才会存在。 图4 订单业务设计 服务依赖:通常情况下,一个应用不是一个单独的服务,可能由多个服务共同组成。这些服务之间可能存在一些跨服务的调用,此时就需要通过添加依赖服务,把这些服务的客户端集成过来。
使用说明 创建服务前,请确保已创建项目和服务组。如果待添加的服务有依赖其他服务,请先添加依赖的服务。添加被依赖服务时,必须开启“是否生成客户端”。 图1 开启“是否生成客户端” 前提条件 参考新建项目中操作,完成项目的创建。 参考新建服务组中操作,完成服务组的创建。 操作步骤 参考登录
BO:业务对象,业务对象映射到服务中的一个实体,对应数据库中的一张表。 Abstract BO:抽象对象,不能实例化,没有对应的数据库表,需要和业务对象有个继承的操作。例如,业务对象A继承一个抽象对象B,则B中的字段都会被A继承过来。 Value Object:值对象,不能单独存在,需要和业务对象建立聚合的关系。
自定义,即对生成的服务代码进行二次开发。 client:客户端模块,在AstroPro中添加服务时,开启“是否生成客户端”配置后(如图2),才会生成该模块。 图2 开启“是否生成客户端” base代码目录结构 代码结构说明中的“{biz}”,为在AstroPro的业务设计中定义的对象,如BO、Abstract
下拉框中选择模板框架。 选择是否开启客户端。 图3 设置模板基本配置 选择模板的参考架构。 图4 选择参考架构 数据库设置。 图5 设置数据库 数据库:选择数据库的类型,支持MySQL、PostgreSQL和GaussDB。 分库策略:选择数据的分片算法。参考架构选择“数据库分库+分布式缓存”时,需要设置。