后端服务开发总结

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

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

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

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

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

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

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

4. 合理使用缓存

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

5. 测试驱动开发

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

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

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

时间: 2024-08-16 22:50:47

后端服务开发总结的相关文章

后端服务性能优化实战篇

本文简单介绍下后端服务开发中常用的一些性能优化策略. 1.代码 优化代码实现是第一位的,特别是一些不合理的复杂实现.如果结合需求能从代码实现的角度,使用更高效的算法或方案实现,进而解决问题,那是最简单有效的. 2.数据库 数据库的优化,总体上有3个方面: 1)  SQL调优:除了掌握SQL基本的优化手段,使用慢日志定位到具体问题SQL,使用explain.profile等工具来逐步调优. 2)  连接池调优:选择高效适用的连接池,结合当前使用连接池的原理.具体的连接池监控数据和当前的业务量作一个

读书笔记--大规模web服务开发技术

总评   这本书是日本一个叫hatena的大型网站的CTO写的,通过hatena网站从小到大的演进来反应一个web系统从小到大过程中的各种系统和技术架构变迁,比较接地气. 书的内容不是很难,所以总的来说比较容易阅读,不需要特别累的啃,可想而知,不是非常深入的,更多的还是把作者的一些经验写出来,hatena这种量级的在国内应该是一个中型网站的水平,作者基本把这个量级web服务的运维的方方面面都讲了一遍,看完可以对这个这种量级网站有一个总体的了解,个人认为还是值得一读的. 逐章读书笔记: 第一章 大

[转] 前后端分离开发模式的 mock 平台预研

引入 mock(模拟): 是在项目测试中,对项目外部或不容易获取的对象/接口,用一个虚拟的对象/接口来模拟,以便测试. 背景 前后端分离 前后端仅仅通过异步接口(AJAX/JSONP)来编程 前后端都各自有自己的开发流程,构建工具,测试集合 关注点分离,前后端变得相对独立并松耦合 开发流程 后台编写和维护接口文档,在 API 变化时更新接口文档 后台根据接口文档进行接口开发 前端根据接口文档进行开发 开发完成后联调和提交测试 面临问题 没有统一的文档编写规范,导致文档越来越乱,无法维护和阅读 开

webpack 前后端分离开发接口调试解决方案,proxyTable解决方案

如果你有单独的后端开发服务器 API,并且希望在同域名下发送 API 请求 ,那么代理某些 URL 会很有用. dev-server 使用了非常强大的 http-proxy-middleware 包.更多高级用法,请查阅其文档. 在 localhost:3000 上有后端服务的话,你可以这样启用代理: proxy: { "/api": "http://localhost:3000" } 请求到 /api/users 现在会被代理到请求 http://localhos

spring与dubbo分布式REST服务开发实战

本课程主要是使用 Spring技术栈 + dubbo 开发一个类似当当的图书电商后台的实战教程. 课程特点: 1.课程的技术体系足够系统.全面以及细致:课程中涉及的主要技术包括: Spring IO (依赖版本管理), Spring Boot(自动化配置,零XML), Spring MVC (RESTful API开发) , Spring Security, Spring Security Oauth(RESTful API安全), Spring Framework(基础框架,服务层开发), S

“无后端”的开发模式

"无后端"怎么开发,数据库.API 接口怎么办?前端的专业化已成趋势,独立开发功能满足定制化需求已是呼之即出."无后端"也恰逢其时,这种开发模式释放了前端开发的开发能力. "无后端"是为移动应用开发而生的开放API服务平台(PC站点也能支持),内置通用的API服务,当然也支持自定义的API,后端开发还是可以开发一些复杂的API.内置的API支持通用的任务处理和操作,比如用户登录.退出.密码恢复.数据保存.文件上传等等.后端开发自定义的API用来处

iOS开发者必备:四款后端服务工具

本文转载至 http://mobile.51cto.com/iphone-411917.htm 对于开发者来说,连接后端数据或许是一件特别痛苦的事情.但后端服务却能够帮助开发人员以更快的速度构建移动应用程序而不牺牲后端功能. AD:2014WOT全球软件技术峰会北京站 课程视频发布 后端服务加速了移动应用的开发,改进了可扩展性并减少了开发者对服务器端编码的需求.对于开发者来说,连接后端数据到前端或许是一件特别痛苦的事情.但后端服务却能够帮助开发者以更快的速度构建移动应用,不仅如此,它还能减少着移

后端服务性能压测实践

转自:https://mp.weixin.qq.com/s/XW9geHZ9odHdI7srDiKBIg 目录 背景 环境检测 压力机及压力工具检测 Linux openfiles limit 设置 排查周边依赖 空接口压测检测 聚合报告中 throughput 计算 压测及性能排查方法 关注各纬度 log Linux 常规命令 性能排查两种方式(从上往下.从下往上) 总结 背景 最近大半年内有过两次负责性能压测的一些工作.一件事情做了一次可能还无法总结出一些东西,两次过后还是能发现一些共性问题

maven+SpringMVC搭建RESTful后端服务框架

今天来尝试一下搭建基于SpringMVC的RESTful标准的后端服务. 首先,什么是MVC?M-model,模型,指业务数据层,具体一点就是业务逻辑与数据库的交互:V-view,视图,用来展示数据,传统SpringMVC中控制器有返回类型ModelAndView,即返回含有数据模型与页面视图的jsp文件:C-controller,控制器,通常负责处理与用户间的交互,控制从数据库取数与返回结果到用户等. 那么,什么是REST风格的服务呢?REST(Representational State T