`
liuguofeng
  • 浏览: 450161 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

设计指导原则

    博客分类:
  • Java
 
阅读更多

http://www.cnblogs.com/netfocus/p/3831901.html

一. 性能相关:

  1. 避免在循环内部new一些没有必要每次都new的对象。
  2. 所有与IO相关的操作,都需要考虑性能问题,一般采取的措施是连接池,缓存,减少调用次数,合并请求。
  3. 每个业务都要分析整个请求链路,找到瓶颈,通过压测的方式确认问题及验证解决方案。
  4. 根据业务情况,使用异步化和最终一致性。
  5. CPU,内存,网络IO,磁盘IO这些瓶颈,需要知道在合适的场景牺牲什么换取什么。通俗的讲是空间换时间,还是时间换空间。不同业务场景下,要做合理的取舍。例如多线程并发查询后merge。这个就是利用CPU,内存换取速度。
  6. 善于借鉴业界成熟通用的解决方案来解决问题。要知道什么场景适合用什么,每个产品的最佳实践是什么要清楚。
  7. 学会通过业务视角解决技术问题。例如:如果没有分库分表,支付宝的大量交易数据的并发性,可能永远无法解决。适当的时候,需要根据用户ID去分库分表,分散数据库IO瓶颈。避免只从技术角度考虑问题,陷入死胡同。
  8. 使用新技术新协议时,一定要分析出最佳使用场景,不能盲目相信。搞懂原理,才能通过最佳实践发挥性能优势。

监控相关:

  1. 监控分为系统监控,应用监控,业务监控。系统监控一般监控网络IO情况,磁盘IO,空间,CPU,内存等等。应用监控一般监控JVM的内存,GC情况,日志中的异常情况,SQL,SPRING方法等的耗时情况。业务监控一般监控一些业务指标,如PV,UV,交易的变化趋势等等具有业务含义的数据。
  2. 做好容量规划,避免无法支持业务增长,监控好容量。
  3. 对于调用链路非常深的系统,做好链路监控,及时发现瓶颈。

安全相关:

  1. 不要为了维护方便,在代码里留后门;之前review代码发现有这些问题。
  2. 涉及到用户密码等,一定要散列哈希算法加密存储。
  3. 关键用户敏感数据(如:信用卡数据)不能存日志文件中,避免主机漏洞被拖拽。很多互联网公司就发生了这样的事情。
  4. 要考虑完整业务链路的安全,不仅仅是某一端的安全问题。
  5. 充分利用公司已有的安全团队的产品及规范,避免产品出现安全漏洞,代码安全这块加强和安全同学一起REVIEW。
  6. 要注意开发环境和生产环境信息做隔离,避免因在开发环境中泄露导致生产环境安全问题。
  7. 不在外网分享带有业务规则及需要保密信息的内部文档。

规范相关:

  1. 幂等性:所有对外暴露的接口,需要做到幂等性。
  2. 隔离性:对同一个数据源的操作,建议由一个服务向外暴露,避免多个不同系统操作同一个数据源,特别是避免修改操作。
  3. 对开源的第三方包,一定要有源码。
  4. 线程安全:要时刻关注线程安全问题。每个业务都要考虑代码是否是线程安全的。
  5. 关于编程模型,不做强制要求;但是有一个原则就是,这块技术是主流的,外部容易招聘到相关人才,技术体系是完善的,容易学习和发展定制。
  6. 关键代码及业务逻辑,一定要有注释。
  7. 每个系统的设计及需求,接口等,一定要有文档。方便沟通交流以及团队的传承交接。
  8. 不用存储过程去实现复杂的业务逻辑,原则见第2点。
  9. 日志记录,格式要统一,存储路径和位置,以及磁盘满了之后日志转移的机制要完善。
  10. 系统设计一定要组织Review,避免设计的不合理导致后续扩展性不好。Review的角度,考虑业务的扩展性及发展方向是一个重点。
  11. 重点业务的单元测试和接口测试用例一定要有且全面,要养成用单元测试和接口测试来保证业务逻辑正确性的习惯,且还能大大提高后期系统维护的成本;
  12. 统一使用PE提供的运行环境和容器,特殊定制化容器场景一定要充分测试。

异常处理相关:

  1. 要区分好业务异常还是系统异常。为每种异常定义好处理方式。
  2. 避免抛出大量异常不处理。
  3. 异常为了方便系统间传输,一般需要约定errorCode。例如场景:可以根据错误编码,将异常翻译成多国语言。
  4. 跨进程调用,不要将整个异常堆栈传递过去。

设计模式相关:

  1. 模块之间避免循环依赖
  2. 尽量使用接口解耦应用
  3. 代码中使用分层设计的思想
  4. 高内聚低耦合
分享到:
评论

相关推荐

    FPGA设计指导原则

    FPGA设计指导原则

    医疗器械临床试验设计指导原则.doc

    《医疗器械临床试验设计指导原则》是一份针对医疗器械临床试验的设计规范文档,旨在为申请人和审查人员提供技术指导,确保在医疗器械注册过程中,临床试验的科学性和合规性。这份指导原则适用于已经定型的产品,包括...

    FPGA设计指导原则,嵌入式学习必备资料

    《FPGA设计指导原则》是一本面向嵌入式学习者的宝贵资源,涵盖了FPGA(Field-Programmable Gate Array)开发的关键概念和技术。FPGA是一种可编程逻辑器件,允许开发者根据需求自定义硬件功能,广泛应用于通信、图像...

    [PCB]PCB设计指导原则

    【PCB设计指导原则】 PCB(Printed Circuit Board)设计是电子工程中至关重要的环节,它直接影响到设备的性能、可靠性和电磁兼容性。在PCB设计中,需要遵循一系列指导原则以优化电路的布局和布线,降低潜在的问题。...

    公路桥梁设计指导原则(常规结构).doc

    本文主要基于"公路桥梁设计指导原则(常规结构)"来阐述其中的关键知识点。 首先,设计依据是桥梁设计的基础,包括了《公路工程技术标准》(JTGB01-2003)、《公路桥涵设计通用规范》(JTG D60-2004)等多个国家和行业...

    FPGA设计指导性原则

    本主题将深入探讨“FPGA设计指导性原则”,特别是结合Verilog语言进行的设计方法。以下是一些核心知识点: 1. **FPGA基础知识**:FPGA是由可编程逻辑单元(CLB)、输入/输出块(IOB)、配置存储器(Configuration ...

    可编程逻辑设计指导原则PPT课件.pptx

    这份PPT课件详细讲解了可编程逻辑设计的一些核心指导原则,涵盖了面积优化、速度优化以及硬件和系统层面的设计考虑。 首先,面积和速度的平衡是可编程逻辑设计中的关键问题。面积指的是设计在FPGA或CPLD中占用的...

    5G网络动力配套改造精细化设计指导原则.docx

    以下是指导原则的详细解释: 1. **总则**: 动力配套改造的目标是按现网峰值荷载需求计算容量,以避免或减少不必要的改造。这旨在提高投资效益比,通过精细化设计,合理控制改造成本。重点在于利用存量站点资源,...

    界面设计的方法和指导原则

    软件UI设计联盟_天无河_设计 UI CG 图标 标志.mht"、"界面设计原则-阿宇设计演绎.mht"以及"Windows界面设计标准 - The Zone of EIVS.mht"等资料,则提供了更深入的设计实例和具体平台的规范指南,对于深化理解和实践...

    FPGA设计的指导原则(很全)

    ### FPGA设计的指导原则详解 #### 一、面积与速度的平衡与互换:核心设计哲学 FPGA设计的核心在于平衡资源使用与性能表现。**面积**,即设计占用的逻辑资源,通常以触发器(FF)和查找表(LUT)的数量或等效逻辑门...

    软件设计6原则

    以上六个原则共同构成了软件设计中的核心指导思想,它们各自关注设计的不同方面,但又相互补充,共同致力于实现高质量、可维护、可扩展的软件系统。在实际开发过程中,合理应用这些原则可以帮助开发者设计出更加健壮...

    FPGA设计的指导原则.pdf

    ### FPGA设计的指导原则 #### 1.1 面积和速度的平衡与互换 在FPGA设计中,“面积”通常指的是该设计在FPGA芯片上所占用的资源量,具体而言,可以量化为触发器(FF)、查找表(LUT)的数量或等效逻辑门的数量。...

    FPGA设计的指导性原则

    FPGA设计的指导性原则,对于初次涉及该领域,有很大的指导,总结很全面。

    JAVA 24种设计模式介绍与6大设计原则.pdf

    而对于其他模式和原则,应以类似的方式进行学习和应用,不断深入理解每个设计模式的特点和适用场景,以及设计原则的核心指导思想,最终能够在实际开发中灵活运用,编写出高质量、高内聚低耦合、易于扩展的代码。

    2022医疗器械软件注册审查指导原则

    本指导原则是数字医疗(Digital Health)指导原则体系的基础指导原则,亦是医疗器械软件的通用指导原则,其他含有或涉及软件的医疗器械指导原则可在本指导原则基础上进行有针对性的调整、修改和完善。

    PCB天线设计指南.pdf

    ### PCB天线设计指南:深度解析与应用 #### 引言 随着无线通信技术的快速发展,尤其是对于短程、低功耗2.4GHz应用...通过遵循上述设计指导原则,可以有效地克服各种挑战,确保天线在目标频率下具有良好的性能表现。

    C++设计原则 完整整理 快速理解设计原则

    面向对象设计原则是软件开发中不可或缺的指导方针,它们旨在提升软件的可维护性和复用性,从而提高开发效率和质量。C++作为一门支持面向对象编程的语言,遵循这些原则可以使代码更加健壮和易于扩展。以下是7个常用的...

Global site tag (gtag.js) - Google Analytics