一、 引入

上回 Spring Cloud 理论篇 介绍了 Spring Cloud 的常见组件,让读者对 Spring Cloud 有了一个宏观认识,这是从理论层面出发的。接下来我们就进入 Spring Cloud 的实战教程,撸起袖子,真枪实弹干一场。在实战演练中感受一下 Spring Cloud 的魅力所在。在教程中,我会将 Spring Cloud 常见组件进行整合。整个过程就像搭积木一样,一点一点地完成一个微服务工程的搭建。实战演练是比较繁琐的,但是只要我们真正地去做了,就会收获很多。

二、 Eureka 组件(注册中心)

作为 Spring Cloud 的注册中心,我们第一步需要把 Eureka 组件搭起来。因为接下来的消费者以及生产者都是以 Eureka 组件为基础展开的。

2.1 pom 文件

我们引入 Eureka 的依赖。

org.springframework.cloud    spring-cloud-starter-eureka-server

正如 Spring Cloud 理论篇 提到 Spring Cloud 是基于 SpringBoot 开发的。那么读者是否有疑惑为什么不需要

web 模块呢?当然是需要的,只不过是 Eureka 的依赖的依赖中已经包含了必要的模块。

2.2 yml 文件

引入必要模块后,我们就要去配置 yml 文件了。

server:  port: 7001eureka:  instance:    hostname: localhost # eureka 服务端的实例名称  client:    register-with-eureka: false # 表示不需要向注册中心注册自己    fetch-registry: false # false 表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务    service-url:      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka # 设置与 Eureka Server 交互的地址查询服务和注册服务

至于配置相关的文件意义,注释已经说的很清楚了。详情请看注释。

2.3 启动类

最后写好启动类,就算完成的 Eureka 组件的搭建了。

@SpringBootApplication@EnableEurekaServerpublic class AppApplication7001 {    public static void main( String[] args ) {        SpringApplication.run(AppApplication7001.class, args);    }}

可以看到我们的启动类的注解除了万年不变的 @SpringBootApplication ,还增加了 @EnableEurekaServer ,该注解的作用是表明该工程作为 Eureka 组件存在的。就好像我们怎么证明自己的身份呢,拿出自己的身份证即可。

2.4 启动效果

Eureka 组件启动如图所示。

三、生产者(服务提供者)

3.1 pom 文件

我们再新建一个工程,该工程其实本质也是一个 Eureka 组件,不过我们可以通过配置文件使其变成生产者。可能读者有点迷糊,我打个比方。社会上有警察、医生、码畜等等,有很多的身份类型,但本质我们都是人。我们都是有感情的生物。回到代码层面,首先我们需要引入相关依赖。

org.springframework.boot    spring-boot-starter-weborg.springframework.cloud    spring-cloud-starter-eureka

3.2 yml 文件

server:  port: 8002  # 服务的端口eureka:  client:    service-url:      defaultZone: http://localhost:7001/eureka

3.3 启动类

@SpringBootApplication@EnableEurekaClientpublic class AppApllcation8002{    public static void main( String[] args ) {         SpringApplication.run(AppApllcation8002.class, args);    }}

这里我们可以看到注册中心的启动类和服务提供者的注解是不一样的。

注册中心服务提供者@EnableEurekaServer@EnableEurekaClient

3.4 启动效果

目前我们有了两个工程,启动的时候是有顺序的。首先启动注册中心然后再启动服务提供者。这就好比我们先要有房子了,才可以入住一样。

对比上图我们可以发现网页多出来一个服务提供者。说明服务提供者项目搭建完成。

四、消费者(服务消费者)

4.1 pom 文件

有个服务提供者,那么是不是应该有服务消费者呢?此时我们需要新建另外一个工程作为服务消费者。那么问题来了,作为服务消费者,我们怎样去调用服务提供者呢?此时,肯定是不能像以前直接在 controller 层调用 service 层一样了,因为服务消费者和服务提供者是两个工程了,并且分别运行在两个 tomcat 里面。这里我们就需要进行网络调用了。在 Spring Cloud 里面我们可以使用 Feign 进行不同服务的调用。

org.springframework.boot    spring-boot-starter-weborg.springframework.boot    spring-boot-starter-test    testorg.springframework.cloud    spring-cloud-starter-eurekaorg.springframework.cloud    spring-cloud-starter-feign

4.2 yml 文件

接下来我们需要配置 yml 文件。

server:  port: 80eureka:  client:    register-with-eureka: false  # 不向注册中心注册了    service-url:      defaultZone: http://localhost:7001/eureka

因为工程是作为服务消费者存在的。所以我们不需要往注册中心注册服务。这样注册中心就只管理好服务提供者即可。

4.3 启动类以及 feign类 接口

@FeignClient(value = "microservicloud-dept") // 服务提供者的名字public interface IFeignService {    @GetMapping("/provide")    String feign();}@SpringBootApplication@RestController@EnableEurekaClient@EnableFeignClients(basePackages = {"com.example"})public class AppApplication80 {    public static void main( String[] args ) {        SpringApplication.run(AppApplication80.class, args);    }    @Autowired    private IFeignService feignService;    @GetMapping("/controller/feign")    public String feign(){        return feignService.feign();    }}

五、总结

至此我们就完成了一个简单的 Spring Cloud 的微服务架构多模块项目。根据项目搭建,我们可以简单画出架构图。具体源码已经在开头引用给出,可以直接克隆运行。

springcloud实战演练pdf_基于 Spring Cloud 的微服务架构实践指南(上)相关推荐

  1. 即插即用!开源项目【云框架】发布“基于Spring cloud的微服务架构”

    开发者面对新技术无非两个场景,一是不懂技术想要学习,二是懂技术想要使用. 前者需要考虑如何快速掌握技术原理并能把技术用起来,而后者需要琢磨如何花费最小代价将技术应用于生产环境. 换句话说,想要获得新技 ...

  2. 基于Spring Cloud的微服务架构

    关于基于Spring Cloud的微服务应用架构,网上已经有很多文章了,但我还是觉得把自己的架构过程和经验写下来,对自己来说算是知识和技术的梳理,对于误打误撞进来看到这篇文章的读者来说,或许也能起到一 ...

  3. 2022最新基于 Spring Cloud 的微服务架构分析,java 技术经理岗位职责

    构建在开发团队之外的 API 网关必须具备负载均衡能力,可以配置多个 IP 地址.通过该 API 网关也最好具备和 Docker 容器扩展后的服务自动注册和地址加入扩展能力. Eureka 的竞品分析 ...

  4. 基于 Spring Cloud 的微服务架构分析

    -     前言    - Spring Cloud是一个相对比较新的微服务框架,2016年才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, ...

  5. 基于Spring Cloud的微服务架构分析

    点击关注公众号,实用技术文章及时了解 来源:blog.caogo.cn/2021/06/20/ 基于Spring-Cloud的微服务架构分析 Spring Cloud是一个相对比较新的微服务框架,20 ...

  6. 基于Spring Cloud的微服务架构脚手架实践

    文章目录 1 前言 2 脚手架主要提供哪些功能 3 如何使用该脚手架 3.1 项目统一依赖管理 3.2 集成基础模块功能到自己的项目中 4 基础核心功能模块的使用 4.1 集成缓存管理模块 4.1.1 ...

  7. 干货|基于 Spring Cloud 的微服务落地

    转载自 干货|基于 Spring Cloud 的微服务落地 微服务架构模式的核心在于如何识别服务的边界,设计出合理的微服务.但如果要将微服务架构运用到生产项目上,并且能够发挥该架构模式的重要作用,则需 ...

  8. 搭建基于Spring Cloud的微服务应用

    原文链接 在2017云栖大会-上海峰会上阿里云技术专家李斌做了题为<搭建基于spring Cloud的微服务应用>的分享.随着时代的发展,用户对于应用服务的要求越来越高,单体应用已经无法满 ...

  9. 基于Spring Cloud实现微服务前后端系统

    基于Spring Cloud实现微服务前后端系统 1.使用的技术栈 2.项目架构图 3.系统各模块介绍 4.占用的端口 5.如何运行该系统? 6.系统特性 7.系统体验 8.系统截图 (架构升级)新版 ...

最新文章

  1. lpk.dll是什么
  2. 浅析当下专业网站优化公司所具有的特性
  3. python格式化输出的三种形式
  4. [ECMAScript] 说说你对Babel的了解?
  5. AttributeError: type object ‘Image‘ has no attribute ‘open‘
  6. 采用python解决实际问题_应用 Python 解决一些实际问题
  7. leetcode 算法 Excel表列序号 python实现
  8. linux监控程序-程序自动重启方法(转)
  9. android 快速开发,GitHub - limedroid/XDroid: 轻量级Android快速开发框架
  10. USB_PD_R3_0 V1.1 PD协议 协议层 中文翻译
  11. Advanced Algorithm 听课笔记(Useful Inequalities Balls and Bins)
  12. 虚拟机安装CentOS6.5报错:Hardware Unsupported detected问题的解决
  13. 1072 开学寄语 (20分)
  14. Java 对文件进行重命名操作(rename)
  15. BoardCast BroadcastReceiver 基础
  16. 齐次坐标 (Homogeneous Coordinate)
  17. 基于LC push的浏览器桌面提醒快速集成方案
  18. 支付宝支付和微信支付
  19. C99中带声明的for语句
  20. 乌鲁木齐2021高考成绩查询时间,2021新疆高考成绩公布时间

热门文章

  1. Docker教程(一):docker安装及运行原理
  2. OriginPro绘图过程中遇到的问题及解决办法
  3. Golang-RSA加密解密-数据无大小限制(gophp)
  4. 战地4网页怎么换服务器地址,战地4设置服务器地址
  5. 地震信号-相关子波零相位化
  6. sap BusinessObject Enterprise XI 4.0 安装载图
  7. 算法导论学习笔记1_循环不变式
  8. Arista 交换机升级手册
  9. SwitchyOmega插件安装
  10. R语言操作pdf文档