开发者社区> 问答> 正文

阿里云容灾架构基础上开发的应用系统,业务开发指引方面需要遵循的通用规则有哪些?

已解决

阿里云容灾架构基础上开发的应用系统,业务开发指引方面需要遵循的通用规则有哪些?

展开
收起
与时俱进的探索者 2022-04-07 09:29:48 864 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    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

    2022-04-07 20:11:40
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
阿里云开发者社区官方技术圈,用户产品功能发布、用户反馈收集等。
问答排行榜
最热
最新

相关电子书

更多
MaxCompute架构升级及开放性解读 立即下载
MaxCompute Serverless 架构演进 立即下载
阿里云消息队列的 Serverless架构演进 立即下载