时任工程拆分伙计,以将微服务拆分为单体应用为己任,虽不胜荣幸,然此身尚迷离spring cloud浩瀚知海,不胜惶恐。谋定既成,却不知孰为入手,诚感心有余而力不足。
几经抓耳挠腮,亦有所得。
Spring Cloud的基本大框架有点眉目了。
一 注册中心
eureka 分为客户端和服务端,但是看相关博客,并未发现其客户端何用 。只知其可方便与服务端进行通讯。
服务端是一个服务注册表为核心的服务。里面记载了所有可用的服务(已经注册到注册中心的微服务)
eureka是个客户端发现方式,即调用服务者首先需要访问eureka,获取到服务注册表,然后在服务调用者这里通过负载均衡算法进行判断调用那个服务。
eureka的客户端具有负载均衡的功能,进而引出ribbon这个客户端负载均衡器,首先连接eureka拉去服务注册表,然后计算选取要调用的服务。
Feign随即出现,如何查询服务注册表,Feign提供了基于RESTful的调用来获取,Feign支持Ribbon。
最简单的说明
一 启动注册中心,用来接收服务的注册
二 将要注册的服务类 (提供者和消费者)加上注解 @EnableDiscoveryClient 就可以注册与被发现
三 服务调用者加上注解@EnableFeignClients()用以获得服务
在经过些许工作就可以想调用本地方法一样调用远程服务提供的方法接口了。
feign调用实现
@FeignClient(name= "spring-cloud-producer")public interface HelloRemote { @RequestMapping(value = "/hello") public String hello(@RequestParam(value = "name") String name);}
name:远程服务名,及spring.application.name配置的名称
此类中的方法和远程服务中contoller中的方法名和参数需保持一致。
至此方觉,服务注册与发现,负载均衡,REST调用,这些难以理解之类,Spring Cloud已将其封印,甚至有些仅为注解,区区个别注解即可实现巨大功能,哎。。。。。自己学起来去费心费力,恍恍惚难以学会,亦恍恍惚不知究竟难在何处,为何如此之久仍难以掌握,亦不知需所学,不知所学之法。。。。。。
借鉴高人:http://blog.csdn.net/ityouknow/article/details/72418097
http://blog.csdn.net/qwlzxx/article/details/77163268