经过漫长的设计和调试,本人主导的replication功能终于在Azure SignalR上实现了出来,并且进入了公开预览阶段。那么replication和使用sdk做sharding有什么不同和相同点哪?

先说说相同点:

  • 备灾,如果一个region出现了软件或硬件问题,还有其它region可以使用。
  • 分流,每个region的负载不会过大。
  • 提速,客户端就近找节点,而不是去傻傻的绕地球半圈。

再说说有什么不同:

  • replication只需要一个连接字符串,而sharding需要n个。
  • 提速跟简单,不需要用户使用traffic manager或者其它方式找最近的节点, 服务内部直接集成了traffic manager。
  • 更好的支持serverless,SignalR服务下的Web PubPub服务就因为没有sdk的支持,无法简单的实现sharding,如今就可以无脑点replica。
  • 加减节点跟容易,只需portal上一点就可以添加或减去一个节点,不需要修改连接字符串或者任何配置(当然为了更好的性能,需要在新的region部署app server)。
  • 跟智能的流量控制,与sharding不同的是,app server只需提交一份消息到任何一个replica上,这消息就会被传输给每个需要的replica,而不是由sdk负责发生n份消息到n个节点上。

那么,再说说和replication相关的功能吧:

  • 只有Premium才可以建replica。
  • Scale out————支持,而且是每个replica分别scale,也可以分别设置auto scale。
  • Private Endpoint————支持,到整个实例的,也就是默认连接到最近的region。
  • Shared Private Endpoint————不支持,因为每次添加region,都可能需要人工审批,从而破坏replica的可用性,因此该功能被排除。
  • 其他所有功能(CORS,Settings,Identity,Network ACL)都是整个实例设置,自动应用到所有replica。

当然,由于replication现在不能跨cloud使用,所以的中国的实例不能在建立中国区外建立replica,同样全球的实例也不能在中国建replica。

posted on 2023-09-05 16:17  Zhenway  阅读(38)  评论(1编辑  收藏  举报