B082-SpringCloud-Eureka

目录

springcloud基于springboot

微服务架构与springcloud

架构演变

1.一个单体项目

缺点:大型项目文件太多体积太大,维护难,编译难,测试难,一个tomcat不够用

2.集群部署单体项目(多做几个,做的都是同样的事情)

只能解决上述第4个问题,前三个问题更复杂,如改代码要同步改整个集群

新出现问题:不是所有功能用的人都很多,不同的功能需要集群的数量不一致

3.根据功能把项目分开,把单独的模块拆成项目

可以解决不同功能需要集群数量不一致的问题和剩下的前3个问题

新出现问题:服务之间的通信,jar之间的相互依赖

4.最后用上springcloud管理微服务

为什么使用微服务

一个项目/系统中各个模块的压力

压力大的模块做集群分担压力

其他见文档2.1.1,2.1.2,2.2.1,2.2.2

微服务的通讯方式

见文档2.2.3

架构的选择

见文档2.3

微服务是一种思想,是一种架构模式

springcloud是微服务的一种落地方案

见文档2.4

springcloud主要用来解决微服务之间通信的一系列问题

springcloud概述

见文档3

场景模拟之基础架构的搭建

不同的项目不同的端口

建立一个公共项目用来存放其他项目共同用到的类,然后给其他项目依赖,如user-common中的domain,query,user等

新建maven项目D082-springcloud-parent,tips:不要用下划线

删除src

新建maven模块user-common

新建maven模块user-provider-4010

新建maven模块user-consumer-5010

user-common的pom中引入lombok,刷新依赖,建立User类

生产者和消费者两个项目的pom中各自引入user-common,刷新依赖,新建UserController,使用依赖过来的User类

模拟微服务之间的服务调用

tips:隐藏不需要关心的.idea和.iml文件

设置 - 编辑器 - 文件类型 - 忽略文件和文件夹中追加* .idea;* .iml;

父级pom引入相关依赖

生产者和消费者两个项目的pom中各自引入web和test依赖,新建application.yml,配置端口,新建启动类

改造生产者的UserController,

启动生产者项目,浏览器访问:http://localhost:4010/user/provider/1

消费者中新建config.HttpUtils,把RestTemplate交给容器管理

新建UserController,

启动生产者和消费者两个项目,浏览器访问:http://localhost:5010/user/consumer/2

目前远程调用的问题

如消费者URL中的ip目前是localhost,上线后会变化

上线后如果提供者机器挂了重开一台机器,消费者记的还是以前的provider的地址

消费者不知道提供者机器的状态,是否健康,是否挂了

提供者只有一台机器,挂了就都没了

这种模式进行提供者集群后,消费者难以实现负载均衡

负责均衡:实时知道集群中有多少机器,哪些机器可用,哪些机器不可用,不给不可用机器发请求

eureka

注册中心的作用

见文档5.1

注册中心的实现

springcloud是基于springboot的,所以选择版本要对应

新建工程eureka-server-1010

导入相关依赖

xml 复制代码
<!--springboot支持-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>

<!--Eureka服务端支持-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

新建application.yml,配置参数

yml 复制代码
server:
  port: 1010
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false #是否要注册到eureka
    fetchRegistry: false #表示是否从Eureka Server获取注册信息
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机配置

新建启动类EurekaApp

java 复制代码
@SpringBootApplication
@EnableEurekaServer
public class EurekaApp {

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

启动项目,浏览器访问:http://localhost:1010

服务提供者注册到注册中心

生产者项目引入euraka-client依赖

xml 复制代码
 	<!--eureka客户端支持 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

application.yml加入相关参数

yml 复制代码
server:
  port: 4010
spring:
  application:
    name: user-provider
eureka:
  client:
    service-url:
      defaultZone: http://localhost:1010/eureka

启动类加入euraka客户端注解

java 复制代码
@SpringBootApplication
@EnableEurekaClient //表示是eureka的客户端
public class App {

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

浏览器访问:http://localhost:1010,可看到注册进来的 USER-PROVIDER

相关推荐
想进大厂的小王5 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构
customer086 小时前
【开源免费】基于SpringBoot+Vue.JS医院管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·开源·intellij-idea
杨荧6 小时前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
想进大厂的小王9 小时前
Spring-cloud 微服务 服务注册_服务发现-Eureka
微服务·eureka·服务发现
aloha_78919 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
茶馆大橘1 天前
微服务系列五:避免雪崩问题的限流、隔离、熔断措施
java·jmeter·spring cloud·微服务·云原生·架构·sentinel
荆州克莱1 天前
[FE] React 初窥门径(四):React 组件的加载过程(render 阶段)
spring boot·spring·spring cloud·css3·技术
Genius Kim1 天前
SpringCloud Sentinel 服务治理详解
spring cloud·sentinel·php