阿里云容灾架构基础上开发的应用系统,业务开发指引方面需要遵循的通用规则有哪些?
1.应用无状态化设计。无状态服务对于单次请求的处理是不依赖其他请求,服务本身不存储任何信息。任何需要持久化的业务数据都 要存储在具备容灾能力的产品中,如RDS(数据库)或OSS(对象存储)。不建议在虚机内存或磁盘中保存业务数据(包括日 志),由于其没有数据复制能力而导致在机房故障中丢失。 2.重连重试。在分布式系统中,采用design for failure(面向失败的设计)的方式是比较推荐的。应用需要具备探测、捕获、处理网 络连接错误的能力,以应对容灾场景下的服务切换等问题。典型的案例如RDS数据库,当RDS主备切换时会有秒级连接中断,应用 访问RDS会出现异常。而且,当RDS完成切换后,应用可能依然无法访问数据库,其主要原因是连接池持有的无效连接未被清理, 导致应用程序报错。因此应用需要具备重连重试的功能,来有效处理网络或服务切换问题。 3.减少自建服务。原则上首选具有容灾能力的云产品,如:RDS、Redis、OSS等。若云产品未能满足需求,需自行设计并实现容灾 架构。容灾架构不仅要考虑数据复制,还有服务切换及统一服务接口。 4.服务调用本机房优先。应用系统在双机房部署,进行交互时,尽量避免跨机房调用,做到本机房封闭,即在本机房完成业务调用, 以降低延迟。在微服务场景中,服务间调用是很频繁的,机房内封闭对于负责业务带来的多级调用的延迟缩减是有意义的。 5.不强依赖缓存。缓存服务通常用来缓存数据库查询的结果数据,以减轻数据库压力和响应时间。但缓存中的数据无法保证一直有 效,当遇到存储空间满、集群故障、集群切换等场景可能导致部分数据不存在。因此,应用可以使用缓存但不要强依赖缓存,如果 缓存中的数据出现问题则需要有替代办法解决。以上信息摘自《新服务》,这本电子书收录开发者藏经阁下载地址:https://developer.aliyun.com/topic/download?id=8306
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。