java微服务之springcloud快速入门day01eureka注册中心快速入门(代码片段)

蓝盒子bluebox 蓝盒子bluebox     2022-12-11     267

关键词:

一、Eureka注册中心简介

1、认识Eureka

首先我们来解决第一问题,服务的管理。

问题分析

在刚才的案例中,user-service对外提供服务,需要对外暴露自己的地址。而consumer(调用者)需要记录服务提供者的地址。
将来地址出现变更,还需要及时更新。这在服务较少的时候并不觉得有什么,但是在现在日益复杂的互联网环境,一个项目肯定会拆分出十几,甚至数十个微服务。
此时如果还人为管理地址,不仅开发困难,将来测试、发布上线都会非常麻烦,这与DevOps的思想是背道而驰的。

网约车

这就好比是网约车出现以前,人们出门叫车只能叫出租车。一些私家车想做出租却没有资格,被称为黑车。而很多人想要约车,但是无奈出租车太少,不方便。私家车很多却不敢拦,而且满大街的车,谁知道哪个才是愿意载人的。一个想要,一个愿意给,就是缺少引子,缺乏管理啊。
此时滴滴这样的网约车平台出现了,所有想载客的私家车全部到滴滴注册,记录你的车型(服务类型),身份信息(联系方式)。这样提供服务的私家车,在滴滴那里都能找到,一目了然。
此时要叫车的人,只需要打开APP,输入你的目的地,选择车型(服务类型),滴滴自动安排一个符合需求的车到你面前,为你服务,完美!

Eureka做什么?

Eureka就好比是滴滴,负责管理、记录服务提供者的信息。服务调用者无需自己寻找服务,而是把自己的需求告诉Eureka,然后Eureka会把符合你需求的服务告诉你。
同时,服务提供方与Eureka之间通过“心跳”机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除。
这就实现了服务的自动注册、发现、状态监控。

2、原理图

基本架构

Eureka:就是服务注册中心(可以是一个集群),

对外暴露自己的地址提供者:启动后向Eureka注册自己信息(地址,提供什么服务)

消费者:
向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,

并且定期更新心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态

二、Eureka入门案例:编写Eureka相关代码

1、编写EurekaServer

接下来我们创建一个项目,启动一个EurekaServer



   <dependencies>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>

    </dependencies>

2、编写启动器


package com.itzheng;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class EurekaServer 

    public static void main(String[] args) 
        SpringApplication.run(EurekaServer.class);
    



3、完善配置文件:在resources:application.yml

server:
  port: 10086

4、完善EurekaServer

@EnableEurekaServer

5、启动EurekaServer

6、点击访问EurekaServer:http://localhost:10086/



发现控制台报错

7、需要设置服务地址:后会自动注册

server:
  port: 10086
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

重新运行

运行没有异常

访问:http://localhost:10086/
发现服务没有名称

8、设置访问名称:完善application.yml

server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

重新运行项目

http://localhost:10086/

三、user-service使用Eureka :服务的提供方

1、在user-service当中的pom.xml当中引入Eureka

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.0.1.RELEASE</version>
</dependency>

2、完善UserApplication,设置注册中心


package com.itzheng;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import tk.mybatis.spring.annotation.MapperScan;

@EnableDiscoveryClient
@SpringBootApplication
@MapperScan("com.itzheng.user.mapper")
public class UserApplication 

    public static void main(String[] args) 
        SpringApplication.run(UserApplication.class);
    



3、在user-service当中的resources配置Eureka

server:
  port: 8082
spring:
  application:
    name: user-service
  datasource:
    url: jdbc:mysql://localhost:3306/itzheng
    username: root
    password: root
mybatis:
  type-aliases-package: com.itzheng.user.pojo
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

从新运行项目

4、Eureka :http://localhost:10086/ 发现多注册一个服务

三、consumer-demo注册Eureka :服务的使用方,consumer动态拉去服务列表

1、在consumer-demo的pom.xml当中


        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.0.1.RELEASE</version>
        </dependency>

2、完善ConsumerApplication添加注解

@EnableDiscoveryClient

3、添加配置

server:
  port: 8088
spring:
  application:
    name: consumer-server
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

4、完善ConsumerController,根据服务id获取实例以及IP和端口并访问

package com.itzheng.consumer.web;

import com.itzheng.consumer.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.List;

@RestController
@RequestMapping("consumer")
public class ConsumerController 

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private DiscoveryClient discoveryClient;

    @GetMapping("/id")
    public User queryById(@PathVariable("id") Long id )
        //根据服务id获取实例
        List<ServiceInstance> instances = discoveryClient.getInstances("user-service");

        //从实例当中取出IP和端口
        ServiceInstance instance = instances.get(0);

        String url = "http://"+ instance.getHost()+":"+instance.getPort()+"/user/"+id;
        User user = restTemplate.getForObject(url,User.class);
        return user;
    



完善application.yml当中的ip访问地址

5、从新运行项目


访问http://localhost:10086/

访问:http://localhost:8088/consumer/8

java微服务之springcloud快速入门day01初始springcloud(代码片段)

一、SpringCloud的简介微服务是一种架构方式,最终肯定需要技术架构去实施。微服务的实现方式很多,但是最火的莫过于SpringCloud了。为什么?后台硬:作为Spring家族的一员,有整个Spring全家桶靠山,背景十分强大。... 查看详情

java微服务之springcloud快速入门day01eureka注册中心快速入门(代码片段)

一、Eureka注册中心简介1、认识Eureka首先我们来解决第一问题,服务的管理。问题分析在刚才的案例中,user-service对外提供服务,需要对外暴露自己的地址。而consumer(调用者)需要记录服务提供者的地址。将来地址出现... 查看详情

java微服务之springcloud快速入门day02zuul网关,面向服务的路由,zuul过滤器(代码片段)

Java微服务之SpringCloud快速入门day02(三)Zuul网关一、简介1、相关概念官网:https://github.com/Netflix/zuulZuul:维基百科:电影《捉鬼敢死队》中的怪兽,Zuul,在纽约引发了巨大强乱。事实上,在微服务架构中࿰... 查看详情

java微服务之springcloud快速入门day02zuul网关,面向服务的路由,zuul过滤器(代码片段)

Java微服务之SpringCloud快速入门day02(三)Zuul网关一、简介1、相关概念官网:https://github.com/Netflix/zuulZuul:维基百科:电影《捉鬼敢死队》中的怪兽,Zuul,在纽约引发了巨大强乱。事实上,在微服务架构中࿰... 查看详情

java微服务之springcloud快速入门day02hystrix线程隔离,服务降级(代码片段)

Hystrix1、简介Hystrix,英文意思是豪猪,全身都是刺,看起来就不好惹,是一种保护机制。Hystrix也是Netflix公司的一款组件。主页:https://github.com/Netflix/Hystrix那么Hystrix的作用是什么呢?具体要保护什么呢ÿ... 查看详情

java微服务之springcloud快速入门day02hystrix线程隔离,服务降级(代码片段)

Hystrix1、简介Hystrix,英文意思是豪猪,全身都是刺,看起来就不好惹,是一种保护机制。Hystrix也是Netflix公司的一款组件。主页:https://github.com/Netflix/Hystrix那么Hystrix的作用是什么呢?具体要保护什么呢ÿ... 查看详情

java微服务之springcloud快速入门day01系统架构的演变,服务调用方式(代码片段)

一、系统架构的演变1、集中式架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是影响项目开发的关键。存在的问题&... 查看详情

java微服务之springcloud快速入门day01eureka注册中心高级部分(集群)(高可用)(代码片段)

接下来我们详细讲解Eureka的原理及配置。1、基础框架Eureka架构中的三个核心角色:服务注册中心Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-server服务提供者提供服务的应用,可以是SpringBoo... 查看详情

java微服务之springcloud快速入门day01eureka注册中心高级部分(集群)(高可用)(代码片段)

接下来我们详细讲解Eureka的原理及配置。1、基础框架Eureka架构中的三个核心角色:服务注册中心Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-server服务提供者提供服务的应用,可以是SpringBoo... 查看详情

springcloud微服务开发快速入门(代码片段)

...变6.微服务开发框架7.微服务需要学习什么?小结二、SpringCloud1.SpringCloud介绍2.SpringBoot与SpringCloud的区别3.服务拆分和远程调用实现远程调用案例案例需求注册RestTemplate实现远程 查看详情

springcloud微服务开发快速入门(代码片段)

...变6.微服务开发框架7.微服务需要学习什么?小结二、SpringCloud1.SpringCloud介绍2.SpringBoot与SpringCloud的区别3.服务拆分和远程调用实现远程调用案例案例需求注册RestTemplate实现远程 查看详情

java之springcloud微服务搭建(第一个阶段)springboot项目实现商品服务器端是调用(代码片段)

Java之SpringCloud微服务入门到精通Spring微服务快速入门(Eureka)一、Springcloud微服务概述1、微服务中的相关概念(1)服务注册与发现(2)负载均衡(3)熔断(4)链路追踪(5)API网关2... 查看详情

springcloud系列教程汇总整理手册

...系列之集成Dubbo的方式    >>sourcedownload2、微服务之SpringCloud2.1服务治理实现SpringCloud系列使用NetflixEureka进行服务治理2.2声明式服务调用SpringCloud系列之声明式服务调用NetflixFeign2.3客户端负载均衡SpringCloud系列之客户端负载均... 查看详情

springcloud微服务快速教程之gateway服务网关

...,是异步非阻塞网关,ZUUL2也是异步非阻塞的,但未纳入springcloud整合计划  基于WebFlux ,与spring-boot-starter-web冲突,要排除该依赖;ZUUL1是阻塞io的APIGateway;  性能上,自然是异步非阻塞的gateway胜出,不过实际项目中,... 查看详情

springcloud之zuul网关入门

SpringCloud实现微服务的架构基本成型:  使用SpringCloudNetflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载。  为了使得服务集群更为健壮,使用Hystrix的融断机制来... 查看详情

springcloud实战微服务之——微服务简介以及入门使用(代码片段)

微服务概述微服务是什么?微服务解决了什么问题?微服务有什么特点?单体架构是什么?一个归档包包含了应用所有功能的应用程序,我们通常称之为单体应用。架构单体应用的架构风格,我们称之为单... 查看详情

springcloud从入门到进阶——使用springboot搭建微服务

内容  SpringBoot整合SpringCloud的Eureka、Zuul等组件,快速实现简单易懂且具有服务熔断、负载均衡的分布式架构1.0,体验微服务的魅力。版本  IDE:IDEA2017.2.2x64  JDK:1.8.0_171  manve:3.3.3  SpringBoot:1.5.9.RELEASE  SpringCloud... 查看详情

springcloud微服务之跨服务调用后端接口

SpringCloud微服务系列博客:SpringCloud微服务之快速搭建EurekaServer:https://blog.csdn.net/egg1996911/article/details/78787540SpringCloud微服务之注册服务至EurekaServer:https://blog.csdn.net/egg1996911/article/details/78859200Sp 查看详情