微服务Spring Cloud 入门

什么是微服务?

微服务就是把原本臃肿的一个项目的所有模块拆分开来并做到互相没有关联,甚至可以不使用同一个数据库。   比如:项目里面有User模块和Power模块,但是User模块和Power模块并没有直接关系,仅仅只是一些数据需要交互,那么就可以吧这2个模块单独分开来,当user需要调用power的时候,power是一个服务方,但是power需要调用user的时候,user又是服务方了, 所以,他们并不在乎谁是服务方谁是调用方,他们都是2个独立的服务,这时候,微服务的概念就出来了。

微服务和分布式的区别

谈到区别,我们先简单说一下分布式是什么,所谓分布式,就是将偌大的系统划分为多个模块(这一点和微服务很像)部署到不同机器上(因为一台机器可能承受不了这么大的压力或者说一台非常好的服务器的成本可能够好几台普通的了),各个模块通过接口进行数据交互,其实 分布式也是一种微服务。 因为都是吧模块拆分开来变为独立的单元,提供接口来调用,那么 他们本质的区别在哪呢? 他们的区别主要体现在“目标”上, 何为目标,就是你这样架构项目要做到的事情。 分布式的目标是什么? 我们刚刚也看见了, 就是一台机器承受不了的,或者是成本问题 , 不得不使用多台机器来完成服务的部署, 而微服务的目标 只是让各个模块拆分开来,不会被互相影响,比如模块的升级亦或是出现BUG等等...,也可以用一句话来理解:分布式也是微服务的一种,而微服务他可以是在一台机器上。

微服务与Spring-Cloud的关系(区别)

微服务只是一种项目的架构方式,或者说是一种概念,就如同我们的MVC架构一样, 那么Spring-Cloud便是对这种技术的实现。

快速搭建Spring Cloud项目

1.创建一个新工程,选择maven,点击下一步

2.填写项目相关的信息,进到下一步

3.填写项目名和项目位置

4.该项目是作为一个Parent project存在的,src文件可以删除

添加 Eureka Server 子项目

1.在项目上右键-->new-->module-->Spring Initializr-->next

2.填写项目相关信息

3.选择Cloud Discovery

4.填写项目名和项目位置等

5.在Application类,添加@EnableEurekaServer注解

注:该注解表明标注类是一个Eureka Server

6.修改配置,切换启动端口

我是用yml  application.yml

# 服务注册中心 (单节点)
server:
  port: 8090
eureka:
  instance:
    hostname: localhost
  client:
    fetch-registry: false # 表示是否从Eureka Server获取注册信息,默认为true.因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,这里设置为false
    register-with-eureka: false # 表示是否将自己注册到Eureka Server,默认为true.由于当前应用就是Eureka Server,故而设置为false.
    service-url:
      # 设置与Eureka Server的地址,查询服务和注册服务都需要依赖这个地址.默认是http://localhost:8090/eureka/;多个地址可使用‘,‘风格.
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

7.启动项目

在浏览器中输入你设置的端口号我的是8090

localhost:8090

添加 EurekaProducer 服务生产者

1.按照同样的方式,创建一个项目,这里我们创建一个Spring Boot风格的服务,

创建时需要勾选 Spring Cloud Discover--> Eureka Discover Client 和 Spring Web 的依赖

2.在application启动类中加入注解@EnableEurekaClient,表明自己属于一个生产者。这里为了方便测试,直接使用@RestController获取返回值。

3.修改配置

server:
  port: 8081

spring:
  application:
    name: eureka-producer

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8090/eureka # 指定服务注册中心

4.启动应用,刷新Eureka控制台

可以看到服务已经注册到Eurek

创建 Eureka Consumer 服务消费者

1.通过 Spring Initializr,创建一个 Eureka Discovery Client 模块,同时要勾选加入Spring Web依赖。

2.修改原有配置,指定服务注册中心,这里还是使用yml文件。

# 服务注册中心 (单节点)
server:
  port: 8082

spring:
    application:
      name: eureka-consumer

eureka:
    client:
      service-url:
        defaultZone: http://localhost:8090/eureka # 指定服务注册中心

3.在启动类中添加@EnableDiscoveryClient表明标注类是消费者,加入restTemplate来消费相关的服务。

@SpringBootApplication
@EnableDiscoveryClient
public class EurekaConsumerApplication {

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

    @Bean
    @LoadBalanced
    RestTemplate restTemplate()
    {
        return new RestTemplate();
    }
}

4..创建controller层,消费远程服务

@RestController
public class DemoController {

    @Autowired
    RestTemplate restTemplate;

    @RequestMapping("greet")
    public String sayHello(@RequestParam String name){

        return restTemplate.getForObject("http://EUREKA-PRODUCER/index?param=" + name, String.class);
    }

}

5.配置完毕以后,启动服务消费者,刷新Eureka控制台,可以看到消费者已经注册。

5.打开浏览器输入localhost:{server.port}/path 进行服务调用,

这里我用 http://localhost:8082/greet?name=eureka ,可以看到请求正确返回,正确调用了服务提供者。

原文地址:https://www.cnblogs.com/limengcheng/p/12239152.html

时间: 2024-07-31 13:29:02

微服务Spring Cloud 入门的相关文章

消息驱动的微服务 - Spring Cloud Alibaba RocketMQ

引入MQ后的架构演进 MQ的选择 消息队列对比参照表: RocketMQ vs. ActiveMQ vs. Kafka: 参考至: 消息队列对比参照表 RocketMQ vs. ActiveMQ vs. Kafka CentOS7上搭建RocketMQ 环境要求: CentOS 7.2 64位JDK1.8+ 4G+的可用磁盘空间 1.下载RocketMQ的二进制包,我这里使用的是4.5.1版本,下载地址如下: http://rocketmq.apache.org/release_notes/re

Spring Cloud 入门教程(一): 服务注册

1.  什么是Spring Cloud? Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,链路开关,智能路由,微代理,控制总线,一次性令牌,全局锁,主节点选举, 分布式session, 集群状态).协调分布式环境中各个系统,为各类服务提供模板性配置.使用Spring Cloud, 开发人员可以搭建实现了这些样板的应用,并且在任何分布式环境下都能工作得非常好,小到笔记本电脑, 大到数据中心和云平台. Spring Cloud官网的定义比较抽象

Spring Cloud 入门教程(四): 分布式环境下自动发现配置服务

前一章, 我们的Hello world应用服务,通过配置服务器Config Server获取到了我们配置的hello信息"hello world". 但自己的配置文件中必须配置config server的URL(http://localhost:8888), 如果把config server搬到另外一个独立IP上, 那么作为一个client的hello world应用必须修改自己的bootstrap.yml中的config server的URL地址.这明显是不够方便的. 既然confi

Spring Cloud 入门教程(六): 用声明式REST客户端Feign调用远端HTTP服务

首先简单解释一下什么是声明式实现? 要做一件事, 需要知道三个要素,where, what, how.即在哪里( where)用什么办法(how)做什么(what).什么时候做(when)我们纳入how的范畴. 1)编程式实现: 每一个要素(where,what,how)都需要用具体代码实现来表示.传统的方式一般都是编程式实现,业务开发者需要关心每一处逻辑 2)声明式实现: 只需要声明在哪里(where )做什么(what),而无需关心如何实现(how).Spring的AOP就是一种声明式实现,

Spring Cloud 入门 之 Config 篇(六)

原文地址:Spring Cloud 入门 之 Config 篇(六) 博客地址:http://www.extlight.com 一.前言 随着业务的扩展,为了方便开发和维护项目,我们通常会将大项目拆分成多个小项目做成微服务,每个微服务都会有各自配置文件,管理和修改文件起来也会变得繁琐.而且,当我们需要修改正在运行的项目的配置时,通常需要重启项目后配置才能生效. 上述的问题将是本篇需要解决的问题. 二.介绍 2.1 简单介绍 Spring Cloud Config 用于为分布式系统中的基础设施和微

Spring Cloud 入门教程(五): Ribbon实现客户端的负载均衡

接上节,假如我们的Hello world服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群. 很简单,我们只需要复制Hello world服务,同时将原来的端口8762修改为8763.然后启动这两个Spring Boot应用, 就可以得到两个Hello World服务.这两个Hello world都注册到了eureka服务中心.这时候再访问http://localhost:8761, 可以看到两个hello world服务已经注册.(服务与注册参见Spr

Spring Cloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard

1. Hystrix Dashboard (断路器:hystrix 仪表盘)  Hystrix一个很重要的功能是,可以通过HystrixCommand收集相关数据指标. Hystrix Dashboard可以很高效的现实每个断路器的健康状况. 1). 在Ribbon服务g和Feign服务的Maven工程的pom.xml中都加入依赖 1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <art

Spring Cloud 入门教程(二): 配置管理

使用Config Server,您可以在所有环境中管理应用程序的外部属性.客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用.随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切.服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具.很容易添加

微服务SpringCloud+Docker入门到高级实战

第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧2.技术选型和学后水平简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度, 第二章 架构演进和分布式系统基础知识 1.传统架构演进到分布式架构简介:讲解单机应用和分布式应用架构演进基础知识 (画图)2.微服务核心基础讲解简介:讲解微服务核心知识 :网关.服务发现注册.配置中心.链路追踪.负载均衡器.熔断3.常见的微服务框架简介:讲解常用的微服务框架4.微服务下