分佈式接口的調用

一、首先在公共模塊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調用服務的另一種方法

相關文章
相關標籤/搜索