营销型网站建立费用/网站百度关键词seo排名优化
最近学习完springcloud理论知识之后,发现不将各个小组件进行实操,运用到项目中,那么就只知道各个小组件是干嘛的,掌握程度并没有那么好,本次就来整合一下 nacos 与 gateway 。
什么是nacos?
nacos 是一个易于构建原生应用的动态服务发现,配置管理和服务管理平台,说白了就是注册中心 + 配置中心的组合
什么是 gateWay
GateWay 它旨在为微服务架构提供一个简单有效的统一的 API 路由管理方式。
在我们写微服务的项目时,首先需要将各个服务注册到 nacos 中
一、整合nacos
1.1 在服务器上配置 nacos
1)使用 docker 命令拉取 nacos 镜像
docker pull nacos
2)拉取镜像之后执行下面命令
mkdir -p /data/docker/logs/nacos
mkdir -p /data/docker/nacos/init.d
mkdir -p data/docker/nacos/data
cd /data/docker/nacos/init.d
3)编写配置文件,连接到数据库
server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://xx.xx.xx.xxx:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=xxxxxnacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
nacos.naming.distro.taskDispatchThreadCount=1
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.naming.expireInstance=true
4)启动 nacos 命令
docker run \
--name nacos -d \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=xx.xx.xx.xx\
-e MYSQL_SERVICE_DB_NAME=nacos_dec\
-e MYSQL_SERVICE_PORT=3306\
-e MYSQL_SERVICE_USER=root\
-e MYSQL_SERVICE_PASSWORD=rxxxxx\
-v /data/docker/logs/nacos:/home/nacos/logs \
-v /data/docker/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
-v /data/docker/nacos/data:/home/nacos/data \
nacos/nacos-server
执行完以上步骤之后访问我们的nacos
如果看到这样的一个页面说明我们配置成功,登陆:默认账号:nacos,默认密码:nacos
1.2 项目整合
假设项目有 5 个小服务
- fuwu-admins
- fuwu-category
- fuwu-gateway
- fuwu-user
- fuwu-videos
1)在服务的 pom 文件中引入 nacos client
<!--nacos client-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2)编写每个服务的 yml 配置文件
server:port: 898x
spring:application:name: API-NAMEcloud:nacos:server-addr: xx.xx.xx.xx:8848
3)编写一个主启动类
@SpringBootApplication
@EnableDiscoveryClient // 服务发现客户端
public class AdminAdminsApplication {public static void main(String[] args) {SpringApplication.run(AdminAdminsApplication.class, args);}
}
启动项目之后,我们就会在 nacos 服务中看到有服务注册成功,如下图所示
到此,nacos 整合完成
二、整合 GateWay
1)在 pom 文件中引入对应依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
2)编写 yml 配置文件
server:port: 9999spring:application:name: API-GATEWAYcloud:nacos:server-addr: xx.xx.xx.xxx:8848gateway:routes: # 用来配置路由规则# admin router- id: admin_routeruri: lb://API-ADMINpredicates:- Path=/admin/demos,/admin/admin-user,/admin/tokens,/admin/token/**filters:- StripPrefix=1 # 去掉前缀 filter int数字 1:去掉一级, 2:去掉2级# category router- id: category_routeruri: lb://API-CATEGORYSpredicates:- Path=/category/demosfilters:- StripPrefix=1 # 去掉前缀 filter int数字 1:去掉一级, 2:去掉2级# videos router- id: videos_routeruri: lb://API-VIDEOSpredicates:- Path=/videos/demosfilters:- StripPrefix=1 # 去掉前缀 filter int数字 1:去掉一级, 2:去掉2级# users router- id: users_routeruri: lb://API-USERSpredicates:- Path=/users/demosfilters:- StripPrefix=1 # 去掉前缀 filter int数字 1:去掉一级, 2:去掉2级globalcors:cors-configurations:'[/**]':allowedOrigins: "*"allowedMethods: "*"allowedHeaders: "*"# 客户访问请求是先进行断言判断:如果匹配上了在进行 filter 过滤
# StripPrefix 表示去掉路由前缀,用整数表示 1:表示去掉一级,如果是 /user/demo,则真正转发跳转的路径是/demo
由于我们上面写了4个服务,那么4个服务各自有各自对应的端口,GateWay 就是自己定义一个端口,统一配置4个服务进行响应的跳转,通过断言和过滤机制,可以达到正确访问响应的服务接口
到目前位置,nacos 和 GateWay 都已经全部整合完成