今天遇到一个问题,场景是对数据进行水平拆分,希望可以把系统部署到任意机房,并方便进行流量调拨。前提是数据库已经支持分布式部署,可以把分区切换到任意机房。剩下的问题就是如何对服务请求进行寻址。
因为流量路由到哪个机房由请求参数中的数据分区决定,而服务是RPC实现,所以要先把参数反序列化才能拿到分区参数。调用方和服务提供方都要升级改造才能支持。如果服务是基于http实现或其他文本协议,就不一定需要升级调用方或服务提供方,可以很方便地做一个路由层。
RPC的方便之处是强类型,不不灵活的地方也是强类型。不过作为接口,我宁愿采用扩展性更好的文本接口。
网友评论