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

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

1.微服务

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

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

2.服务注册与发现

spingCloudEurekaServer

pom.xml

  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

  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替代)

server: port: 9999
eureka:instance: hostname: 127.0.0.1client: registerWithEureka: falsefetchRegistry: falseserviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

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

pom.xml

  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

  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

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

4.App

pom.xml

  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

  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

  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

server.port=8080
spring.cloud.config.uri=http://127.0.0.1:8888
spring.cloud.config.name=springCloudApp
spring.cloud.config.profile=${config.profile:dev}
#service discovery url
eureka.client.serviceUrl.defaultZone=http://localhost:9999/eureka/
#service name
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

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

  1. 利用springcloud搭建一个简易的分布式简历展示系统

    开发环境 开发工具:idea+MAVEN 数据库:mysql+redis jdk版本:1.8 web容器:springboot自带的tomcat 预计用到的框架:springboot+spring c ...

  2. 本文为大家解释,Dapr是比SpringCloud和Istio更优雅的微服务框架的原因是什么

    Dapr 是微软主导的云原生开源项目,2019年10月首次发布,到正式发布 V1.0 版本的不到一年的时间内,github star 数达到了 1.2万(现在已经超过1.7万星),超过同期的 kube ...

  3. python-37-python微服务框架Nameko

    Python微服务框架nameko的简单使用 推荐一款 Python 微服务框架 - Nameko 微服务框架有Istio.Dubbo和nameko三种: 一.Istio Istio是一个用来连接.管 ...

  4. Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播)

    文章目录 Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播) 一.基础环境搭建 二.构建Nginx 下载nginx-rtmp-module 安装Nginx 编译nginx,代理 ...

  5. 一个简单的微服务项目带你上手spring cloud 全家桶

    最近一个月,断断续续学习了spring cloud的主流微服务模块,然后实践了一个比较容易上手的微服务项目,现在做一个总结. 这个项目是在github上的一个比较经典的spring cloud易上手的 ...

  6. 最新微服务框架SpringCloud Alibaba介绍,搭建

    微服务和SpringCloud Alibaba详细介绍(一),手把手搭建微服务框架 PS:本博客是本人参照B站博主:JAVA阿伟如是说 的视频讲解手敲整理的笔记 跟着一起手动搭建的框架 供大家一起学习 ...

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

    ---恢复内容开始--- 现在学习vue都是利用脚手架vue-cli快速搭建一个项目,这是非常高效的方法,我是十分推荐的,但是有时候在没有互联网的情况,我们没办法在node环境下,敲一个nmp ins ...

  8. springcloud五大组件?注解_spring cloud实现简单的微服务架构

    "读书足以怡情,足以长才.读史使人明智,读诗使人灵秀,数学使人周密,科学使人深刻,伦理学使人庄重,过度学习使人疯魔:凡有所学,皆成性格." --弗朗西斯·培根<论学习> ...

  9. 按步搭建简单IoT微服务(2)

    整体架构 这章节我们将为系统建立一个简单的前端界面.首先安装一些依赖环境并运行起来,按照下面的步骤开始: 如果还没有准备好,可以先在获取的代码仓库 micro-services-tutorial-io ...

最新文章

  1. React | Expected an assignment or function call and instead saw.....
  2. eclipse 使用lombok 精简java bean
  3. vue-element-admin台前端解决方案: 基于 vue 和 element-ui实现
  4. sonarqube连mysql_.net持续集成sonarqube篇之sonarqube安装与基本配置
  5. 浅谈地方门户网站运营思路
  6. .net core 注入中的三种模式:Singleton、Scoped 和 Transient
  7. Nhibernate.hbm2ddl.auto配置详解
  8. 1947-2021 NBA总冠军次数排行榜
  9. LKT系列加密芯片如何预置openssl生成的rsa密钥完成运算(三)
  10. SQL数据库的下载与安装
  11. Spring tool suite修改主题
  12. 使用内网穿透实现外网访问内网地址
  13. 一张图讲清楚产品架构,手把手教你画产品框架图
  14. 一个在线五笔的例子的代码,很不错,转载过来共享
  15. c语言编译器提示隐式声明,在C中使用“隐式声明功能”警告有什么含义?
  16. 直播美颜SDK从技术层面如何自行实现
  17. 一张图片告诉你win10各版本之间的主要区别
  18. 使用chrome设置代理,果然还是linux 方便呢。想安装一个chrome的插件,通过命令设置代理。
  19. log4j 打印线程号配置_日志配置log4j 打印线程号
  20. 前端学习随笔 css篇

热门文章

  1. mysql 执行计划 视频_MySQL执行计划的讲解
  2. java generic new_java中generic实例详解
  3. STM32 SPI通信(读写flash)
  4. 使用LD链接时候文件的顺序
  5. 源码编译php mysql_linux下apache+mysql+php开发环境纯源代码编译搭建(转)
  6. 命令唤醒计算机,电脑Win10怎么使用命令查看唤醒系统设备和任务的软件的方法...
  7. 菜鸟学习笔记:Java提升篇8(线程2——线程的基本信息、线程安全、死锁、生产者消费者模式、任务调度)
  8. 【LeetCode】剑指 Offer 47. 礼物的最大价值
  9. 《Reids 设计与实现》第十三章 Sentinel
  10. 使用Sysmon分析宏病毒(Macros Downloader)