使用idea搭建SpringCloud项目(及所遇到的坑)

Spring Cloud简介

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

东西虽好,坑也不少

  • Spring cloud特别要注意版本和spring boot版本的兼容性 及其版本中的jar是否缺少,感觉有些版本好多坑。
    大版本对应关系
    在这里插入图片描述
    在这里插入图片描述
    不同版本搭建体验千差万别。最好不要使用最新版本。

SNAPSHOT: 快照版本,随时可能修改

M: MileStone,M1表示第1个里程碑版本,一般同时标注PRE,表示预览版版。

SR: Service Release,SR1表示第1个正式版本,一般同时标注GA:(GenerallyAvailable),表示稳定版本。

如:2.0.8.RELEASE Finchley.SR2 没有办法导入Feign包,无法使用Feign注解

  • 命名规范 最好针对模块命名 不要使用一些框架内的可能的类名 如client
亲测通过的版本1.5.10.RELEASE Edgware.SR3

开始搭建项目

创建一个maven项目
在这里插入图片描述

创建Eureka Server

Spring Cloud使用erureka server, 然后所有需要访问配置文件的应用都作为一个erureka client注册上去。eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳,在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。
创建一个springboot模块
在这里插入图片描述
选择erureka server
在这里插入图片描述
修改版本号
在这里插入图片描述
添加@EnableEurekaServer注解

@SpringBootApplication
@EnableEurekaServer
public class ServerApplication {

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

}

编写配置文件application.yml

server:
   port: 8771
eureka:
# server:
#    enable-self-preservation: true #关闭其自我保护(开发环境可以操作,方便)
  client:
     registerWithEureka: false #其本身作为注册中心,所有设置为:不显示在注册中心
     fetchRegistry: false
     serviceUrl:
         #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
         defaultZone: http://localhost:8771/eureka/

erureka server注册中心就写完了
运行结果:
在这里插入图片描述
只有注册中心,没有服务

创建Eureka Client

步骤同上创建springboot模块
添加@EnableEurekaClient注解(或@EnableDiscoveryClient)


@SpringBootApplication
@EnableEurekaClient
public class ClientOneApplication {

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

}

编写配置文件application.yml

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8771/eureka/
    fetch-registry: false
#  instance:
#    hostname: one url别名
server:
  port: 8773
spring:
  application:
    name: one #serviceid

运行后,注册中心
在这里插入图片描述
注册中心与服务一般是一对多,但防止注册中心挂掉,可以在运行一个,两个互相注册

server:
   port: 8771
eureka:
  client:
     fetchRegistry: false
     serviceUrl:
         #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
         defaultZone: http://localhost:8772/eureka/

服务分别向两个注册中心注册

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8771/eureka/,http://localhost:8772/eureka/

有了注册中心与多个服务实现我们的项目是不够的,服务之间需要数据传递。

处理Eureka因为缓存机制默认配置下时效性很糟糕问题

Eureka Server存在三个变量:(registry、readWriteCacheMap、readOnlyCacheMap)保存服务注册信息,默认情况下定时任务每30s将readWriteCacheMap同步至readOnlyCacheMap,每60s清理超过90s未续约的节点,Eureka Client每30s从readOnlyCacheMap更新服务注册信息,而UI则从registry更新服务注册信息。

  • eureka.instance.leaseRenewalIntervalInSeconds 30 Eureka Client
    续约周期,默认30s
  • eureka.client.registryFetchIntervalSeconds 30 Eureka Client
    增量更新周期,默认30s(正常情况下增量更新,超时或与Server端不一致等情况则全量更新)
  • ribbon.ServerListRefreshInterval 30000 Ribbon 更新周期,默认30s
1.缩短readOnlyCacheMap更新周期。缩短该定时任务周期可减少滞后时间。

eureka.server.responsecCacheUpdateIntervalMs: 10000  # Eureka Server readOnlyCacheMap更新周期
 

2.关闭readOnlyCacheMap。中小型系统可以考虑该方案,Eureka Client直接从readWriteCacheMap更新服务注册信息。

eureka.server.useReadOnlyResponseCache: false        # 是否使用readOnlyCacheMap
服务消费者缩短更新周期。Eureka Client和Ribbon二级缓存影响状态更新,缩短这两个定时任务周期可减少滞后时间,例如配置:

eureka.client.registryFetchIntervalSeconds: 5        # Eureka Client更新周期
ribbon.ServerListRefreshInterval: 2000               # Ribbon更新周期
### 回答1: 在 IDEA搭建 Spring Cloud 项目可以使用 Spring Initializer 插件来辅助创建。首先需要安装插件,然后在 IDEA 中选择 "New" -> "Project",在弹出的对话框中选择 "Spring Initializer",然后根据需要选择项目的基本信息和依赖。最后点击 "Finish" 即可创建 Spring Cloud 项目。 ### 回答2: 随着微服务架构的普及,Spring Cloud成为了目前比较热门的技术框架,随之而来的是快速搭建一个基于Spring Cloud的微服务项目,本文将介绍如何用Idea搭建Spring Cloud项目。 首先,我们需要准备一些开发工具。在开始编写代码之前,我们需要安装配置一下环境,包括安装JDK、Maven和Idea。在这里,我们选用的是JDK1.8、Maven3和Idea2018。 安装好开发工具后,我们可以开始新建一个Spring Cloud项目。首先在Idea中创建一个新项目,选择Spring Initializr模板。 在第一步中,填写项目基本信息,包括名字、类型、组织、包名、Java版本等信息。这里选择的是Maven项目使用了JDK1.8,使用了Spring Boot版本是2.1.2。 在第二步中,选择要使用的依赖。这里面碰到了Spring Cloud的众多组件,你需要根据自己的需要选择相应的组件。这里主要用到的组件是Eureka和Feign。 在第三步中,设置项目存储的路径和相关信息。 在第四步中,Maven下载一些必要的依赖和插件,如果网络状况良好,这个步骤应该不出现问题。创建好的项目包含了一些必要的配置文件,比如pom.xml、application.properties/application.yml、Application.java等等。 接下来,我们需要配置Spring Cloud的相关功能。在pom.xml文件中添加Spring Cloud的依赖: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> ``` 在application.yml文件中添加相关配置: ``` server: port: 8080 eureka: server: enable-self-preservation: false eviction-interval-timer-in-ms: 4000 instance: lease-renewal-interval-in-seconds: 10 lease-expiration-duration-in-seconds: 30 client: service-url: defaultZone: http://localhost:8080/eureka/ register-with-eureka: true fetch-registry: true feign: hystrix: enabled: true ``` 然后我们可以开始编写自己的业务逻辑。在这里,我们主要讲解一下如何使用Feign进行微服务之间的调用。 在项目中定义一个接口(如UserService): ``` @FeignClient(value = "user-service") public interface UserService { @GetMapping("/user/{id}") User findUserById(@PathVariable(value = "id") int id); } ``` 在调用的地方使用: ``` @Autowired private UserService userService; public User getUser(int id) { return userService.findUserById(id); } ``` 至此,一个Spring Cloud项目搭建完成了。总结一下,我们需要做以下几件事情: 1. 安装开发工具,包括JDK、Maven、Idea。 2. 新建项目,选择Spring Cloud的模板,按照向导填写相应的信息。 3. 配置Spring Cloud的依赖和相关配置。 4. 编写业务逻辑。 当然,这还只是最基础的搭建。在实际的开发中,我们还需要深入了解Spring Cloud的其他组件以及相关的技术原理。 ### 回答3: 随着互联网的快速发展,企业需要不断地迭代和创新才能在激烈的市场竞争中生存下去。为了更好的应对这些挑战,许多企业选择使用基于微服务架构的Spring Cloud搭建项目。 本文将向您介绍如何使用Idea搭建Spring Cloud项目。 首先,为了能够使用Idea搭建Spring Cloud项目,您需要先了解什么是Spring Cloud以及微服务架构。Spring Cloud是一个为微服务架构提供快速开发工具箱的开源项目,它提供了一整套分布式系统解决方案,包括服务注册与发现、配置管理、断路器、智能路由、微代理、分布式消息传递等。微服务架构是一种分布式架构模式,其中的应用程序由多个小型独立的服务组成,这些服务通过API相互通信并协同工作,每个服务都专注于执行单一任务,从而实现系统的高可用、高扩展性和高性能。 接下来,我们开始使用Idea搭建Spring Cloud项目。在使用Idea之前,您需要先下载安装该软件,并配置好Java开发环境和Maven环境。接着,按照以下步骤操作: 1. 创建一个新的Maven项目。 2. 在pom.xml文件中添加Spring Cloud依赖项,例如Spring Boot Starter、Eureka Server、Zuul等。如果您使用的是Spring Cloud Dalston版本,可以在GitHub上找到相应的依赖项。 3. 在src/main/java目录下创建Spring Boot应用程序入口文件。您可以使用注释@SpringBootApplication标记单个类文件或使用@Configuration、@EnableAutoConfiguration和@ComponentScan标记所需类。 4. 创建需要的微服务组件文件,例如Eureka Server、Zuul网关、Feign客户端等。 5. 运行项目并测试微服务架构。启动Eureka Server并注册微服务,然后使用Zuul网关进行负载均衡和路由。 以上就是使用Idea搭建Spring Cloud项目的基本步骤。当然,具体实现还需要根据实际情况进行调整和修改。同时,我们还需要注意遵循微服务架构的设计原则,确保每个组件都专注于执行单一任务,从而实现系统的可靠性和可维护性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值