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

刺骨的言语ヽ痛彻心扉 2022-03-15 15:17 353阅读 0赞

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

1.微服务

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

Center

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

2.服务注册与发现

spingCloudEurekaServer

pom.xml

[html] view plain copy

  1. 4.0.0
  2. com.caicongyang
  3. spingCloudEurekaServer
  4. 0.0.1-SNAPSHOT
  5. org.springframework.cloud
  6. spring-cloud-starter-parent
  7. Angel.SR6
  8. org.springframework.cloud
  9. spring-cloud-starter-eureka-server
  10. org.springframework.boot
  11. spring-boot-maven-plugin

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. 4.0.0
  4. com.caicongyang
  5. spingCloudConfServer
  6. 0.0.1-SNAPSHOT
  7. org.springframework.cloud
  8. spring-cloud-starter-parent
  9. Angel.SR6
  10. org.springframework.cloud
  11. spring-cloud-config-server
  12. org.springframework.cloud
  13. spring-cloud-starter-eureka
  14. org.springframework.boot
  15. spring-boot-starter-test
  16. test
  17. org.springframework.boot
  18. spring-boot-maven-plugin
  19. compile

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. 4.0.0
  2. com.caicongyang
  3. springCloudApp
  4. 0.0.1-SNAPSHOT
  5. org.springframework.cloud
  6. spring-cloud-starter-parent
  7. Angel.SR6
  8. UTF-8
  9. 1.7
  10. UTF-8
  11. 2.2.2
  12. org.springframework.boot
  13. spring-boot-starter-web
  14. org.springframework.boot
  15. spring-boot-starter-actuator
  16. org.springframework.cloud
  17. spring-cloud-starter-config
  18. org.springframework.cloud
  19. spring-cloud-starter-eureka
  20. org.springframework.cloud
  21. spring-cloud-starter-hystrix
  22. org.springframework.boot
  23. spring-boot-starter-test
  24. test
  25. io.springfox
  26. springfox-swagger2
  27. ${springfox.swagger.version}
  28. io.springfox
  29. springfox-swagger-ui
  30. ${springfox.swagger.version}
  31. spingcould
  32. org.apache.maven.plugins
  33. maven-compiler-plugin
  34. ${java.version}
  35. ${java.version}
  36. ${java.encoding}
  37. true

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

发表评论

表情:
评论列表 (有 0 条评论,353人围观)

还没有评论,来说两句吧...

相关阅读

    相关 springcloud服务-项目

    前言:      乐优商城这个视频还可以,于是拿来练练手,我对着视频搭环境一直在service服务模块卡住了,注册中心和网关可以启动,服务模块却一直启动不了,报各种奇怪的错,

    相关 SpringCloud服务框架

    一、微服务架构 1.1什么是分布式 不同模块部署在不同服务器上 作用:分布式解决网站高并发带来问题 1.2什么是集群 多台服务器部署相同应用构成一个集群