最近在做分布式的系统,使用netty与mq进行远程RPC调用,现将心得经验总结一下。
我们公司的服务器在云端机房,在每一个店面有一个服务器,店面服务器外网无法访问。
我们的做法是店面服务器在启动时与云服务器建立长链接,这样两台服务器之间可以双向通信。
不过使用netty做RPC代码量偏多,业务比较复杂时代码维护稍微复杂,所以后来新的接口我尝试
使用MQ来代替netty进行通信。使用MQ之后代码相对减少,也不用定时发送心跳来保持长链接,还可以将
消息持久化。
不过任何东西都有两面,现对比一下两者优缺点:
1. 使用netty的优缺点:
优点:高效、稳定、
缺点:代码量稍多、要维持长链接、消息如果要持久化需要单独处理
2. MQ的优缺点:
优点:编程简单、消息可持久化
缺点: 可能要搭建单独的MQ服务器、稳定性不高、效率偏低
个人觉得如果需要高效稳定的接口还是用netty,对于同一个接口本人经测试使用netty的话
平均在80ms左右,而却波动较小,换成mq的话接口执行时间波动比较大,平均执行时间
也偏长。