Ji Yu request cache Qing Qiu Huan Cun Ji Zhu You Hua Pi Liang Shang Pin Shu Ju Cha Xun Jie Kou
Hystrix command Zhi Xing Shi 8 Da Bu Zou Di San Bu ,Jiu Shi Jian Cha Request cache Shi Fou You Huan Cun .
Shou Xian ,You Yi Ge Gai Nian ,Jiao Zuo Request Context Qing Qiu Shang Xia Wen ,Yi Ban Lai Shuo ,Zai Yi Ge web Ying Yong Zhong ,Ru Guo Wo Men Yong Dao Liao Hystrix,Wo Men Hui Zai Yi Ge filter Li Mian ,Dui Mei Yi Ge Qing Qiu Du Shi Jia Yi Ge Qing Qiu Shang Xia Wen . Jiu Shi Shuo ,Mei Yi Ci Qing Qiu ,Jiu Shi Yi Ci Qing Qiu Shang Xia Wen . Ran Hou Zai Zhe Ci Qing Qiu Shang Xia Wen Zhong ,Wo Men Hui Qu Zhi Xing N Duo Dai Ma ,Diao Yong N Duo Yi Lai Fu Wu ,You De Yi Lai Fu Wu Ke Neng Huan Hui Diao Yong Hao Ji Ci .
Zai Yi Ci Qing Qiu Shang Xia Wen Zhong ,Ru Guo You Duo Ge command,Can Shu Du Shi Yi Yang De ,Diao Yong De Jie Kou Ye Shi Yi Yang De ,Er Jie Guo Ke Yi Ren Wei Ye Shi Yi Yang De . Na Yao Zhe Ge Shi Hou ,Wo Men Ke Yi Rang Di Yi Ge command Zhi Xing Fan Hui De Jie Guo Huan Cun Zai Nei Cun Zhong ,Ran Hou Zhe Ge Qing Qiu Shang Xia Wen Hou Xu De Qi Ta Dui Zhe Ge Yi Lai De Diao Yong Quan Bu Cong Nei Cun Zhong Qu Chu Huan Cun Jie Guo Jiu Ke Yi Liao .
Zhe Yang De Hua ,Hao Chu Zai Yu Bu Yong Zai Yi Ci Qing Qiu Shang Xia Wen Zhong Fan Fu Duo Ci Zhi Xing Yi Yang De command,Bi Mian Zhong Fu Zhi Xing Wang Luo Qing Qiu ,Ti Sheng Zheng Ge Qing Qiu De Xing Neng .
Ju Ge Li Zi . Bi Ru Shuo Wo Men Zai Yi Ci Qing Qiu Shang Xia Wen Zhong ,Qing Qiu Huo Qu productId Wei 1 De Shu Ju ,Di Yi Ci Huan Cun Zhong Mei You ,Na Yao Hui Cong Shang Pin Fu Wu Zhong Huo Qu Shu Ju ,Fan Hui Zui Xin Shu Ju Jie Guo ,Tong Shi Jiang Shu Ju Huan Cun Zai Nei Cun Zhong . Hou Xu Tong Yi Ci Qing Qiu Shang Xia Wen Zhong ,Ru Guo Huan You Huo Qu productId Wei 1 De Shu Ju De Qing Qiu ,Zhi Jie Cong Huan Cun Zhong Qu Jiu Hao Liao .
HystrixCommand He HystrixObservableCommand Du Ke Yi Zhi Ding Yi Ge Huan Cun key,Ran Hou Hystrix Hui Zi Dong Jin Xing Huan Cun ,Jie Zhao Zai Tong Yi Ge request context Nei ,Zai Ci Fang Wen De Hua ,Jiu Hui Zhi Jie Qu Yong Huan Cun .
Xia Mian ,Wo Men Jie He Yi Ge Ju Ti De Ye Wu Chang Jing ,Lai Kan Yi Xia Ru He Shi Yong request cache Qing Qiu Huan Cun Ji Zhu . Dang Ran ,Yi Xia Dai Ma Zhi Zuo Wei Yi Ge Ji Ben De Demo Er Yi .
Xian Zai ,Jia She Wo Men Yao Zuo Yi Ge Pi Liang Cha Xun Shang Pin Shu Ju De Jie Kou ,Zai Zhe Ge Li Mian ,Wo Men Shi Yong HystrixCommand Yi Ci Xing Pi Liang Cha Xun Duo Ge Shang Pin id De Shu Ju . Dan Shi Zhe Li You Ge Wen Ti ,Ru Guo Shuo Nginx Zai Ben Di Huan Cun Shi Xiao Liao ,Zhong Xin Huo Qu Yi Pi Huan Cun ,Chuan Di Guo Lai De productIds Du Mei You Jin Xing Qu Zhong ,Bi Ru productIds=1,1,1,2,2,Na Yao Ke Neng Shuo ,Shang Pin id Chu Xian Liao Zhong Fu ,Ru Guo An Zhao Wo Men Zhi Qian De Ye Wu Luo Ji ,Ke Neng Jiu Hui Zhong Fu Dui productId=1 De Shang Pin Cha Xun San Ci ,productId=2 De Shang Pin Cha Xun Liang Ci .
Wo Men Dui Pi Liang Cha Xun Shang Pin Shu Ju De Jie Kou ,Ke Yi Yong request cache Zuo Yi Ge You Hua ,Jiu Shi Shuo Yi Ci Qing Qiu ,Jiu Shi Yi Ci request context,Dui Xiang Tong De Shang Pin Cha Xun Zhi Zhi Xing Yi Ci ,Qi Yu Zhong Fu De Du Zou request cache.
Shi Xian Hystrix Qing Qiu Shang Xia Wen Guo Lu Qi Bing Zhu Ce
Ding Yi HystrixRequestContextFilter Lei ,Shi Xian Filter Jie Kou .
* Hystrix Qing Qiu Shang Xia Wen Guo Lu Qi
*/
public class HystrixRequestContextFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) {
HystrixRequestContext context = HystrixRequestContext.initializeContext();
try {
filterChain.doFilter(servletRequest, servletResponse);
} catch (IOException | ServletException e) {
e.printStackTrace();
} finally {
context.shutdown();
}
}
@Override
public void destroy() {
}
}
Ran Hou Jiang Gai filter Dui Xiang Zhu Ce Dao SpringBoot Application Zhong .
public class EshopApplication {
public static void main(String[] args) {
SpringApplication.run(EshopApplication.class, args);
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new HystrixRequestContextFilter());
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
}
}
command Zhong Xie getCacheKey() Fang Fa
Zai GetProductInfoCommand Zhong ,Zhong Xie getCacheKey() Fang Fa ,Zhe Yang De Hua ,Mei Yi Ci Qing Qiu De Jie Guo ,Du Hui Fang Zai Hystrix Qing Qiu Shang Xia Wen Zhong . Xia Yi Ci Tong Yi Ge productId De Shu Ju Qing Qiu ,Zhi Jie Qu Huan Cun ,Wu Xu Zai Diao Yong run() Fang Fa .
private Long productId;
private static final HystrixCommandKey KEY = HystrixCommandKey.Factory.asKey("GetProductInfoCommand");
public GetProductInfoCommand(Long productId) {
super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("ProductInfoService"))
.andCommandKey(KEY));
this.productId = productId;
}
@Override
protected ProductInfo run() {
String url = "http://localhost:8081/getProductInfo?productId=" + productId;
String response = HttpClientUtils.sendGetRequest(url);
System.out.println("Diao Yong Jie Kou Cha Xun Shang Pin Shu Ju ,productId=" + productId);
return JSONObject.parseObject(response, ProductInfo.class);
}
/**
* Mei Ci Qing Qiu De Jie Guo ,Du Hui Fang Zai HystrixBang Ding De Qing Qiu Shang Xia Wen Shang
*
* @return cacheKey Huan Cun key
*/
@Override
public String getCacheKey() {
return "product_info_" + productId;
}
/**
* Jiang Mou Ge Shang Pin idDe Huan Cun Qing Kong
*
* @param productId Shang Pin id
*/
public static void flushCache(Long productId) {
HystrixRequestCache.getInstance(KEY,
HystrixConcurrencyStrategyDefault.getInstance()).clear("product_info_" + productId);
}
}
Zhe Li Xie Liao Yi Ge flushCache() Fang Fa ,Yong Yu Wo Men Kai Fa Shou Dong Shan Chu Huan Cun .
controller Diao Yong command Cha Xun Shang Pin Xin Xi
Zai Yi Ci web Qing Qiu Shang Xia Wen Zhong ,Chuan Ru Shang Pin id Lie Biao ,Cha Xun Duo Tiao Shang Pin Shu Ju Xin Xi . Dui Yu Mei Ge productId,Du Chuang Jian Yi Ge command.
Ru Guo id Lie Biao Mei You Qu Zhong ,Na Yao Zhong Fu De id,Di Er Ci Cha Xun De Shi Hou Jiu Hui Zhi Jie Zou Huan Cun .
public class CacheController {
/**
* Yi Ci Xing Pi Liang Cha Xun Duo Tiao Shang Pin Shu Ju De Qing Qiu
*
* @param productIds Yi ,Fen Ge De Shang Pin idLie Biao
* @return Xiang Ying Zhuang Tai
*/
@RequestMapping("/getProductInfos")
@ResponseBody
public String getProductInfos(String productIds) {
for (String productId : productIds.split(",")) {
// Dui Mei Ge productId,Du Chuang Jian Yi Ge command
GetProductInfoCommand getProductInfoCommand = new GetProductInfoCommand(Long.valueOf(productId));
ProductInfo productInfo = getProductInfoCommand.execute();
System.out.println("Shi Fou Shi Cong Huan Cun Zhong Qu De Jie Guo :" + getProductInfoCommand.isResponseFromCache());
}
return "success";
}
}
Fa Qi Qing Qiu
Diao Yong Jie Kou ,Cha Xun Duo Ge Shang Pin De Xin Xi .
http://localhost:8080/getProductInfos?productIds=1,1,1,2,2,5
Zai Kong Zhi Tai ,Wo Men Ke Yi Kan Dao Yi Xia Jie Guo .
Diao Yong Jie Kou Cha Xun Shang Pin Shu Ju ,productId=1
Shi Fou Shi Cong Huan Cun Zhong Qu De Jie Guo :false
Shi Fou Shi Cong Huan Cun Zhong Qu De Jie Guo :true
Shi Fou Shi Cong Huan Cun Zhong Qu De Jie Guo :true
Diao Yong Jie Kou Cha Xun Shang Pin Shu Ju ,productId=2
Shi Fou Shi Cong Huan Cun Zhong Qu De Jie Guo :false
Shi Fou Shi Cong Huan Cun Zhong Qu De Jie Guo :true
Diao Yong Jie Kou Cha Xun Shang Pin Shu Ju ,productId=5
Shi Fou Shi Cong Huan Cun Zhong Qu De Jie Guo :false
Di Yi Ci Cha Xun productId=1 De Shu Ju ,Hui Diao Yong Jie Kou Jin Xing Cha Xun ,Bu Shi Cong Huan Cun Zhong Qu Jie Guo . Er Sui Hou Zai Chu Xian Cha Xun productId=1 De Qing Qiu ,Jiu Zhi Jie Qu Huan Cun Liao ,Zhe Yang De Hua ,Xiao Lu Ming Xian Gao Hen Duo .
Shan Chu Huan Cun
Wo Men Xie Yi Ge UpdateProductInfoCommand,Zai Geng Xin Shang Pin Xin Xi Zhi Hou ,Shou Dong Diao Yong Zhi Qian Xie De flushCache(),Shou Dong Jiang Huan Cun Shan Chu .
private Long productId;
public UpdateProductInfoCommand(Long productId) {
super(HystrixCommandGroupKey.Factory.asKey("UpdateProductInfoGroup"));
this.productId = productId;
}
@Override
protected Boolean run() throws Exception {
// Zhe Li Zhi Xing Yi Ci Shang Pin Xin Xi De Geng Xin
// ...
// Ran Hou Qing Kong Huan Cun
GetProductInfoCommand.flushCache(productId);
return true;
}
}
Zhe Yang ,Yi Hou Cha Xun Gai Shang Pin De Qing Qiu ,Di Yi Ci Jiu Hui Zou Jie Kou Diao Yong Qu Cha Xun Zui Xin De Shang Pin Xin Xi .