一些系统设计的碎碎念

  1. 如果系统需要与其他系统联通,在日志记录上,应该提供承接上下游 trace 的能力,以便能够与复杂的上下游系统的链路连接起来。
  2. 一些对象在实现序列化时最好能实现自描述,通过定义公共的序列化和反序列化方法,减少特定工具类的介入,可以参考 ASN1 的实现。
  3. 在管理密钥权限时,要设置是否可导出的权限位。
  4. 在新设计系统时,相关的概念名词一定要语义明确,并且不要与主流名词和关键字一致,可以避免后期理解上的很多麻烦。
  5. 一个服务或者一个系统要有自省能力,或者说自描述能力,可以让其他系统快速明白当前系统能够提供的信息(例如系统的健康状态,所属上下文环境,负载,路由链路等),这种自省能力通常是以 API 提供出去的,这样就可以做自动化集成。
  6. 系统功能不要发生重叠,某个功能尽量用统一的组件去解决,不要单独另起炉灶,同一个功能如果接入多个功能重叠的系统实现,会造成割裂,并且不容易后期治理。
  7. 在系统设计时,API 是要分层次的,低级别的 API 和高级别的 API 作用是不同的。可以编排低级别 API 做细粒度的自动化控制,也可以依托高级别的 API 迅速构建可视化系统。在调用 API 时,同时就会引入权限分组的概念,不同的 API 作用域是要能区分开的,这样 API + 分组权限控制,就可以个性化的适用于各级别的调用方。
  8. 针对比较复杂或者重要的流程,一定要提前规划异常感知上报能力,在程序流异常时能够尽快的通知到对应的维护方,这不但有助于快速响应止损,降低异常影响范围,而且有助于采取进一步的措施做数据补偿操作,以便达到数据的最终一致性,做到数据的自修正和恢复能力。
  9. 针对数据的管理,如果数据之前存在关系,一定要提前设计有效的手段,能够追踪数据关系,这有利于在后期构建数据血缘关系图谱,另外在创建数据时,对于数据表的备注其实是尤为重要的,数据备注信息写的规范,会减少后期大量的数据治理工作。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。