• 后端服务开发总结


    最近半年一直做分布式系统开发,刚刚开发完成一个小型分布式系统,现总结一下分布式系统设计的经验。

    1. 能不做分布式就不用分布式

        分布式系统带来很多数据同步、数据不一致、数据延迟等问题。网络链接是不可靠的,分布式系统过于依赖RPC,对同一机房内部问题还不大,如果出现跨机房问题数据的不一致问题就比较突出。我们现在一般采用链接中断重连,重要消息必须应答,消息没有确认重新发送等手段一定程度上减少不一致出现的概率。但重根本上解决问题还是产品设计过程中尽量减少跨机房业务。

    2. 选择合适的消息中间件

        消息中间件有很多,甚至不用也可以实现消息的传递。每个消息中间件有各自的优缺点与适用范围,使用不当可能会有很多坑。我现在的项目就用到了MQ与netty,他们的优缺点可以看我另一篇文章。

    3. 尽量做成无状态的应用

        应用设计之初就应考虑是否可能采用复杂均衡,如果很有可能就设计成无状态的,这样可以具有很好的横向扩展能力。一开始我们的服务器是有状态的,负载均衡做不了,只能拆分,把有状态的提取出来做成服务,才上了负载均衡,代价较大。

    4. 合理使用缓存

        缓存可以是提高性能最快捷的方法。我们的搜索服务全部在缓存中完成,这样数据库压力很小,但数据库更新要同时更新缓存,增加了开发难度。所以缓存是个好东西但不可滥用,如果数据不那么多就可以直接用SQL进行搜索,简单而可靠。

    5. 测试驱动开发

        不要对自己的逻辑过于自信,没有经过测试的代码都是不可靠的。很多开发人员写完之后就直接上传代码,后来才发现bug。我觉得代码写的烂还不是大问题,只要认真测试至少可以保证业务及时上线。不做测试的人坚决不能要!

    6. 初级工程师的代码一定要评审

       刚开始我们团队代码没有评审环节,对初级工程师代码控制不够。后来采用gerrit使代码提交者强行参与评审才使得问题得到控制

  • 相关阅读:
    记录log中的16进制和ASCII码字符输出
    有效的沟通技巧
    时间的真谛
    目标设定与时间管理
    第四代时间管理
    什么是高效沟通
    error LNK1104: cannot open file 错误解决方案
    js压缩工具1.0界面绘制
    时间管理的定义与目的
    JArgs命令行选项解析>Java套件
  • 原文地址:https://www.cnblogs.com/xingjunli/p/4987775.html
Copyright © 2020-2023  润新知