今天有朋友留言,说要看Spring-Cloud微服务,只好满足他那大大的愿望。
Spring Cloud 是Pivotal提 供的用于简化分布式系统构建的工具集。Spring Cloud引入了云平台连接器(Cloud Connector)和服务连接器(Service Connector)的概念。云平台连接器是一个接口,需要由云平台提供者进行实现,以便库中的其他模块可以与该云平台协同工作。(更多介绍,可以阅读 InfoQ的这篇文章:http://www.infoq.com/cn/news/2014/06/spring-cloud-platform-abstract。) 在Spring Cloud提供的解决方案中,你将会发现如下的内容:
Spring Cloud最重要的一点是它可以和Spring Boot一起工作,Spring Boot可以帮助开发者更容易地创建基于Spring的应用程序和服务。 从Spring Boot项目名称中的Boot就可以看出来,Spring Boot的作用在于创建和启动新的基于Spring框架的项目。Spring Boot会选择最适合的Spring子项目和第三方开源库进行整合。大部分Spring Boot应用只需要非常少的配置就可以快速运行起来。Spring Boot包含的特性如下:
每一个服务都含有一个特定意义的微服务架构。当你在Spring Cloud上构建微服务架构时,这里有几个基本概念需要首先澄清下。首先,你需要要先创建Configuration Service和Discovery Service两个基础服务。如下图所示: 上面的图片说明了四个微服务以及各个服务之间的依赖关系。 Configuration service处于最顶端,黄色标识,而且被其它微服务所依赖。 Discovery service处于最低端,蓝色标识,同时也被其它服务所依赖。 绿色标识的两个微服务是我们本系列博文中用到的两个应用案例:电影和观影建议。 Configuration Service Configuration Service在微服务架构中是一个非常重要的组件。如12要素理论所说, 微服务应用的配置应该存储在环境中,而不是本地项目中。 Configuration service(配置服务)是一个必不可少的基础组件的原因是因为它可以对所有通过点对点和检索的基础服务进行服务管理。 假 设我们有多个部署环境。比如我们有一个临时环境和一个生产环境,针对每个环境的配置将会是不同的。每一个configuration service 将会由一个独立的Git仓库来存放环境配置。没有其它环境能够访问到这个配置仓库,它只是提供该环境中运行的配置服务罢了。 当Configuration service启动后,它将会指向那些根据配置文件配置的路径并启动对应服务。每一个微服务通过读取自己配置文件中的具体环境来运行。在这一过程中,配置是通过版本管理来进行的内部和集中化管理,更改配置不需要重启服务。 通过Spring Cloud提供的服务终端,你可以更改环境配置,并向Discovery service(发现服务)发送一个刷新信号,所有的用户都会收到新的配置通知。 Discovery Service Discovery Service(发现服务)是另一个重要的微服务架构的组件。Discovery Service管理运行在容器中的众多服务实例,而这些实例工作在集群环境下。在这些应用中,我们使用客户端的方式称之为从服务到服务。举个例子,我使用Spring Cloud Feign ,这是一个基于Restful风格的微服务提供的客户端开源项目,它是从Netflix OSS project项目中派生出来的。 @FeignClient("movie")
public interface MovieClient {
@RequestMapping(method = RequestMethod.GET, value = "/movies")
PagedResources findAll();
@RequestMapping(method = RequestMethod.GET, value = "/movies/{id}")
Movie findById(@RequestParam("id") String id);
@RequestMapping(method = RequestMethod.POST, value = "/movies",
produces = MediaType.APPLICATION_JSON_VALUE)
void createMovie(@RequestBody Movie movie);
}
在上面的例子中,我创建了一个 更令人兴奋的是,这一切在Spring Cloud中都很容易,我所要做的仅仅是知道service ID来创建我的Feign 客户端。服务的URL地址在运行时环境是自动配置的,因为每一个在集群中的微服务将会在启动时通过绑定 微服务架构中的其它服务,也是通过上面提到的方式运行。我只需要知道进行通讯服务的 API Gateway 服务是Spring Cloud的另一个重要组件(关于它的介绍可以阅读http://my.oschina.net/douxingxiang/blog/358173)。它可以用来管理集群服务中的领域实体。下图的绿色六边形是我们提供的数据驱动服务,主要用来管理自己的实体类和数据库。通过添加API Gateway服务,我们可以为通过下面绿颜色的服务为每一个API路由创建一个代理暴露接口。
推荐程序员必备微信号
本文转载于微信公众号: java那些事(csh624366188),更多微信文章请扫描关注公众号: |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|