Java----使用eureka进行注册连接(微服务简单实现)

        当采用微服务架构时,各个业务流程被逐一分解,虽说是分解,但还是要进行连接的,最简单的就是使用http请求,将他们联系起来,通过给容器注入restTemplate,然后使用内置的方法进行请求,但是在请求过程中,难免就会涉及请求地址,请求路径之类,而这些变量是会随之改变的,也就是常说的硬编码,要改就要整个路劲都改了。而通过使用我们的eureka就可以解决这类,问题:

        在eureka中,不是根据项目的路径进行寻找,而是通过在yaml文件中定义的项目名称,一个名称可以对应多个项目,使用负载均衡算法,可以优化对同名项目的调用情况。使用eureka的流程首先就是对各个流程服务进行注册,当需要哪个服务时,就指明目标项目名称,来我们的eureka里面拿。由eureka统一管理,这样就可以减少硬编码带来的不便。使用eureka也是极其简单,只需要三步:

        第一步:创建eureka服务的服务,专门用来管理所有的注册信息:

在该模块中需要导入如下pom:

        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        

然后在其启动类中,需要加入如下注解(@EnableEurekaServer),就可以开启eureka服务,注意此处是服务端!

@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}

配置yaml文件(规定允许的端口号,项目名称,还有这个服务端的路径,供其他业务进行注册使用):

server:
  port: 1008
spring:
  application:
    name: eurekaserver
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:1008/eureka

        第二步,对需要由eureka管理的服务导入如下pom,注意此处的服务为客户端,需要使用eureka来管理自己的服务:

        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        

配置客户端的yaml文件(给项目起名,还有注册的路径):

spring:
  application:
    name: orderserver
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

        第三步,也就是客户端通过eureka拉取其他客户端的数据,此处使用向eureka发送http请求,不需要通过路径而是通过项目名称进行访问。以下是在service层的示例代码:

    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
//以下的http后跟着项目的名称即可访问
        String url = "http://userserver/user/" + order.getUserId();
        User user = restTemplate.getForObject(url,User.class);
        order.setUser(user);

        // 4.返回
        return order;
    }

如此下来便可以通过eureka完成微服务架构间的联系了!

效果如下(所有在线的服务都会在最下方位置出现,同名服务采用负载均衡调整被调用):

Java----使用eureka进行注册连接(微服务简单实现)_第1张图片

 

你可能感兴趣的:(java,eureka,微服务,springcloud,springboot)