(一)关于微服务

序言

当一个项目的代码量越来越多时,模块功能也会越来越繁杂,导致后期的维护修改异常困难。所以我们必须采用一些结构思想来解决这一开发难题。

解决方案:将大项目根据业务等细分成多个小项目

在这里插入图片描述
分成小项目的优点:

1、方便有针对性的管理和维护对应模块的业务代码

2、每个小项目业务都独立运行,即使某个小项目出现异常停机也不会影响到其他的业务

好了,我们将项目分解成多个项目了,那么项目之间如何进行接口的调用呢?

其实很简单,只需要你把所有的微服务都运行起来不就可以访问了吗?
但问题来了,这么多的微服务,微服务中还有那么多的接口,你怎么知道具体请求呢?
所以我们引入一个概念:注册中心(Eureka)

注册中心(Eureka)(说白了也是一个微服务)

在这里插入图片描述
微服务调用另一个微服务的流程如下(微服务可以是生产者也是消费者):
1、微服务将自己注册到注册中心里,而且还定时向注册中心上报心跳信息,表示自己还能提供服务,否则注册中心将该服务剔除(前提你肯定得创建了注册中心,注册中心也是一个微服务)
2、调用服务从注册中心里发现想要的服务,注册中心返回该服务的接口给调用服务
3、调用服务通过接口来调用微服务

实现注册中心的高可用(防止单台注册中心出现异常而整个系统停滞)在这里插入图片描述

那么大概的思想就是这样了,接下来我们看看用代码该如何实现这微服务的架构

如何实现?

一、创建注册中心

注册中心目录结构很简单,就一启动类、配置文件、pom.xml就可以了
在这里插入图片描述
1、引入依赖(Eureka的服务端,即注册中心)

<dependencies>
    <!-- 导入Eureka服务的依赖 内含springboot的包,所以不用引进spring-boot-web-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

2、启动类上添加 @EnableEurekaServer 表示该项目是注册中心

@EnableEurekaServer //标识此工程是EurekaServer工程(相对的是EurekaClient)
@SpringBootApplication
public class GovernCenterApplication {
    public static void main(String[] args) {
        SpringApplication.run(GovernCenterApplication.class, args);
    }
}

3、yml配置文件(通过参数的传入启用多台注册中心实现高可用)

server:
  port: ${PORT:50101} #服务端口
spring:
  application:
    name: xc‐govern‐center #指定服务名
eureka:
  client:
    registerWithEureka: true #服务注册,是否将自己注册到Eureka服务中
    fetchRegistry: true #服务发现,是否从Eureka中获取注册信息
    serviceUrl: #Eureka客户端与Eureka服务端的交互地址,高可用状态配置对方的地址,单机状态配置自己(如果不配置则默认本机8761端口)
      defaultZone: ${EUREKA_SERVER:http://eureka02:50102/eureka/} #向该IP地址的Eureka注册服务且上报心跳信息等(域名可设置,在C盘host文件修改即可)
  server:
    enable‐self‐preservation: false #是否开启自我保护模式
    eviction‐interval‐timer‐in‐ms: 60000 #服务注册表清理间隔(单位毫秒,默认是60*1000)
  instance:
    hostname: ${EUREKA_DOMAIN:eureka01}

传入配置文件的参数并启动则成功创建注册中心!

二、将微服务注册到注册中心

1、引入依赖(Eureka的客户端,即要被注册的微服务)

<!-- 导入Eureka客户端的依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2、启动类添加 @EnableDiscoveryClient表示它是一个Eureka的客户端

@SpringBootApplication
@EnableDiscoveryClient //表示它是一个Eureka的客户端

3、yml配置文件

eureka:
  client:
    registerWithEureka: true #服务注册开关
    fetchRegistry: true #服务发现开关
    serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址,多个中间用逗号分隔
      defaultZone: ${EUREKA_SERVER:http://eureka01:50101/eureka/, http://eureka02:50102/eureka/} #该微服务向eureka01注册中心注册且上报心跳,如果该注册中心down了,则向eureka02注册
  instance:
    prefer‐ip‐address: true #将自己的ip地址注册到Eureka服务中
    ip‐address: ${IP_ADDRESS:127.0.0.1} #Eureka网页中,鼠标悬浮微服务地址时显示IP信息
    instance‐id: ${spring.application.name}:${server.port} #指定实例id
    lease-renewal-interval-in-seconds: 1 #Eureka客户端发送心跳的时间间隔(单位秒,默认30秒)
    lease-expiration-duration-in-seconds: 2 #Eureka服务端在收到最后一次心跳后等待时间上限(单位秒,默认90秒),超时将剔除服务

启动则成功将该微服务注册到注册中心!

其中“eureka01”“eureka02”是修改的域名,
eureka域名在 C:\Windows\System32\drivers\etc的hosts文件修改
其实本质"eureka01"是等同localhost,只不过是改了个域名而已。
在这里插入图片描述

浏览器输入http://localhost:50101/显示注册中心的管理页面

1、DS Replicas:该注册中心的备用注册中心(这个注册中心down了,另一个注册中心顶上)
2、Instances currently registered with Eureka:注册到该注册中心的微服务实例
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值