策码奔腾

概要设计需要注意的几个地方

 外部关系,

  外部系统的逻辑关系,物理关系,通讯方式

整体结构,

  整体的技术及业务逻辑架构

代码结构,

  1.代码的分层分包,核心代码逻辑。复杂业务应引入领域层,领域层可使用多表查询形成单一领域对象,各领域间不使用多表查询,而是在服务层拼接。

  2.执行自顶向下的开发模式:

    高级技术人员(理解项目背景与目的,关注系统整体结构与外部关系):技术选型,整体架构,并形成对应的基本设计文档。

    中级技术人员(理解基本设计,关注单一功能整体结构与其他功能关系):自顶向下完成接口和方法定义,合理利用设计模式·,遵循设计原则,依据业务结构实现代码复用,并形成对应的详细设计文档。

    初级技术人员(理解详细设计,关注单一功能实现):具体代码实现。

代码规范,

  禁止在循环中使用IO操作。不依据代码重复度而是依据业务逻辑实现代码复用。

  必要数据同步执行,异常需回滚。非必要数据异步执行,异常只记录不回滚。异步执行因无法回滚,在同步事务之后执行。

  master数据操作对外提供钩子函数。

  支付时同一个订单保证同一个支付id。

  输入式id需设计校验码。

  系统异常需完整log堆栈,禁止直接catch。

代码审查,

权限管理,

  多角色控制访问模块和按钮

  多部门控制访问数据内容

异常处理,

  500系:业务异常

  403:越权访问

  401:token过期

日志处理,

  异步,切片。数据的出入口监控。

  系统日志,文件管理

  审计日志,ES管理

数据隔离,

组件依赖,

开发环境,

预期数据性能,

  数据压力的两种形式:

    单次多数据操作(导入,批量处理):提供批量处理接口,IO操作批量执行。

    多次单数据操作(多用户操作,频繁修改):多线程并发执行,共享资源加锁。

测试及生产部署,

  部署设计时,需考虑计算成本,存储成本,互联网系统还需要考虑流量成本,可用性成本

安全(互联网系统数据异常,请求数请求时间段异常预警),

国际化,

    静态标签,静态段落,静态页面,静态文档。

    业务提示,数据字典。

缓存数据,

  配置缓存,登录信息缓存(通过控制缓存唯一保证单设备登录,删除缓存强制下线)。

锁动作锁选择,

  使用分布式锁时一定要设置过期时间,防止意外中断没有删除而永久锁定。

防重复提交,

    除上传大文件外,计算型任务3秒内防重复,存储任务10秒内放重复,费时处理应尽量用线程异步处理或使用同步分段处理),

MQ异步,

    MQ的唯一作用是削峰填谷,对实时性要求不高的数据通过降低一致性来提高性能。

    使用MQ时应该以生产者为单位产生消息,使用观察者模式分发消息,消费者根据自身需求获取消息内容。

    多个消费者可使用广播模式。

 事务,

    4种隔离机制

    7种传播方式

    使用外部接口时使用二段或三段式分布事务。无法使用时,通过数据库状态或表格管理事务。

池技术,

     线程池,链接池

 

存储,

     关系型数据库:mySql ,百万。单次查询千以下。高并发:读写分离,集群。大数据:sql语句优化,分表分库。

     列数据库: Hbase,  亿。高压缩存储,字段灵活,单条增删查改困难,列式检索统计性能极高,海量数据。

     键值数据库:reids,  键检索容易,值检索困难,内存存储性能高难以支持大数据。   

     文档数据库:ES,千万至亿。单次查询万以下。字段不灵活,写入慢,全文检索快,复杂查询快,占用系统资源大,中量数据。

           mongoDB,json存储,字段灵活,复杂查询困难。 

 

分布式计算:共享缓存,分布式锁,负载均衡方式

分布式存储:数据库读写分离,数据库集群,数据库负载均衡,数据库分表分库,sql语句优化,分布式事务。

posted @ 2023-02-02 16:02  策码奔腾  阅读(59)  评论(0编辑  收藏  举报
console.log('欢迎');