zoukankan      html  css  js  c++  java
  • 后端服务开发总结

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

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

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

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

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

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

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

    4. 合理使用缓存

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

    5. 测试驱动开发

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

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

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

  • 相关阅读:
    算法导论2.37答案
    算法导论2.37的算法
    heavy dark读《《暗时间》》
    深入SetOP2函数
    c++标准库都有哪些文件
    c++ sort函数的用法
    深入char转换为int/unsigned int的内部机制分析
    顺序容器之vector
    java的动态代理机制详解
    java.lang.IllegalStateException: Web app root system property already set to different value
  • 原文地址:https://www.cnblogs.com/xingjunli/p/4987775.html
Copyright © 2011-2022 走看看