服务注册/发现-Eureka
____simple_html_dom__voku__html_wrapper____>
源码地址:https://gitee.com/xizi-c-language/java-ee/tree/master/springCloud
1.问题提出

现在有如上两个服务如何实现,订单服务调用商品服务呢?
方法一:
使用RestTempalte类中的getForObject() 方法,把url 写死!这边解决了。
RestTemplate restTemplate = new RestTemplate();
String url = "http://127.0.0.1:9090/product/"+ orderInfo.getProductId();
Product product = restTemplate.getForObject(url, Product.class);
但是这又引入了新的问题,如果这个服务的ip地址更换了,是不是我们又要修改代码,打包,测试,灰度,直到完全上线呢!这种繁琐的操作,我们是否可以避免呢!这便引入了服务注册/发现-Eureka。

2.Eureka的具体使用
1. 创建一个eureka-service Maven 工程,如下图:

2. 引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
3. application.yml ( eureka-server 的)
server:
port: 10010
spring:
application:
name: eureka-server
eureka:
instance:
hostname: localhost
client:
fetch-registry: false # 表⽰是否从Eureka Server获取注册信息,默认为true.因为这是⼀个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,这⾥设置为false
register-with-eureka: false # 表⽰是否将⾃⼰注册到Eureka Server,默认为true.由于当前应⽤就是Eureka Server,故⽽设置为false.
service-url:
# 设置与Eureka Server的地址,查询服务和注册服务都需要依赖这个地址.
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
注意项一:


注意项二:
如下获取示例代码的 "product-service" 需要与你想获取 ip 地址的项目配置的项目名一致才可获取到。
@Autowired
private DiscoveryClient discoveryClient;
List<ServiceInstance> instances = discoveryClient.getInstances("product-service");
3.补充知识
什么是注册中⼼?
在最初的架构体系中, 集群的概念还不那么流⾏, 且机器数量也⽐较少, 此时直接使⽤DNS+Nginx就可以满⾜⼏乎所有服务的发现. 相关的注册信息直接配置在Nginx. 但是随着微服务的流⾏与流量的激增, 机器规模逐渐变⼤, 并且机器会有频繁的上下线⾏为, 这种时候需要运维⼿动地去维护这个配置信息是⼀个很⿇烦的操作. 所以开发者们开始希望有这么⼀个东西, 它能维护⼀个服务列表, 哪个机器上线了, 哪个机器宕机了, 这些信息都会⾃动更新到服务列表上, 客⼾端拿到这个列表, 直接进⾏服务调⽤即可. 这个就是注册中⼼.
注册中⼼主要有三种⻆⾊:
- 服务提供者(Server):⼀次业务中, 被其它微服务调⽤的服务. 也就是提供接⼝给其它微服务.
- 服务消费者(Client):⼀次业务中, 调⽤其它微服务的服务. 也就是调⽤其它微服务提供的接⼝.
- 服务注册中⼼(Registry): ⽤于保存Server 的注册信息, 当Server 节点发⽣变更时, Registry 会同步变更. 服务与注册中⼼使⽤⼀定机制通信, 如果注册中⼼与某服务⻓时间⽆法通信, 就会注销该实例.
他们之间的关系以及⼯作内容, 可以通过两个概念来描述:
服务注册:服务提供者在启动时, 向 Registry 注册⾃⾝服务, 并向 Registry 定期发送⼼跳汇报存活状态.
服务发现: 服务消费者从注册中⼼查询服务提供者的地址,并通过该地址调⽤服务提供者的接⼝. 服务发现的⼀个重要作⽤就是提供给服务消费者⼀个可⽤的服务列表.

用起来还是特别简单的。ok今天的分享就到这里了!!!!!
© 版权声明
文章版权归作者所有,未经允许请勿转载。