`
m635674608
  • 浏览: 5028261 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring Cloud构建微服务

 
阅读更多

首先了解下项目结构

请忽略config-service,这里先不说这个

pom.xml配置

<!--这里只写出比较重要的配置,模组依赖的配置这里就不写了,不明白的可以先看看maven相关知识-->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </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>

discovery-service

discovery-service目录结构如下,主要就是一个Java类,外加两个yml配置文件

DiscoveryApplication.java 内容如下 注解SpringBootApplication是@Configuration @EnableAutoConfiguration @ComponentScan三个注解的集合 注解EnableEurekaServer表明这是一个Eureka Server,用于服务的注册

@SpringBootApplication
@EnableEurekaServer
public class DiscoveryApplication {

    public static void main(String[] args) {
        SpringApplication.run(DiscoveryApplication.class,args);
    }
}

bootstrap.yml配置如下,这里只配置了服务的名字叫 discovery

spring:
    application:
        name: discovery  
 
application.yml配置如下
server.port配置了tomcat的启动端口,eureka实例的名字,以及eureka其他配置。因为我们这里是eureka服务端,
register-with-eureka配置为false,这个配置表示是否将其本身注册到eureka server以被其他发现
fetch-registry配置为false,这个配置表示是否需要从eureka server中抓取eureka上的注册信息
defaultZone 默认地址为 http://localhost:8761/eureak
 
server:
    port: 8761

eureka:
    instance:
        hostname: discovery
    client:
        register-with-eureka: false
        fetch-registry: false
        service-url:
            defaultZone: http://discovery:${server.port}/eureka/

spring.cloud.config.discovery.enabled: true

category-service

category-service 目录结构大致如下,这里我们主要说明下CategoryController.javaCategoryApplication.javaapplication.ymlbootstrap.yml的内容。

CategoryController.java内容如下,主要就是对外提供服务,通过访问地址 /v1/category
 
@RestController
@RequestMapping("/v1")
public class CategoryController {

    private static final Logger LOGGER = LoggerFactory.getLogger(CategoryController.class);


    @Autowired
    CategoryService categoryService;

    @RequestMapping("/category")
    public List<Category> getCategory() {
        LOGGER.info("哇塞~鸟人哎哎哎哎");

        return categoryService.getCategory();
    }
}
 
CategoryApplication.java主要内容如下,最重要的就是@EnableEurekaClient表示这是个eureka client,这个应用
将会被注册到eureka server,这个应用的端口是什么?注册到哪个eureka server?带着这些疑问,待会我们看application.yml
 
@SpringBootApplication
@EnableEurekaClient
public class CategoryApplication {

    public static void main(String[] args) {
        SpringApplication.run(CategoryApplication.class,args);
 }
}
 
application.yml如下,server.port配置的端口为0表明启动这个项目之后,会自动为其分配一个可用端口,如果我们把这个应用
打成一个可执行jar包,在不重新指定端口的情况下,只会有一个程序能正常工作哦。
defaultZone 指明了该服务注册的地址,服务将会被注册到这个地址上
ribbon.eureka.enabled 默认情况即为true,这里不配置也无所谓
 
server:
    port: 0

eureka:
    client:
    serviceUrl:
      defaultZone: http://discovery:8761/eureka/
instance:
    preferIpAddress: true

ribbon:
    eureka:
    enabled: true
 
bootstrap.yml配置如下,这里配置了服务的名字叫catelog-service,其他啥都没有哦
 
spring:
    application:
        name: catalog-service

gateway-service

gateway-service项目结构如下,gateway主要是为了统一暴露接口而生,服务众多的情况下,对前端来讲,我不需要记住那么多的域名
地址来调用API,我需要记住的只是gateway的地址就行。

Application.java内容如下,最主要的其实就是@EnableSidecar,这个东西他提供了一个jsp页面。通过这个页面我们可以知道
gateway以及其他在eureka server上注册的服务的健康状况,并且这个注解包含了@EnableZuulProxy,所以呢,它也支持软
负载均衡,如果启动多个服务,通过gateway来调用这个接口,多次调用我们会发现,请求会落在不同的服务上    
 
@SpringBootApplication
@EnableSidecar
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
 
application.yml如下,里面主要多了一个endpoints配置和sidecar的端口配置,endpoints是为了监控系统才有的配置,
具体可以参看AbstractEndpoint.java的实现类。sidecar的端口这里配置的是80,其他端口也是可以的
bootstrap.yml就不提了,因为里面只有服务的名字,和上面的类似
 
server:
    port: 10000

endpoints:
    restart:
        enabled: true
    shutdown:
        enabled: true
    health:
        sensitive: false

eureka:
    instance:
        hostname: gateway
    client:
        registerWithEureka: true
        fetchRegistry: true
        serviceUrl:
            defaultZone: http://discovery:8761/eureka/
sidecar:
    port: 80

如何查看服务的健康状况?

答: 就本例来说,我们访问地址http://gateway:10000/来了解gateway的情况,如果要知道catelog-service的情况我们就访问http://gateway:10000/hosts/catalog-service地址。hosts后面跟我们的服务的名字即可

spring boot如何创建一个可执行的jar包

答:在服务端的pom文件中增加插件spring-boot-maven-plugin。参考文档http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/

如何通过gateway来访问其他服务

答:举例,如果我们要通过gateway来访问catalog-service服务,那么我在浏览器里面输入http://gateway:10000/catalog-service/v1/category这里的/v1/category是由catalog-servicel来决定的,catalog-service则是服务的名字

PS: 一些截图 

参考文档

 

【1】http://jinnianshilongnian.iteye.com/blog/1902886
【2】http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/

 

 

http://my.oschina.net/openforce/blog/680941

分享到:
评论
1 楼 wangyudong 2017-11-27  
由Spring Boot实现的微服务需要有比较好的工具去测试RESTful API,很多REST Client是不支持自动化测试RESTful API,也不支持自动生成API文档.
之前习惯用一款名字为 WisdomTool REST Client,支持自动化测试RESTful API,输出精美的测试报告,并且自动生成精美的RESTful API文档。
轻量级的工具,功能却很精悍哦!

https://github.com/wisdomtool/rest-client

Most of REST Client tools do not support automated testing.

Once used a tool called WisdomTool REST Client supports automated testing, output exquisite report, and automatically generating RESTful API document.

Lightweight tool with very powerful features!

https://github.com/wisdomtool/rest-client

相关推荐

    蚂蚁课堂-第四期-基于SpringCloud构建微服务电商项目

    蚂蚁课堂-第四期-基于SpringCloud构建微服务电商项目 (无密) |____035-自动化运维-基于Docker+Jenkins实现自动化部署.rar |____034-秒杀系统设计-基于责任链设计模式与网关实现限流.rar |____033-秒杀系统设计-基于...

    使用Spring Cloud和Docker构建微服务

    在使用Spring Cloud构建微服务时,可以发现如下几个核心组件:配置管理、服务发现、断路器和分布式会话。配置管理遵循了十二因素应用原则中的配置管理部分,服务发现则是微服务架构中的关键组件,它允许服务间相互...

    一个使用Spring Cloud构建微服务架构的基本步骤和示例配置

    一个使用Spring Cloud构建微服务架构的基本步骤和示例配置 请注意,这只是一个非常高级的概述和示例。在实际项目中,你可能需要处理更多复杂的场景,如安全配置、服务间的调用跟踪、日志聚合等。此外,Spring Cloud...

    打造Spring Cloud构建微服务架构的最全资料

    本资料旨在提供最全面的Spring Cloud构建微服务架构的知识,帮助开发者深入理解和实践这一强大的框架。 1. **Spring Boot基础** 在开始Spring Cloud之前,了解Spring Boot的基本概念和使用是必要的。Spring Boot...

    Spring Cloud构建微服务架构.doc

    Spring Cloud构建微服务架构是现代企业级应用开发的热门选择,尤其在Java生态系统中,它利用Spring Boot的便利性,简化了云应用的构建过程。Spring Cloud作为一个集合体,涵盖了多个子项目,如Config用于配置管理,...

    这本书介绍了如何使用 Spring Boot 和 Spring Cloud 构建微服务架构,是一个很好的学习资源

    微服务开发实践:通过实际的案例和示例,演示了如何使用 Spring Boot 和 Spring Cloud 构建微服务应用程序。包括服务拆分、服务间通信、服务治理等方面的实践经验。 部署和运维:讨论了微服务架构的部署和运维问题...

    目前倾力于平台架构的升级,原计划使用springboot+springcloud构建微服务架构

    标题提到的"目前倾力于平台架构的升级,原计划使用springboot+springcloud构建微服务架构",这表明了一个正在或即将进行的项目升级,其核心是将原有的单体架构转变为微服务架构,以提高系统的可扩展性、灵活性和可靠...

    Spring Cloud构建微服务架构

    Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格...

    Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台

    Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台,集成OAuth2认证、集成短信验证码登录、微信小程序登录、FlyWay数据库版本管理、网关集成Swagger聚合所有服务API文档。基于SpringBoot...

    spring微服务架构:使用spring cloud构建微服务-脑图

    spring团队对新一代软件开发的思索。 为什么软件开发是spring boot? 为什么软件开发是spring cloud? 如何使用spring cloud搭建微服务。

    使用SpringCloud构建微服务.pdf

    用spring cloud搭建微服务框架,是我最近最主要的工作之一,一开始我使用bubbo加zookeeper制作了一个基于dubbo的微服务框架,然后被架构师否了,架构师曰:此物过时。随即,我上一套spring cloud,与公司大环境框架...

    使用Spring-Cloud构建微服务.pptx

    使用Spring Cloud构建微服务 Spring Cloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本。虽然Spring Cloud时间最短,但是相比Dubbo等RPC框架,Spring Cloud提供的全套的分布式系统解决方案。 ...

    SpringBoot,SpringCloud构建微服务在此基础快速开发

    本项目旨在利用这两个框架的强大力量,帮助开发者快速搭建并部署微服务系统。下面我们将深入探讨这些知识点。 **Spring Boot** Spring Boot 是由 Pivotal 团队开发的 Java 框架,它旨在简化 Spring 应用的初始设置...

    深入理解Spring Cloud与微服务构建.方志朋(源代码).rar

    本书共分16章,全面涵盖了Spring Cloud构建微服务相关的知识点。第1、2章详细介绍了微服务架构和Spring Cloud。第3、4章讲解了用Spring Cloud构建微服务的准备工作。第5~12章以案例为切入点,讲解了Spring Cloud...

    springcloud 完整练习项目

    这个项目将会展示如何在实际场景中使用 Spring Cloud 构建微服务架构,包括服务注册、服务发现、客户端负载均衡、API 网关等功能的实现。通过对这些组件的深入学习和实践,开发者可以更好地理解和掌握 Spring Cloud ...

    使用 Spring Cloud快速构建微服务应用.pdf

    【使用Spring Cloud构建微服务应用】 构建微服务应用通常包含以下几个步骤: 1. **服务注册与发现**:使用Eureka或Consul等组件,服务提供者注册自身到注册中心,服务消费者通过注册中心获取服务提供者的地址。...

    详解spring cloud构建微服务架构的网关(API GateWay)

    Spring Cloud 构建微服务架构的网关(API GateWay) Spring Cloud 是一个基于 Java 的微服务架构开发框架,它提供了一系列的组件和工具来帮助开发者快速构建微服务架构。其中,API Gateway 是微服务架构中的一个关键...

    spring-cloud-demo:分步演示,展示了如何开始使用Spring Cloud构建微服务。 源代码在Scala中-Show source code

    该演示仅是一个基本介绍,它使您了解如何使用Spring Cloud构建微服务。 这里还有许多未显示的功能和组件。 源代码是用Scala编写的。 此演示的git存储库包含许多步骤,并使用git标签进行了标记。 克隆此存储库后,...

    SpringCloud微服务实践(3.54G)

    1-5SpringCloud-为什么选择SpringCloud构建微服务.avi 2-1SpringCloud-SpringCloud是什么.avi 2-2SpringCloud-SpringCloud的版本.avi 2-3SpringCloud-SpringCloud开发环境.avi 2-4SpringCloud-SpringCloud的整体架构...

    微服务书籍管理系统springcloud.rar

    《微服务书籍管理系统springcloud.rar》是一个包含使用Spring Cloud构建微服务架构的书籍管理系统的资源压缩包。Spring Cloud是基于Spring Boot实现的服务发现、配置、路由、熔断、负载均衡等全套微服务解决方案,它...

Global site tag (gtag.js) - Google Analytics