分布式接口的调用

一、首先在公共模块demo-api中写好接口html

二、demo-api接口以下;java

** “声明式调用”就是定义一个公共的接口,由提供方来实现,消费方来调用
	消费方直接注入此接口,调方法
		
	用FeignClient注解绑定一个提供方的服务名,如
	@FeignClient("SIMPLE-PROVIDER"),前提是提供方已经把服务注册到注册中心了
	
	注意:
	一、接口里的参数前面必定要加注解
		如“@RequestParam("id") String id、@RequestBody SimpleUser user”
	二、接口要符合Restful风格的规范

  

三、在provider中进行接口的实现,前提是provider模块已经做为一个服务发布了。数据库

 

** 服务提供方
	实现服务api接口,提供服务,尽可能简洁,推荐一个类搞定
	
微服务分三层
原子层,服务的最底层,是服务的最小单元,每每直接操做数据库
聚合层,把原子层的接口组织起来进行分类
应用层,调用聚合层,处理业务逻辑

本服务属于原子层

  

四、对于接口的调用,消费者能够采用两种方式api

1、采用feign声明式调用app

2、采用restTemplate直接调用(有多种方式)负载均衡

@RestController
public class DemoConsumerController {
	
	@Autowired //注入声明式调用的接口(feign)
	private DemoApi api;
	
	@Autowired //注入客户端负载均衡调用的bean(ribbon)
	private RestTemplate t;
	/**
	 * feign声明式调用
	 * @param name
	 * @return
	 */
	@RequestMapping(value="/demo/hello")
	public String hello(String name) {
		return api.hello("hello world !");
	}
	/**
	 * ribbon负载均衡调用
	 * @param name
	 * @return
	 */
	@RequestMapping(value="/demo/hello2")
	public String hello2(String name) {
		String result = t.getForEntity("http://DEMO-PROVIDER/demo/hello?name=test", String.class).getBody();
		return result;
	}
	
}
 
 
服务分三层
原子层,服务的最底层,是服务的最小单元,每每直接操做数据库
聚合层,把原子层的接口组织起来进行分类
应用层,调用聚合层,处理业务逻辑

本服务属于聚合层 + 应用层

feign方式,接口注入方式()
ribbon,客户端负载均衡方式()
 
 

五、restTemplate 对象须要在启动类以前建立后,才能够在接口中注入,或者采用java配置类的方式ide

 restTemplate  采用java配置类建立微服务

RestTemplate调用服务的另一种方法

相关文章
相关标签/搜索