1、连载内容说明
本专栏重点介绍springcloud项目应用,微服务搭建,微服务之间的模块通信方式,springcloud分布式搭建,springcloud中统一配置中心使用方式,springcloud中使用RabbitMQ消息中间件,springcloud中zuul网关的使用,springcloud中搭建高可用,springcloud中实现限流、鉴权、校验、跨域操作等,springcloud中服务降级、服务熔断等技术...
持续更新中……
2、理解什么是微服务
2.1、理解单体架构应用
比如单体应用采用mvc模型,使用SSM框架整合等技术,将项目的所有模块和前端放在一个项目中。这种架构模块之前的依赖比较简单,直接调用即可。运行的时候项目会被打包成war包,测试容易,不熟容易。但是这种架构有一些不足之处。
不足之处1:部署不灵活,项目构建时间长,任何代码的变动,都需要重新部署,且所有内容都放在项目中,不利于优化。
不足之处2:稳定性不高—一个小问题,会让整个项目挂掉。
不足之处3:扩展性不够—无法满足高并发下的需求,如商品展示的流量大,订单流量的小,可以根据服务器不同。
不足之处4:不利于代码的复用性,如果多个系统中都使用了到订单系统,我们需要在每个项目中都创建订单系统。
2.2、理解什么是微服务架构
微服务的本质就是将原先单体服务拆分成多个独立的模块,部署在不同的服务器中,这些每个独立的小模块称之为微服务。如上图将订单服务、商品产品、短信服务部署在不同的服务器中。为了解决服务分开之后个模块之间的交互,所以Springcloud中需要创建Eureka Server工程,专门用来记录各个微服务之间的信息如ip,服务名称,端口等信息。
最终用户通过访问网关(这个网关可以使用,也可以选择不使用),访问各个微服务,各个微服务之间也可以技术EurekaServer+RestTemplate或者Feign实现模块之间的通信。
各模块之间如何实现通信,可以参照我其他的博客文章。
微服务的好处:
1、易于开发和降低开发难度
由于将项目拆分成了一个个独立的小模块,开发者只需要关注自己团队开发模块的逻辑即可。
2、技术栈不受限制
不同的单体模块之间,可以根据实际情况不同,选择不同的语言开发
3、扩展容易
在原有的微服务基础上扩展一个新的服务,极其容易,对其他模块的影响小
4、模块的复用性强
一个模块开发之后,可以给不同的项目使用,复用性强。
5、部署容易和修改容易
修改之后只需要重新部署修改的微服务即可。
3、案例说明
本案例中需要创建三个工程:
eurekaServer:主要作为服务注册中心,被注解@EnableEurekaServer修饰
orderClient:订单服务模块(微服务),主要写订单操作相关业务
goodsClient: 商品服务模块(微服务),主要写订单操作相关业务
4、创建Eureka Server注册中心-eurekaServer
4.1、通过idea创建Eureka Server工程
环境信息:JDK1.8+springboot2.7.10+Eureka Server
【创建工程并选择JDK1.8版本】
【选择springboot版本及Eureka Server依赖】
4.2、创建工程之后,项目结构如下
4.3、在application.properties中创建服务端配置信息
# 设置Eureka Server WEB控制台端口,自定义
server.port=8761
# 设置服务注册中心地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
#是否将自己注册到Eureka-Server中,默认的为true
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
# 设置当前应用的名称
spring.application.name=eurekaServer
4.4、在启动类上添加Eureka Server注解
@EnableEurekaServer表示当前的项目是Eureka Server服务注册中心
服务注册中心本质也是springboot工程
4.5、启动当前的工程
4.6、启动之后访问Eureka Server提供的数据统计页面
请求地址:http://loalhost:8761/ 访问到如下地址表示Eureka Server搭建成功
该页面的常见参数配置如下:
total-avail-memory:总可用内存
num-of-cpus:cpu数量
current-memory-usage:当前内存使用量
server-uptime:服务器正常运行时间
registerd-replicas:注册副本
available-replicas:可用副本
5、创建Eureka Client服务-orderClient工程
Eureka Client本质就是一个个项目的微服务模块,如订单服务模块。
案例中创建的项目名称为:orderClient,表示订单服务模块。
5.1、使用IDEA创建工程
【选择JDK版本及创建项目名称】
【选择springweb依赖,即springmvc应用】
【选择Eureka Client依赖】
5.2、在项目的启动类中加入注解
@EnableDiscoveryClient:表示该工程是一个Eureka Client微服务
@SpringBootApplication
@EnableDiscoveryClient
public class OrderClientApplication {
public static void main(String[] args) {
SpringApplication.run(OrderClientApplication.class, args);
}
}
5.3、在application配置文件中加入配置信息
#配置服务名称
spring.application.name=orderClient
#设置注册中心地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
#设置当前工程的端口号
server.port=8080
5.4、启动OrderClient工程
5.5、启动之后通过在Eureka Server观察微服务信息
通过地址http://localhost:8761/访问注册中心,能够看到此时ORDERCLIENT微服务已经被注册进服务器中。
6、创建Eureka Client服务--goodsClient工程
6.1、使用IDEA创建工程
【选择JDK版本及创建项目名称】
【选择springweb依赖,即springmvc应用】
与上面的orderClient相同,选择springweb依赖和EurekaClient依赖
6.2、在项目的启动类中加入注解
@EnableDiscoveryClient:表示该工程是一个Eureka Client微服务
@SpringBootApplication
@EnableDiscoveryClient
public class GoodsClientApplication {
public static void main(String[] args) {
SpringApplication.run(OrderClientApplication.class, args);
}
}
6.3、在application配置文件中加入配置信息
注意点:orderClient工程已经使用了8080端口,此处使用8081端口
#配置服务名称
spring.application.name=goodsClient
#设置注册中心地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
#设置当前工程的端口号
server.port=8081
6.4、启动goodsClient工程
6.5、启动之后通过在Eureka Server观察微服务信息
通过地址http://localhost:8761/访问注册中心,能够看到此时ORDERCLIENT和GOODSCLIENT微服务已经被注册进服务器中。