解耦设计

解耦是高可用的基础,解耦就是最大限度的降低数据、操作间的依赖,其实组件化就是一种解耦。

数据解耦

将不是强关联的数据分开存储;

将高频次修改的数据和低频次修改的数据分开存储;

将高访问量的数据和低访问量的数据分开存储;

将记录数据和业务数据分开存储;

将历史数据和应用数据分开存储。

数据是任何业务的基础,所有的操作都是围绕着数据来做的,数据如果在设计时耦合度比较高,那么后续再怎么优化,程序运行效率也提升不起来。

业务流程解耦

这个可以理解为接口最小化。服务端不负责业务流程处理,只负责提供具体的一个功能的接口。

比如说登录操作,登录后要获取用户个人信息、未读消息、好友列表等一系列操作,服务端提供的接口应该是:登录接口、获取用户信息接口、获取离线消息接口、获取好友列表接口等。而不是一个登录接口中将一系列数据返回客户端。

组件解耦

将不是强关联的业务分成不同的组件,比如消息发送和用户登录;
要求做到一种业务组件挂掉后不影响其他业务组件的使用,如:
消息发送失败但是不影响用户正常登录;
语音消息发送失败但不影响其他类型的消息发送。
组件-缓存解耦

缓存不依赖于组件,缓存是独立保存的数据,不依赖组件存在,当组件重启时,缓存数据不会丢失;
组件不依赖于缓存,当缓存数据丢失或出现重大异常时,组件能从数据库拿到数据并尝试修复缓存数据。

组件-数据库解耦

组件不依赖于数据库,当数据库连接不上或出现故障时,组件仍能通过缓存的数据完成业务处理。
数据库解耦

不同业务数据分开保存在不同的数据库;
当某个业务的数据库宕机时,其他业务仍能正常使用。如:
好友关系库挂了,不影响群消息收发;
离线消息库挂了,不影响在线消息收发。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值