Spring Cloud构建微服务架构(一)服务注册与发现
2017-02-10 00:00
399 查看
SpringCloud简介
SpringCloud是一个基于SpringBoot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。SpringCloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:SpringCloudConfig、SpringCloudNetflix、SpringCloudCloudFoundry、SpringCloudAWS、SpringCloudSecurity、SpringCloudCommons、SpringCloudZookeeper、SpringCloudCLI等项目。
微服务架构
“微服务架构”在这几年非常的火热,以至于关于微服务架构相关的产品社区也变得越来越活跃(比如:netflix、dubbo),SpringCloud也因Spring社区的强大知名度和影响力也被广大架构师与开发者备受关注。那么什么是“微服务架构”呢?简单的说,微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署、独立维护、独立扩展,服务与服务间通过诸如RESTfulAPI的方式互相调用。
对于“微服务架构”,大家在互联网可以搜索到很多相关的介绍和研究文章来进行学习和了解。也可以阅读始祖MartinFowler的
服务注册与发现
在简单介绍了SpringCloud和微服务架构之后,下面回归本文的主旨内容,如何使用SpringCloud搭建服务注册与发现模块。这里我们会用到
所以,我们这里的核心内容就是服务发现模块:Eureka。下面我们动手来做一些尝试。
创建“服务注册中心”
创建一个基础的SpringBoot工程,并在2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> <relativePath/><!--lookupparentfromrepository--> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> |
2 3 4 5 6 7 8 9 10 | @SpringBootApplication publicclassApplication{ publicstaticvoidmain(String[]args){ newSpringApplicationBuilder(Application.class).web(true).run(args); } } |
2 3 4 5 | eureka.client.register-with-eureka=false eureka.client.fetch-registry=false eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/ |
启动工程后,访问:
可以看到下面的页面,其中还没有发现任何服务
alt
该工程可参见:
创建“服务提供方”
下面我们创建提供服务的客户端,并向服务注册中心注册自己。假设我们有一个提供计算功能的微服务模块,我们实现一个RESTfulAPI,通过传入两个参数a和b,最后返回a+b的结果。
首先,创建一个基本的SpringBoot应用,在
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> <relativePath/><!--lookupparentfromrepository--> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> |
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | publicclassComputeController{ privatefinalLoggerlogger=Logger.getLogger(getClass()); @Autowired privateDiscoveryClientclient; @RequestMapping(value="/add",method=RequestMethod.GET) publicIntegeradd(@RequestParamIntegera,@RequestParamIntegerb){ ServiceInstanceinstance=client.getLocalServiceInstance(); Integerr=a+b; logger.info("/add,host:"+instance.getHost()+",service_id:"+instance.getServiceId()+",result:"+r); returnr; } } |
2 3 4 5 6 7 8 9 10 | @SpringBootApplication publicclassComputeServiceApplication{ publicstaticvoidmain(String[]args){ newSpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args); } } |
2 3 4 5 | server.port=2222 eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/ |
为了在本机上测试区分服务提供方和服务注册中心,使用
启动该工程后,再次访问:
可以看到,我们定义的服务被注册了。
alt
相关文章推荐
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】
- Spring Cloud构建微服务架构(一)服务注册与发现
- SpringCloud构建微服务入门架构(二)服务注册与发现Eureka集群搭建
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】
- Spring Cloud构建微服务架构:Eureka服务注册与发现
- Spring Cloud构建微服务架构(一)服务注册与发现
- Spring Cloud构建微服务架构:Consul服务注册与发现
- Spring Cloud构建微服务架构服务注册与发现
- Spring Cloud构建微服务架构(一)服务注册与发现
- Spring Cloud构建微服务架构服务注册与发现
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】
- Spring Cloud构建微服务架构(一)服务注册与发现
- Spring Cloud构建微服务架构(一)服务注册与发现
- Spring Cloud构建微服务架构(一)服务注册与发现
- Spring Cloud构建微服务架构(一)服务注册与发现
- Spring Cloud构建微服务架构(一)服务注册与发现
- Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】
- SpringCloud微服务架构搭建(一):注册与发现
- 【微服务架构】SpringCloud之Eureka(服务注册和服务发现基础篇)(二)
- Spring Cloud微服务架构—服务注册与发现