1.服务注册与发现的好处;
假设没有这个东西,那么如果存在a,b,c三个同样的服务;
而现在有一个u服务需要用到a或b或c提供的接口,那么u里面肯定是需要配置这三个服务的地址,然后调用的时候还有问题就是我该选哪个服务来调用呢?
因为他们作用都是等价的;这里就产生了一系列的配置管理问题(包括a,b,c服务地址变了,或者增加了d服务,这些都需要在u里面改配置,还有改负载均衡算法);
现在有了服务注册与发现中心,那么a,b,c它们启动时都会自动将自己的服务标识(a,b,c的服务标识是一样的,因为它们的代码啥的一样,比如都叫user-service,只不过实例id不一样,就像一个exe开启了多个进程)和地址 注册到服务注册与发现中心(当然肯定不止这两个数据,不过这两个是最主要的),而服务消费者则是在调用时是通过服务标识来充当ip:port的,然后具体选择哪个服务实例的负载均衡算法由SpringCloud的RestTemplate内部实现了(@LoadBalanced),这样哪怕是加了新服务d(和a等一样的服务),只需要d也以user-service为服务标识将自己注册进去,u服务自动就能去更新本地的服务列表,调用时也能自动的选择一个健康的服务实例来调用;
2.具体代码:
eureka服务【服务注册与发现中心】(1.x版本eureka服务其实就是一个war包需要运行在tomcat这样支持servlet的服务器中间件里,也可以通过SpingBoot将它集成为一个可运行的jar包)
:https://github.com/Silentdoer/demo-eureka-server.git(可以配置集群,但是这个时候eureka同时也是一个EurekaClient,因为它需要将自己也注册进去)
服务提供者(比如是user-service,给其他服务提供用户信息查询接口之类的)
:https://github.com/Silentdoer/demo-eureka-provider.git
服务消费者(比如是notification-service,获取用户详情信息用于通知相关人员)
:https://github.com/Silentdoer/demo-eureka-consumer.git