zoukankan      html  css  js  c++  java
  • 利用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.   
    3. import org.springframework.boot.SpringApplication;  
    4. import org.springframework.boot.autoconfigure.SpringBootApplication;  
    5. import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;  
    6.   
    7. /** 
    8.  * Spring could EurekaServer程序主入口 
    9.  *  
    10.  * @author Administrator 
    11.  * 
    12.  */  
    13. @SpringBootApplication  
    14. @EnableEurekaServer  
    15. public class Application {  
    16.     public static void main(String[] args) {  
    17.         SpringApplication.run(Application.class, args);  
    18.     }  
    19. }  

     

    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.   
    8.     <parent>  
    9.         <groupId>org.springframework.cloud</groupId>  
    10.         <artifactId>spring-cloud-starter-parent</artifactId>  
    11.         <version>Angel.SR6</version>  
    12.     </parent>  
    13.     <dependencies>  
    14.         <dependency>  
    15.             <groupId>org.springframework.cloud</groupId>  
    16.             <artifactId>spring-cloud-config-server</artifactId>  
    17.         </dependency>  
    18.         <!-- sping cloud 注册服务 -->  
    19.         <dependency>  
    20.             <groupId>org.springframework.cloud</groupId>  
    21.             <artifactId>spring-cloud-starter-eureka</artifactId>  
    22.         </dependency>  
    23.         <dependency>  
    24.             <groupId>org.springframework.boot</groupId>  
    25.             <artifactId>spring-boot-starter-test</artifactId>  
    26.             <scope>test</scope>  
    27.         </dependency>  
    28.     </dependencies>  
    29.   
    30.     <build>  
    31.         <plugins>  
    32.             <plugin>  
    33.                 <groupId>org.springframework.boot</groupId>  
    34.                 <artifactId>spring-boot-maven-plugin</artifactId>  
    35.             </plugin>  
    36.         </plugins>  
    37.         <defaultGoal>compile</defaultGoal>  
    38.     </build>  
    39. </project>  

    application.java

     

     

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


    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.     
    7.     <parent>  
    8.         <groupId>org.springframework.cloud</groupId>  
    9.         <artifactId>spring-cloud-starter-parent</artifactId>  
    10.         <version>Angel.SR6</version>  
    11.     </parent>  
    12.   <properties>  
    13.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
    14.         <java.version>1.7</java.version>  
    15.         <java.encoding>UTF-8</java.encoding>  
    16.         <springfox.swagger.version>2.2.2</springfox.swagger.version>  
    17.     </properties>  
    18.   <dependencies>  
    19.         <dependency>  
    20.             <groupId>org.springframework.boot</groupId>  
    21.             <artifactId>spring-boot-starter-web</artifactId>  
    22.         </dependency>  
    23.         <!-- sping cloud 监控  http://localhost:8080/health -->  
    24.         <dependency>  
    25.             <groupId>org.springframework.boot</groupId>  
    26.             <artifactId>spring-boot-starter-actuator</artifactId>  
    27.         </dependency>  
    28.         <dependency>  
    29.             <groupId>org.springframework.cloud</groupId>  
    30.             <artifactId>spring-cloud-starter-config</artifactId>  
    31.         </dependency>  
    32.         <!-- sping cloud 注册服务 -->  
    33.         <dependency>  
    34.             <groupId>org.springframework.cloud</groupId>  
    35.             <artifactId>spring-cloud-starter-eureka</artifactId>  
    36.         </dependency>  
    37.             <!-- sping cloud 路由 -->  
    38.         <dependency>  
    39.             <groupId>org.springframework.cloud</groupId>  
    40.             <artifactId>spring-cloud-starter-hystrix</artifactId>  
    41.         </dependency>  
    42.   
    43.         <dependency>  
    44.             <groupId>org.springframework.boot</groupId>  
    45.             <artifactId>spring-boot-starter-test</artifactId>  
    46.             <scope>test</scope>  
    47.         </dependency>  
    48.         <dependency>  
    49.             <groupId>io.springfox</groupId>  
    50.             <artifactId>springfox-swagger2</artifactId>  
    51.             <version>${springfox.swagger.version}</version>  
    52.         </dependency>  
    53.         <dependency>  
    54.             <groupId>io.springfox</groupId>  
    55.             <artifactId>springfox-swagger-ui</artifactId>  
    56.             <version>${springfox.swagger.version}</version>  
    57.         </dependency>  
    58.     </dependencies>  
    59.       
    60.     
    61.   <build>  
    62.         <finalName>spingcould</finalName>  
    63.         <plugins>  
    64.             <plugin>  
    65.                 <groupId>org.apache.maven.plugins</groupId>  
    66.                 <artifactId>maven-compiler-plugin</artifactId>  
    67.                 <configuration>  
    68.                     <source>${java.version}</source>  
    69.                     <target>${java.version}</target>  
    70.                     <encoding>${java.encoding}</encoding>  
    71.                     <showWarnings>true</showWarnings>  
    72.                 </configuration>  
    73.             </plugin>  
    74.         </plugins>  
    75.     </build>  
    76.     
    77.     
    78. </project>  


    Application.java

     

     

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

    SwaggerConfig.java

     

     

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

    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

  • 相关阅读:
    60. 搜索插入位置
    62. 搜索旋转排序数组
    101. 删除排序数组中的重复数字 II
    397. 最长上升连续子序列
    172. 删除元素
    31. 数组划分
    100. 删除排序数组中的重复数字
    407. 加一
    412. 分糖果
    14. 二分查找
  • 原文地址:https://www.cnblogs.com/hfultrastrong/p/8526738.html
Copyright © 2011-2022 走看看