Spring boot2的服务注册发现与调用--以feign模式为例

在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate模式,另一种是feign模式

Ribbon+RestTemplate

Ribbon 是一个基于 HTTP 和 TCP 客户端 的负载均衡的工具。它可以 在客户端 配置 RibbonServerList(服务端列表),使用 HttpClient 或 RestTemplate 模拟 http 请求,步骤比较繁琐。

Feign

Feign 是在 Ribbon 的基础上进行了一次改进,是一个使用起来更加方便的 HTTP 客户端。采用接口的方式, 只需要创建一个接口,然后在上面添加注解即可 ,将需要调用的其他服务的方法定义成抽象方法即可, 不需要自己构建 http 请求。然后就像是调用自身工程的方法调用,而感觉不到是调用远程方法,使得编写客户端变得非常容易。 

Feign和 RestTemplate都内置了Ribbon

一、创建Eureka注册中心

1.创建一个maven项目,在pom.xml添加依赖jar文件

 
        org.springframework.boot
        spring-boot-starter-parent
        2.0.6.RELEASE
    
    
        
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                Finchley.SR1
                pom
                import
            
        
    
    
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
    

2.创建application.yml文件

###服务端口号
server:
  port: 1011
###服务名称
spring:
  application:
    name: app-eureka-center
eureka:
  instance:
    #注册中心地址
    hostname: 192.168.199.101
###客户端调用地址
  client:
    serviceUrl:
      defaultZone: http://192.168.199.101:1011/eureka/
###是否将自己注册到Eureka服务中,因为该应用本身就是注册中心,不需要再注册自己(集群的时候为true)
    register-with-eureka: false
###是否从Eureka中获取注册信息,因为自己为注册中心,不会在该应用中的检索服务信息
    fetch-registry: false
  server:
    enable-self-preservation:true

3.创建服务启动类

@SpringBootApplication
@EnableEurekaServer //申明这是一个Eureka服务
public class SncApplication {

	public static void main(String[] args) {
		SpringApplication.run(SncApplication.class, args);
	}
}

4.项目结构图

Spring boot2的服务注册发现与调用--以feign模式为例_第1张图片

5、测试

Spring boot2的服务注册发现与调用--以feign模式为例_第2张图片

二、创建服务提供者

1.创建一个maven项目,在pom.xml中导入依赖jar

     
		org.springframework.boot
		spring-boot-starter-parent
		2.1.12.RELEASE
		 
	
	com.shsnc
	snc-base-service
	1.0
	snc-base-service
	snc-base-service

	 
		   
            
                org.springframework.cloud
                spring-cloud-dependencies
                Greenwich.SR5
                pom
                import
            
        

	  

   
	    org.springframework.cloud
	    spring-cloud-starter-openfeign
	

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

2.创建application.properties文件

spring.application.name=base-user-center
server.port=10011
eureka.client.serviceUrl.defaultZone=http://192.168.199.101:1011/eureka/

3.创建UserController接口

@RestController
@RequestMapping("/user")
public class UserController {
	
	@RequestMapping("/getUserList")
	@ResponseBody
	public ModelMap getUserList() {
		ModelMap modelMap = new ModelMap();
		List userList = new ArrayList();
		userList.add("用户1");
		userList.add("用户2");
		userList.add("用户3");
		modelMap.put("data", userList);
		return modelMap;
	}
}

4.创建启动类

@SpringBootApplication
@EnableFeignClients
@EnableEurekaClient
public class SncApplication {

	public static void main(String[] args) {
		SpringApplication.run(SncApplication.class, args);
	}
}

5.测试 

Spring boot2的服务注册发现与调用--以feign模式为例_第3张图片

6、在eureka注册中心上的效果

 

三、创建服务消费者

1.创建一个maven项目,在pom.xml中导入依赖jar文件

	com.shsnc
	snc-kanban-service
	1.0
	snc-kanban-service
	snc-kanban-service

	
		org.springframework.boot
		spring-boot-starter-parent
		2.1.2.RELEASE
	

     
		   
            
                org.springframework.cloud
                spring-cloud-dependencies
                Greenwich.SR5
                pom
                import
            
        
	  
     
	 	    org.springframework.cloud
		    spring-cloud-starter-openfeign
		
		
		    org.springframework.cloud
		    spring-cloud-starter-netflix-eureka-client
	  

2.创建application.properties文件

spring.application.name=snc-kanban-service
server.port=30006
eureka.client.serviceUrl.defaultZone=http://192.168.199.101:1011/eureka/

3.创建feign客户端接口

@FeignClient(name = "BASE-USER-CENTER")
public interface UserService {
	@RequestMapping(value = "/user/getUserList")
	public ModelMap getUserList();
}

4.创建消费者接口

@RestController
@RequestMapping("/order")
public class OrderController {
	@Autowired
	UserService userService;
	@RequestMapping("/getUserList")
	public ModelMap getUserList() {
		return userService.getUserList();
	}
}

5.创建启动类

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class SncApplication {

	public static void main(String[] args) {
		SpringApplication.run(SncApplication.class, args);
	}
}

6、测试, 成功!

 

Spring boot2的服务注册发现与调用--以feign模式为例_第4张图片

参考:https://blog.csdn.net/qq_42296117/article/details/106073073

你可能感兴趣的:(eureka)