刚开始的时候,分布式架构的远程服务调用使用的RestTemplate,我们必须在下面这个url字符串这里进行维护我们远程服务的ip地址和端口。
存在的问题就是:一旦被调用的服务发生了服务器的迁移,或者是服务器的扩容,这个时候我们就需要手动的去改这个远程服务地址,然后又需要重新部署服务进行上线
针对上面这个问题,想到的解决方法就是可以把这个远程服务地址存在数据库中,手动维护一张注册表,把所有服务的远程地址存到这个注册表中去,每一个远程服务地址对应的存储一个服务名称。
假如会员服务需要调用订单服务,那么它就可以通过订单服务的服务名称查询到最新的一个远程服务地址,然后就可以进行调用了。
当然这种情况下还是会存在很多问题:
- 第一个肯定是性能问题,在一个高并发的请求过程中,我们不可能每一次都去数据库中进行查询,当然可以使用缓存来解决
- 假如被调用方的服务进行水平扩容,那么我们肯定要对这个服务的调用进行负载均衡,我们本地来实现负载均衡有一定的麻烦。
以前没有比较成熟的客户端负载均衡机制供我们去调用远程服务,因为以前微服务架构还没有诞生。
所以在当时,会引入nginx来进行负载均衡,引入nginx之后又要把所有的服