利用SpringCloud搭建一个最简单的微服务框架

http://blog.csdn.net/caicongyang/article/details/52974406

1.微服务

微服务主要包含服务注册,服务发现,服务路由,服务配置,服务熔断,服务降级等一系列的服务,而Spring Cloud为我们提供了个一整套的服务;

本例子为你提供了最简单的一个服务发现例子,包含服务注册发现spingCloudEurekaServer、服务配置中心spingCloudConfServer、以及一个app应用springCloudApp

2.服务注册与发现

spingCloudEurekaServer

pom.xml

[html] view plain copy

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>com.caicongyang</groupId>
  4. <artifactId>spingCloudEurekaServer</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <parent>
  7. <groupId>org.springframework.cloud</groupId>
  8. <artifactId>spring-cloud-starter-parent</artifactId>
  9. <version>Angel.SR6</version>
  10. </parent>
  11. <dependencies>
  12. <dependency>
  13. <groupId>org.springframework.cloud</groupId>
  14. <artifactId>spring-cloud-starter-eureka-server</artifactId>
  15. </dependency>
  16. </dependencies>
  17. <build>
  18. <plugins>
  19. <plugin>
  20. <groupId>org.springframework.boot</groupId>
  21. <artifactId>spring-boot-maven-plugin</artifactId>
  22. </plugin>
  23. </plugins>
  24. </build>
  25. </project>

Application.java

[java] view plain copy

  1. package com.caicongyang.eureka;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
  5. /**
  6. * Spring could EurekaServer程序主入口
  7. *
  8. * @author Administrator
  9. *
  10. */
  11. @SpringBootApplication
  12. @EnableEurekaServer
  13. public class Application {
  14. public static void main(String[] args) {
  15. SpringApplication.run(Application.class, args);
  16. }
  17. }

application.yml  (可用properties替代)

[plain] view plain copy

  1. server:
  2. port: 9999
  3. eureka:
  4. instance:
  5. hostname: 127.0.0.1
  6. client:
  7. registerWithEureka: false
  8. fetchRegistry: false
  9. serviceUrl:
  10. defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

3.服务配置(全局配置中心)

pom.xml

[html] view plain copy

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.caicongyang</groupId>
  5. <artifactId>spingCloudConfServer</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <parent>
  8. <groupId>org.springframework.cloud</groupId>
  9. <artifactId>spring-cloud-starter-parent</artifactId>
  10. <version>Angel.SR6</version>
  11. </parent>
  12. <dependencies>
  13. <dependency>
  14. <groupId>org.springframework.cloud</groupId>
  15. <artifactId>spring-cloud-config-server</artifactId>
  16. </dependency>
  17. <!-- sping cloud 注册服务 -->
  18. <dependency>
  19. <groupId>org.springframework.cloud</groupId>
  20. <artifactId>spring-cloud-starter-eureka</artifactId>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.springframework.boot</groupId>
  24. <artifactId>spring-boot-starter-test</artifactId>
  25. <scope>test</scope>
  26. </dependency>
  27. </dependencies>
  28. <build>
  29. <plugins>
  30. <plugin>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-maven-plugin</artifactId>
  33. </plugin>
  34. </plugins>
  35. <defaultGoal>compile</defaultGoal>
  36. </build>
  37. </project>

application.java

[java] view plain copy

  1. package com.caiconyang.conf;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.config.server.EnableConfigServer;
  5. /**
  6. * Spring could conf程序主入口
  7. * @author Administrator
  8. *
  9. */
  10. @SpringBootApplication
  11. @EnableConfigServer
  12. public class Application {
  13. public static void main(String[] args) {
  14. SpringApplication.run(Application.class,args);
  15. }
  16. }

application.properties

[plain] view plain copy

  1. server.port=8888
  2. ## App配置文件所在git地址
  3. spring.cloud.config.server.git.uri=https://git.oschina.net/caicongyang/springCloudConfigRepo.git
  4. spring.cloud.config.server.git.searchPaths=repo
  5. spring.application.name=spingCloudConfServer

4.App

pom.xml

[html] view plain copy

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>com.caicongyang</groupId>
  4. <artifactId>springCloudApp</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <parent>
  7. <groupId>org.springframework.cloud</groupId>
  8. <artifactId>spring-cloud-starter-parent</artifactId>
  9. <version>Angel.SR6</version>
  10. </parent>
  11. <properties>
  12. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  13. <java.version>1.7</java.version>
  14. <java.encoding>UTF-8</java.encoding>
  15. <springfox.swagger.version>2.2.2</springfox.swagger.version>
  16. </properties>
  17. <dependencies>
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter-web</artifactId>
  21. </dependency>
  22. <!-- sping cloud 监控  http://localhost:8080/health -->
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter-actuator</artifactId>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.cloud</groupId>
  29. <artifactId>spring-cloud-starter-config</artifactId>
  30. </dependency>
  31. <!-- sping cloud 注册服务 -->
  32. <dependency>
  33. <groupId>org.springframework.cloud</groupId>
  34. <artifactId>spring-cloud-starter-eureka</artifactId>
  35. </dependency>
  36. <!-- sping cloud 路由 -->
  37. <dependency>
  38. <groupId>org.springframework.cloud</groupId>
  39. <artifactId>spring-cloud-starter-hystrix</artifactId>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.springframework.boot</groupId>
  43. <artifactId>spring-boot-starter-test</artifactId>
  44. <scope>test</scope>
  45. </dependency>
  46. <dependency>
  47. <groupId>io.springfox</groupId>
  48. <artifactId>springfox-swagger2</artifactId>
  49. <version>${springfox.swagger.version}</version>
  50. </dependency>
  51. <dependency>
  52. <groupId>io.springfox</groupId>
  53. <artifactId>springfox-swagger-ui</artifactId>
  54. <version>${springfox.swagger.version}</version>
  55. </dependency>
  56. </dependencies>
  57. <build>
  58. <finalName>spingcould</finalName>
  59. <plugins>
  60. <plugin>
  61. <groupId>org.apache.maven.plugins</groupId>
  62. <artifactId>maven-compiler-plugin</artifactId>
  63. <configuration>
  64. <source>${java.version}</source>
  65. <target>${java.version}</target>
  66. <encoding>${java.encoding}</encoding>
  67. <showWarnings>true</showWarnings>
  68. </configuration>
  69. </plugin>
  70. </plugins>
  71. </build>
  72. </project>

Application.java

[java] view plain copy

  1. package com.caicongyang.springCloudApp.main;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  4. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  5. import org.springframework.context.annotation.ComponentScan;
  6. import org.springframework.context.annotation.Configuration;
  7. /**
  8. * Spring could web程序主入口
  9. * @author Administrator
  10. *
  11. */
  12. @Configuration//配置控制
  13. @EnableAutoConfiguration//启用自动配置
  14. @ComponentScan(value={"com.caicongyang.springCloudApp"})//组件扫描
  15. @EnableDiscoveryClient
  16. public class Application {
  17. public static void main(String[] args) {
  18. //第一个简单的应用,
  19. SpringApplication.run(Application.class,args);
  20. }
  21. }

SwaggerConfig.java

[java] view plain copy

  1. package com.caicongyang.springCloudApp.conf;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import springfox.documentation.service.ApiInfo;
  6. import springfox.documentation.spi.DocumentationType;
  7. import springfox.documentation.spring.web.plugins.Docket;
  8. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  9. /**
  10. *
  11. * @author caicongyang1
  12. * @version id: SwaggerConfig, v 0.1 16/4/22 下午4:12 caicongyang1 Exp $$
  13. */
  14. @Configuration
  15. @EnableSwagger2
  16. public class SwaggerConfig {
  17. @Value("${swagger.ui.enable}") //该配置项在配置中心管理
  18. private boolean environmentSpecificBooleanFlag;
  19. @Bean
  20. public Docket docketFactory() {
  21. return new Docket(DocumentationType.SWAGGER_2).apiInfo(
  22. new ApiInfo("接口文档", "SpingCloud web接口列表", "1.0", "", "", "", "")).enable(environmentSpecificBooleanFlag);
  23. }
  24. }

application.properties

[plain] view plain copy

  1. server.port=8080
  2. spring.cloud.config.uri=http://127.0.0.1:8888
  3. spring.cloud.config.name=springCloudApp
  4. spring.cloud.config.profile=${config.profile:dev}
  5. #service discovery url
  6. eureka.client.serviceUrl.defaultZone=http://localhost:9999/eureka/
  7. #service name
  8. spring.application.name=springCloudApp

5.测试与验证

顺序启动服务注册发现spingCloudEurekaServer、服务配置中心spingCloudConfServer、以及一个app应用springCloudApp

测试与验证

1.访问http://localhost:9999/eureka/  app是否已经注册上来

2.访问 http://localhost:8080/swagger-ui.html 是否正常访问,如果正常访问说明争取读取到config配置中心的swagger.ui.enable配置项

6.源码:

以上所有源码:

https://git.oschina.net/caicongyang/springcloud.git

原文地址:https://www.cnblogs.com/hfultrastrong/p/8526738.html

时间: 2024-10-12 11:51:07

利用SpringCloud搭建一个最简单的微服务框架的相关文章

一个最简单的微服务架构

前言 微服务架构一般会有一个开放网关作为总入口,负责分发流量到实际的应用服务上.下面看图. 架构图 项目结构 这个架构分别由反向代理nginx,注册中心zookeeper,开放网关gateway,和两个服务goodservice,priceservice组件而成.为了方便测试,我把建了两个一样的gateway和goodservice.而common作为公共的二方包存在,也是为了简单起见,gateway和service引用同一个二方包. nginx nginx除了作为反向代理,也具有负载均衡的功能

微服务框架surging学习之路——序列化

原文:微服务框架surging学习之路--序列化 1.对微服务的理解 之前看到在群里的朋友门都在讨论微服务,看到他们的讨论,我也有了一些自己的理解,所谓微服务就是系统里的每个服务都 可以自由组合.自由组合这个就很厉害了,这样一来,每个服务与服务之间基本的物理 耦合为0,横向扩展整个系统就会非常非常灵活. surging的厉害之处也恰恰是可以做到这些,所以surging 是.net core 里面一个非常不错的微服务框架. 2.surging的序列化方式 2.1 json.Net surging

简单Spring Cloud 微服务框架搭建

微服务是现在比较流行的技术,对于程序猿而言,了解并搭建一个基本的微服务框架是很有必要滴. 微服务包含的内容非常多,一般小伙伴们可以根据自己的需求不断添加各种组件.框架. 一般情况下,基本的微服务框架包含:框架:注册中心.负载均衡.声明式服务(feign).容错(hystrix).网关(权限)gateway 和 配置(resource) 注册中心:现在比较常用的有eureka.nacos 负载均衡:包括feign.ribbon等技术,相关对比可以参考另一位老哥的博客:<负载均衡之feign与rib

抛开vue-cli 利用requireJS搭建一个vue项目

---恢复内容开始--- 现在学习vue都是利用脚手架vue-cli快速搭建一个项目,这是非常高效的方法,我是十分推荐的,但是有时候在没有互联网的情况,我们没办法在node环境下,敲一个nmp install XXX帮我们搭建系统.这边也遇到了这样的情况,记录一下过程,备忘. 采用的方式是利用requireJS搭建一个遵循AMD规则的vue项目.关于这一块,大家可以百度一下,查询相关资料熟悉requireJS的使用. 第一步,都是建立一个如下常规的简单的工程结构: ----lib 存放js库文件

微服务框架Dubbo与Springcloud的区别

微服务框架Dubbo与Springcloud的区别 微服务主要的优势如下: 1.降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累.每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界. 每个服务开发者只专注服务本身,通过使用缓存.DAL等各种技术手段来提升系统的性能,而对于消费方来说完全透明. 2.可独立部署 由于微服务具备独立的运行进程,所以每个微服务可以独立部署.当业务迭代时只需要发布相关服务的迭代即可,降低了测试的工作量同时也降低了服务发布的风

从 Spring Cloud 看一个微服务框架的「五脏六腑」

原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组合的框架.因为与构建微服务本身没有直接关系,所以本文不对 Spring Boot 进行展开.另外本文有一些例子涉及到 Spring 和 Spring Boot,建议先了解一下 Spring 和 Spri

【干货】手动搭建一套可自动化构建的微服务框架

如何阅读 本文篇幅较长,我花了两天的时间完成,大约需要半小时阅读. 本文分为理论篇和实践篇,由于代码在手机端展示并不理想,建议大家收藏之后在PC端阅读.实践篇边动手边阅读更有助于理解. 在阅读的同时,也麻烦各位大佬多多分享! 本文你将学到什么? 本文将以原理+实战的方式,首先对"微服务"相关的概念进行知识点扫盲,然后开始手把手教你搭建这一整套的微服务系统. 这套微服务框架能干啥? 这套系统搭建完之后,那可就厉害了: 微服务架构你的整个应用程序将会被拆分成一个个功能独立的子系统,独立运行

微服务框架-SpringCloud简介

前面一篇文章谈到微服务基础框架,而Netflix的多个开源组件一起正好可以提供完整的分布式微服务基础架构环境,而对于Spring Cloud正是对Netflix的多个开源组件进一步的封装而成,同时又实现了和云端平台,和Spring Boot开发框架很好的集成. Spring Cloud是一个相对比较新的微服务框架,今年(2016)才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案.

SprngCloud微服务框架搭建(一)

参照来源 :https://blog.csdn.net/forezp/article/details/70148833 1.简介 目前来说,SpringCloud是比较完整的微服务解决方案框架.不像其他rpc远程调用框架,只是解决某个微服务中的问题. 2.微服务框架搭建 2.1.服务的注册与发现Eureka(Finchley版本) 本次采用Eureka作为服务注册与发现的组件. 2.1.1.创建服务注册中心 首先创建一个空的maven工程,在其pom文件引入依赖, Spring Boot 版本采