1.Nacos安装部署
1.1 下载安装
nacos官网提供了安装部署教程,其下载链接指向github官网,选择合适版本即可。如访问受阻可直接使用以下最新稳定版压缩包:
nacos-server-2.1.0.zip(112 MB),后续我们也可能会更改为其他版本做更多测试。
公司一般会采用最新版落后几个版本的稳定版当做生产版本,避免一些新特性引发的未知问题。
1.2 启动
●window请直接进入路径:cd nacos/bin后双击startup.sh启动,或按照下述指令启动
●linux或mac进入路径:nacos/bin/,cmd控制台执行
注意:如存在端口冲突,可至路径:nacos/conf/application.properties 中修改后启动
CONFIGURATIONS
SPRING BOOT RELATED
水水水水水水水水水水水水水水*#
#水水水水水水水水水水水水水水水水
### DEFAULT WEB CONTEXT PATH:
SERVER,SERVLET.CONTEXTPATH /NACOS
INCLUDE MESSAGE FIELD
###
SERVER.ERROR.INCLUDE-MESSAGE ALWAYS
E DEFAULT WEB SERVER PORT:
### DE
SERVER,PORT-8848
注意:nacos存储路径不可有中文。如遇启动异常,
●mac可至路径:nacos/logs/start.out 查看具体错误信息
●windows可至路径:nacos/logs/nacos.log 查看具体错误信息,正常启动日志如下
2022-12-24 11:25:59,033 INFO TOMCAT INITIALIZED WITH PORT(S): 8848 (HTTP)
INFO ROOT WEBAPPLICATIONCONTEXT: INITIALIZATION COMPLETED IN 5758 MS
2022-12-24 11:25:59,586
31 INFO INITIALIZING EXECUTORSERVICE '
CE 'APPLICATIONTASKEXECUTOR'
2022-12-24 11:26:06,831 I
[STATIC/INDEX.HTML]
2022-12-24 11:26:07,053 INFO ADDING \
ING WELCOME PAGE: CLASS PATH RESOURCE
2022-12-24 11:26:08,179 INFO CREATING FILT
CING FILTER CHAIN: ANT [PATTERN-'/**'], []
2022-12-24 11:26:08,273 INFO CREATING FILTER CHAIN: ANY REQUEST, [
ORG-SPRINGTRAMEWORK.SECURITY.WEBRATIONTEXT,REQUEST-ASYNCRWEBASYNCHANGHANAGERINTEGRATILTERE7678EDSA
ORG.SPRINGFRAMEWORK.SECURITY.WEB.CONTEXT.SECURITYCONTEXTPERSISTENCEFILTERE4016CCL
ORG.SPRINGFRAMEWORK.SECURITY.WEB.HEADER.HEADERWRITERFILTERESEC46CDD.
ORG.SPRINGFRAMEWORK.SECURITY.WEB.CSRF.CSRFFILTER073A19967,
ORG.SPRINGFRAMEWORK.SECURITY.WEB.AUTHENTICATION.LOGOUT.LOQOUTFILTER045188262.
ORG:SPRINGFRAMEWORK.SECURITY.WEB.SAVEDREQUEST.REQUESTCACHEAWAREFILTERE3FFB3598.
ORG-SPRINGFRAMEWORK,SECURITY,WEB.SERVLETAPL,SECURITYCONTEXTHOLDERAWAREWAREQUESTFILTEREZ13BD3DD3D5
ORG-SPRINGFRAMEWORK.SECURITY.VEB.AUTHENTICATION.ANON.ANONYMOUSAUTHENTIONFILTERE6FCA5907.
ORG.SPRINGFRAMEWORK.SECURITY.WEB.SESSION.SESSIONMANAGEMENTFILTERE112D1C8E.
ORG.SPRINGFRAMEWORK.SECURITY.WEB.ACCESS.EXCEPTIONTRANSLATIONFILTERE6ELB9411
2022-12-24 11:26:08,554
EXECUTORSERVICE 'TASKSCHEDULER'
INFO INITIALIZING EX
2022-12-24 11:26:08,611 INFO EXPOSING 2 ENDPOINT(S) BENEATH BASE PATH '/ACTUATOR'
2022-12-24 11:26:08,861 INFO TOMCAT STARTED ON PORT(S): 8848 (HTTP) WITH (
CONTEXT
/NACOS
PATH
2022-12-24 11:26:08,868
INFO NACOS
D SUCCESSFULLY IN STAND ALONE MODE. US
E. USE EMBEDDED STORAGE
STARTED S
2022-12-24 11:26:15,662
INFO INITIALIZING SERVLET 'DISPATCHERSERVLET'
2022-12-24 11:26:15,686 I
SINFO
NFO COMPLETED INITIALIZATION IN 23 MS
1.3 访问
成功启动后访问如下地址:http://localhost:8848/nacos/#/login,默认用户名/密码:nacos/nacos
NACOS.
文档
首页
博客
NACOS企业版
配置管理
NACOS 2.2.0
PUBLIC
配置管理
默认模糊匹配
已开启默认模糊查询
已开启默认模糊查询
高级查询
导入配置
查询
创建配置
DATA ID
配置列表
查询到0条满足要求的配置.
历史版本
操作
归属应用
GROUP
监听查询
没有数据
服务管理
权限控制
命名空间
集群管理
2.整合Nacos注册中心
2.1 依赖导入
父工程新增spring-cloud-alibaba依赖
因为Spring-cloud-alibaba自身也是集成了多个组件,所以这里只需引入alibaba大管家即可
M POM.XML(CLOUD-DEMO)
SPRING-CLOUD-ALIBABA-DEPENDENCIES-2.2.6.RELEASE.POM
CC W
12/14
水
NACOS
<DEPENDENCY>
187
188
<GROUPID>COM.ALIBABA.CLOUD</GROUPID>
<ARTIFACTID>SPRING-CLOUD-CIRCUITBREAKER-SENTINEL</ARTIFACTID>
189
190
<VERSION>2.2.6.RELEASE</VERSION>
日
191
</DEPENDENCY>
白
192
<DEPENDENCY>
<GROUPID>COM.ALIBABA.CLOUD</GROUPID>
193
<ARTIFACTID>SPRING-CLOUD-STARTER-ALIBABA-SEATA</ARTIFACTID>
194
<VERSION>2.2.6.RELEASE</VERSION>
195
</DEPENDENCY>
196
<DEPENDENCY>
197
<GROUPID>COM.ALIBABA.CLOUD</GROUPID>
198
199
<ARTIFACTID>SPRING-CLOUD-STARTER-ALIBABA-HACOS-DISCOVERY</ARTIFACTID>
<VERSION>2.2.6.RELEASE</VERSION>
200
</DEPENDENCY>
201
<DEPENDENCY>
202
<GROUPID>COM.ALIBABA.CLOUD</GROUPID>
203
<ARTIFACTID>SPRING-CLOUD-STARTER-ALIBABA-NACOS-CONFIG</ARTIFACTID>
204
<VERSION>2.2.6.RELEASE</VERSION>
205
</DEPENDENCY>
206
白
207
<DEPENDENCY>
<GROUPID>COM.ALIBABA.CLOUD</GROUPID>
208
<ARTIFACTID>SPRING-CLOUD-STARTER-ALIBABA-NACOS-CONFIG-SERVER</ARTIFACTID>
209
<VERSION>2.2.6.RELEASE</VERSION>
210
</DEPENDENCY>
211
子工程去除eureka依赖
注意order-service、user-service均需删除
子工程新增spring-cloud-alibaba-nacos依赖
注意:不同于父工程,是nacos-discovery,order-service、user-service均需添加
至此,三个工程pom如下(eureka相关工程无需操作):
●父pom:
pom.xml(3 KB)
●user-service pom:
pom.xml(2 KB)
●order-service pom:
pom.xml(2 KB)
2.2 配置文件修改注册中心
子工程均去除eureka注册配置,均新增nacos配置
至此,两个业务工程application.yml如下(eureka相关工程无需操作):
●order-service:
application.yml(1 KB)
●user-service:
application.yml(1 KB)
2.3 启动工程并验证
启动应用后访问Nacos会发现服务已完成注册
NACOS.
文档
首页
社区
博客
NACOS企业版
服务列表
NACOS 2.1.0
PUBLIC
配置管理
创建服务
隐藏空服务
请输入分组名称
分组名称
请输入服务名称
服务名称
查询
服务管理
触发保护阈值
操作
实例数
服务名
集群数目
分组名称
健康实例数
服务列表
2
2
DEFAULT_GROUP
详情示例代码订阅者|删除
FALSE
ORDERSERVICE
订阅者列表
1
1
详情示例代码|订阅者|删除
DEFAULT_GROUP
FALSE
USERSERVICE
权限控制
每页显示:
10
下一页
命名空间
集群管理
如启动遇到工程仍存在Eureka依赖,可尝试重新编译整个工程,或手动删除target文件夹后再启动
SERVICES
INITIAL REGISTRY FETCH FRON BACKUP SERVERS FAILED
西三云王王用七
12-24 11:35:23:315
INF0 42669
MAIN]COM.NETFLIX.DISCOVERY.DISCOVERYCLIENT
STARTING HEARTBEAT EXECUTOR: RENEW INTERVAL IS: 30
12-24 11:35:23:317
INF0 42669
MAIN] COR
COM.NETFLIX.DISCOVERY.DISCOVERYCLIENT
)APPLICATION
C.N.DISCOVERY.INSTANCEINFOREPLICATOR
12-24 11:35:23:320
INSTANCEINFOREPLICATOR ONBENAND UPDATE ALLOWED RATE PER MIN IS4
MAIN]
INF0 42669
12-24 11:35:23:324
COM.NETFLIX.DISCOVERY.DISCOVERYCLIENT
MAINL
:DISCOVERY CLIENT INITLALIZED AT TIMESTANP 1671852923323 WITH INITIAL INSTANCES COUNT:
USERAPPLICATION
12-24 11:35:23:327
REGISTERING APPLICATION USERSERVICE WITH EUREKA WITH STATUS UP
MAIN]
INF0 42669
O.S.C.N.E.S.EUREKASERVICEREGISTRY
ORDERAPPLICATION
12-24 11:35:23:328
INF0 4
: SAW LOCAL STATUS CHANGE EVENT STATUSCHANGEEVENT [TINESTAMP:1671852925328, CURRENTSUP]
MAIN]
COM.NETFLIX.DISCOVERY.DISCOVERYCLIENT
EUREKAAPPLICATION
PREVIOUSSTARTING
USERAPPLICATION 2
12-24 11:35:23:330
INF0 42669
:DISCOVERYCLIENT.USERSERVICE/192.168.125.121:USERSERVICE:8081: REGISTERING SERVICE....
COM.NETFLIX.DISCOVERY.DISCOVERYCLIENT
[NFOREPLICATOR-0]
INF042669
12-24 11:35:23:342 1
[NFOREPTICATOR-0] C.N.D.S.T.D.REDIRECTINGEUREKAHTTPCLIENT :
ENT:: REQUEST EXECUTION ERROR. ENDPOINTEDEFAULTENDPOINT( SERVICEURLE HTTO://LAGALHOST;S781/EURBKAL
TION REFUSED(
EXCEPTION-JAVA.NET.CONNECTEXCEPTION:CONNECTION
(REFUSED)
AT COM,SUN.JERSEY,SLLENT,APACHEA,APACHANTTPCLIENTANTANDLER,NANDLECANDLECANASHENTHENTHANGLER,LAYA;187
AT COM.SUN-JERSOY-APL.CLLENT,FILTER,9ZIPCONTENTENCODINGFALTER,NANDLEGGZIPEONTENTENTENGDINAFILTER,173D
AT COM,NETFLIX.DISCOVERY.EUREKALDENTITYHEADERFILTER.NANDLE(EUREKAIDENTITVHEADEREILTER,LAVA;Z7)
AT COM.SUN.JERSEY.API.CLIENT.CLIENT.HANDLE(CLIENT.IAVA:652)
AT COM.SUN.JERSEY.API.CLLENT.WEBRESOURCE.HANDLE(LIEBRESQURSE.1AYA:632)
AT CON.SUN.JERSEY.API.CLIENT.MEBRESOURCE.ACCE.ACCESS$20B(ILEBRESQURSE.1AYA:72)
AT COM.SUN.JERSEY.API.CLIENT.WEBRESOURCE$BUILDER.POST(LLEBRESQUESQUESE.LAYAI57G)
AT 6ON-NNTRJIX,DFSCOVAREAREA,TRONSPORRTDEEAHERAHEAHERAHETORETORETOR-F2REATSCUTSCUTSCUREATEEC333333333
AT 00N,NE3FJX,DISCOVERY 3NAREA TRANSPOFF,REC, RNASSARSATOR 3NATOR-RESOR-RESTOR 3ESTARRATARSORSATAR,S6
AR CON,NETRIX,ARCOVER, SHAREA,TRANSPORT,ARCORATOR -RESTORTARTARTORSTORSTORSTOR-RESTARTANTBESORATOC-3
AT CON,NEFFLX,ATSCOVERY,SNARED,TRONTECURTARATER,FURRASS
AT CON,NETRIX,AT ATSOOVERY, SNAREA,TRANSPORT,AECOR,FANT,BXEJRYOBLAURSHAREAREARTECSTECSARRAITTBRLANT-J
AT GOM-NNERTEX,A1SCOVERY,SNURED,TRONSPORT,DESORATAR,FURRANTERATORATORATORATORATORSISTARRATARATAR,JANA
3.Nacos服务分级模型
例如:提供用户功能的USER-SERVICE
服务
以机房划分集群
例如:杭州集群,上海集群
集群
集群
例如:端口为8081
实例
的USER-SERVICE
实例
集群
实例
例如:端口为
北京
实例
8082的USER-
SERVICE
杭州
例如:端口为
实例
实例
8083的USER-
上海
SERVICE
不同于Zookeeper没有针对服务发现设计数据模型,它的数据是以一种更抽象的树形K-V组织的,因此理论上可以存储任何语义的数据。而Eureka或Consule都做到了实例级别的数据扩展,这能满足大多数场景但无法满足大规模和多环境的服务数据存储。Nacos经过多年经验后提炼出上述模型,其特点在于:服务-集群-实例三层模型,可以满足所有场景下的数据存数和管理。
通过设置不同的集群所在参数,可以保证相同集群间优先调用,减少网络开销。当本地集群服务无法拉取时,再去跨集群调用。对于此工程我们只需要设置提付提供者集群参数:
此时访问Nacos会发现其增加了集群属性发生变化,原为:Default
服务详情
返回
编辑服务
服务名
USERSERVICE
分组
DEFAULT_GROUP
保护阈值
0
元数据
服务路由类型
集群HZ
集群配置
元数据过滤
VALUE
KEY
添加过滤
临时实例
端口
元数据
IP
权重
操作
健康状态
编辑
PRESERVED.REGISTER.SOURCESPRING.CLOUD
192.168.125.121
8081
TRUE
TRUE
下线
编辑
PRESERVED.REGISTER.SOURCESPRING_CLOUD
192.168.125.121
8082
TRUE
TRUE
下线
为模拟多集群场景,此时我们复制一个新的userApplicatio3启动类,具体操作步骤如下:
●复制一个新的userApplicatio3启动类,设置其启动端口:-Dserver.port=8083
●更改配置文件集群属性为GZ(注意不要停userApplication、userApplication2,否则原注册信息会失效)
●启动userApplication3并访问nacos
EDIT CONFIGURATION
STORE AS PROJECT FILE
USERAPPLICATION 3
NAME:
BUILD AND RUN
飞M
MODIFY OPTIONS
JAVA 8 SDK OF 'USER-SERVICE' MODULE
CP USER-SERVICE
DSERVER.PORT-8083
CN.ITCAST.USER.USERAPPLICATION
PROGRAM ARGUMENTS
PRESS 飞 FOR FIELD HINTS
WORKING DIRECTORY:
/USERS/HEBO/DESKTOP/CODE/OTHER/CLOUD
ENVIRONMENT VARIABLES:
SEPARATE VARIABLES WITH SEMICOLON:VAR:VALUE;VAR1-VALUE1
OPEN RUN/DEBUG TOOL WINDOW WHEN STARTED
X P X
CANCEL
OK
APPLY
USERAP
APPLICATION.YML
R三
M POM.XML(USER-SERVICE
USERAPPLICA
PROJECT
M POM.XML(CLOUD-DEMO
DISCOVERYCLIENT.CLAST
SPRING-CLOUD-ALIBABA-DEPENDENCIES-2.2.6.RELEASE.POM
USER-SERVICE/../APPLICATION.YM
USE
PROJECT
/DESKTOP/CODE/OTHI
CLOUD [CLOUD-D
DEMO]
ORDER-SERVICE/../APPLICATION.
POM.XML(ORDER-SERVICE )
IDEA
EUREKA-SERVER
2
PORT:8081
LC-HELPER
ORDERSERVICE
3
SPRING:
I SRC
DATASOURCE:
MAIN
URL:JDBC:MYSQL://LOCALHOST:3306/CLOUD_USER?USESSL-FALSE
JAVA
USERNAME:ROOT
DL CN.ITCAST.ORDER
7
> MAPPER
PASSWORD:ROOT123456
BLL POJO
8
DRIVER-CLASS-NAME: COM.MYSQL.JDBC.DRIVER
中中中国
DL SERVICE
APPLICATION
ORDERSERVICE
NAME:USERSERVICE
10
DWEB
11
CLOUD:
ORDERAPPLICATION
12
NACOS:
RESOURCES
NACOS服务地址
SERVER-ADDR: LOCALHOST:8848
13
APPLICATIONYML
DISCOVERY:
声明集群名称杭州
CLUSTER-NANE:GZ
TARGET
MYBATIS:
N POM.XML
TYPE-ALIASES-PAC
PACKAGE:CN.ITCAST.USER.POJO
USER-SERVICE
CONFIGURATION:
MAIN
MAP-UNDERSCORE-CAMEL-CASE:TRUE
LOGGING:
CN.ITCAST.USER
LEVET:
中自中心
MAPPER
CN.ITCAST:DEBUG
DL POJO
PATTERN:
SERVICE
WEB
DOCUMENT 1/1
SERVICES
三云王王国士
MAIN]ORG.APACHE.CATALINA.CORE.STANDARDENGINE
STARTING SERVLET ENGINE:[APACHE TOMCAT/9.0.43]
12-24 20:14:24:684 INF0 5
0 56083
APPLICATION
MAIN]O.A.C.C.C.C.[TOMCAT].[LOCALHOST].[/]
12-24 20:14:24:817 INF0 56083
INITIALIZING SPRING EMBEDDED WEBAPPLICATIONCONTEXT
RUNNING
MAIN) W.S.C,SERVLETWEBSERVERAPPLICATIONCONTEXT: ROOT WEBAPPAPPLICATIONCONTEXT: INLTIALIZATION COMPLET
12-24 20:14:24:817 INF0 56083
ORDERAPPLICATION
:NO URLS WILL BE POLLED AS DYNAMIC CONFIGURATION SOUN
12-24 20:14:25:118 WARN 56083
MAIN]C.N.C.SOURCES.URLCONFIGURATIONSOURCE
USERAPPLICATION
TO ENABLE URLS AS DYNAMIC CONFIGURATION SOURCES, DEF
12-24 20:14:25:118 INF0 56083
MAIN] C.N.C.SOURCES.URLCONFIGURATIONSOURCE
USERAPPLICATION 2
.ADDITIONALURLS OR MAKE CONFIG.PROPERTIES AVAILABLE ON CLASSPATH.
USERAPPLICATION 3
12-24 20.14.25.125 WADM 54007 -----L MADM E MADM E MADO7 --------I M . 20 2
此时查看Nacos服务信息会发现,已经有了两个集群信息。
1集群HZ
集群配置
元数据过滤
添加过滤
IP
端口
元数据
权重
临时实例
操作
健康状态
编辑
192.168.125.121
PRESERVED.REGISTER.SOURCE-SPRING_CLOUD
8081
TRUE
TRUE
下线
编辑
PRESERVED.REGISTER.SOURCESPRING_CLOUD
8082
192.168.125.121
TRUE
TRUE
下线
集群GZ
集群配置
元数据过滤
添加过滤
VALUE
IP
临时实例
元数据
权重
操作
健康状态
端口
编辑
PRESERVED.REGISTER.SOURCESPRING_CLOUD
192.168.125.121
8083
TRUE
TRUE
下线
此时我们就完成Nacos分级模型的验证,在实际的工作、生产环境中,一般来说服务都是同集群部署,不需要开发人员声明式感知服务所在集群信息。
4.NacosRule负载均衡策略
修改oder-service集群属性、负载均衡策略,调整为如下:
注意:此时需要将OrderApplication中的代码声明式负载均衡策略注释或删除(约定大于配置),否则失效
此时重启应用后会发现orderservice集群属性存在变化:
服务详情
编辑服务
返回
服务名
分组
DEFAULT GROUP
0
保护阈值
元数据
服务路由类型
NONE
集群 HZ
集群配置
元数据过滤
添加过滤
IP
元数据
操作
健康状态
权重
端口
临时实例
编辑
1
PRESERVED.REGLSTER.SOURCESSPRING_CLOUD
8080
192.168.125.1
TRUE
下线
访问oder-service服务会发现其优先匹配HZ集群的userApplication、userApplication2。
上面我们提到优先调用本集群的服务,当本集群服务实例不存在时会考虑跨集群调用,故我们停掉userApplication、userApplication2,再做一次访问会发现访问正常,同时请求日志打到userApplication3。
SERVICES
[NIO-8083-EXEC-3] C.I.USER.MAPPER.USERMAPPER.FINDBYID
12-24 20:41:18:565 DEBUG 57282
PREPARING:SELECT*FROM TB_USER WHERE ID-?
三云乳工田七
入金
[NIO-8083-EXEC-3] C.I.USER.MAPPER.USERMAPPER.FINDBYID
三>PARAMETERS: 2(LONG)
12-24 20:41:18:566 DEBUG 57282
APPLICATION
[NIO-8083-EXEC-3] C.I.USER.MAPPER.USERMAPPER.FINDBYID
TOTAL: 1
12-24 20:41:18:567 DEBUG 57282
RUNNING
ORDERAPPLICATION
USERAPPLICATION 3
FINISHED
USERAPPLICATION
USERAPPLICATION 2
O
NOTSTARTED
EUREKAAPPLICATION
5.Nacos权重控制
基于上一章节的负载均衡算法,我们可以了解到:存在部分机器性能更优,此时该机器理应得到更多的流量分配,nacos通过设置服务权重解决这一问题,权重越大访问评率越高,配置页面如下:
集群HZ
集群配置
添加过滤
元数据过滤
VALUE
KEY
权重
元数据
临时实例
端口
健康状态
IP
操作
编辑
PRESERVED.REGISTER.SOURCESSPRING_CLOUD
192.168125.121
8081
TRUE
下线
编辑
PRESERVED.REGLSTER.SOURCESSPRING_CLOUD
8082
192.168.125.121
TRUE
TRUE
下线
编辑后再次访问服务,会发现流量产生明细变化。如权重设置为0对于服务调用方等同于服务下线。
6.Nacos环境隔离
日常开发过程中,我们一般会有dev、test、poc、prod等多个环境,同一个服务不同环境之间因存在代码不一致问题肯定需要做隔离调度,Nacos通过namespace解决此问题,配置页面如下,我们新增一个dev:
NACOS.
博窖
文档
首页
NACOS企业版
社区
命名空间
NACOS 2.1.0
配置管理
刚新
新建命名空间
配置数
命名空间名称
命名空间ID
操作
描述
服务管理
0
详情 编辑
PUBLIC(保留空间)
服务列表
订阅者列表
权限控制
命名空间
朱群管理
新建命名空间
命名空间ID(不填
则自动生成)
命名空间名
DEV
描述
开发环境
取消
确定
增加完成后列表发生变化如下:
命名空间
新建命名空间
耐新
命名空间名称
操作
描述
配置数
命名空间ID
详情删除编辑
0
PUBLIC(保留空间)
O
详情制除编辑
DEY
06E5F1A5-9ECB-438A-AAE0-B434073BB973
我们尝试在order-service中增加namespace,并重启服务再次访问,注意:namespace后字符串为上图ID
此时会因不在同一命名空间导致无法访问(因userservice暴露服务时未声明namespace,默认public)
JAVA.LANG.ILLEGALSTATAEXCEPTION CREATE BREAKPOINT : NO INSTANCES AVAILABLE FOR USERSERVICE
[SPRING-CLOUD-NETFLIX-RIBBON-2.2.7.RELEASE.JAR:2.2.7.RELEASE]
AT ORD.SPRINAFRANENORK.CLOUD.NETRLIX.NIBBON.RIBBONLOADBALANCERCLIENT,EXECRIBHONLOADBALANCERCLIENT, --
AT CN.ITCAST.ORDER.SERVICE-ORDERSERVICE.QUERYUSERYUSERINFOBYID(ORDERSERYICE,JAVA:55)-(CLASSES/:NA)
AT CN.ITCAST.ORDER.SERVICE.ORDERSERVICE.FINDBYID(ORDERSERVICE.JAVA;39)-(CLASSES/INAL
AT ON,ITCAST-ORDER WED,ORDERCONTROILER FINDBYID(ORDERCONTRONTROLLER,JAYA:JI) -(CLASSES/:NTERNAL LLINE
RELEASE]
我们修改user-service的配置文件,增加namespace,并重启服务再次访问会发现服务恢复正常
"USERAPPLICATION
CLOUD
APPLICATION.YML
JREBEL
RESOURCES
MAIN
ML POM.XML(CLOUD-DEMO
DISCOVERYCLIENT.CLAS
USERAPPLICATION.JAVI
PROJECT V
ORDERAPPLICATION.JAVE
USER-SERVICE/-JAPPLICATION.YM
M POM.XML [USER-SERVICE
EUREKAAPPLICATION JAV
ALL EUREKA-SERVER/-JAPPLICATION.YM ARDER
ML POM.XML [ORDERVICE
LANIANTANTANTALLY
URT:JDBC:MYSQT://LOCATHOST:3306/CTOUD_USE
USER7USESSLFALSE
MPOM.XML
USERNANE:ROOT
PASSWORD:POOT123456
DRIVER-CLASS-NANE:COM.NYSQL.JDBC.DRIVER
MAIN
APPLICATION:
V JAVA
11
CLOUD:
DL MAPPER
> DI POJO
12
DL SERVICE
13
NACOS服务地址
SERVER-ADDR:LOCALHOST:8848
DI WEB
14
DISCOVERY:
USERAPPLICATION
15
CLUSTER-N8NE:HZ产声明集群名称杭州
ROSOURCOS
NANESPACE:06E5F1A5-9ECB-438A-AAEO-B434073BB973 # 命名空间
16
白MYBATIS:
TYPE-ALIASES-PACKAGE:CN.ITCAST.USER.PO30
TARGET
M POM.XML
AP-UNDORSCORE-TO-CAMEL-CASE:TRUE
MPOM.XML
TH EXTEMAL LIBRARIES
LOGGING:
DOCUMENT 1/1
SCRATCHES AND CONSOLES
SERVICES
[NIO-8081-EXEC-1]O.A.C.C.C.[TONCAT].[LOCALHOST].[/]
三云王风大
INITLALIZING SPRING DISPATCHERSERVLET DISPATCHERSERVLET'
2-24 20:55:15:229
INITIALIZING SERVLET'DISPATCHERSERVLET'
INF0 60367
[NIO-8081-EXEC-1] O.S.WEB.SERVLET.DISPATCHERSERVLET
APPLICATION
INF0 68367
[NIO-8081-EXEC-1] O.S.WEB.SERYLET.DISPATCHERSERVLET
RUNNING
[N1O-B081-EXEC-1]CON.ZAXXER.HIKARI.HIKARIDATASOURCE
12-24 20:55:15:291 INF0 60367
ORDERAPPLICATION
HIKAR1POOL-1 - STARTING..
[NIO-8081-EXEC-1] CON.ZAXXER.HIKAR1.HIKARIDATASOURCE
12-24 20:55:15:547 INF0 60367
HIKARIPOOL-1-START COMPLETED.
12-24 20:55:15:555 0EBUG 60367
[NIO-8081-EXEC-1]C.I.USER.MAPPER.USERMAPPER.FINDBYID
SA>PREPARING:SELECT*FROM TB.USER WHERE ID ?
[NIO-8081-EXEC-1] C.I.USER.MAPPER.USERHAPPER.FINDBYID
12-24 20:55:15:578 DEBUG 60367
12-24 20:55:15:597 DEBUG 60367
[NIO-8081-EXEC-1] C.I.USER.MAPPER.USERMAPPER.FINDBYID
TOTAL:
NOT STARTED
EUREKAPPLICATION
7.Nacos临时实例与持久化实例
Nacos在定义上区分临时实例和持久化实例,其主要区分关键是健康检查的方式。
●临时实例:客户端上报模型,能够自动摘除不健康实例,无需持久化实例存储
●持久实例:服务端反省探测模式,客户端因不上报心跳故不会自动摘除下线实例
INSTANCE STAYS WHEN UNHEALTHY
INSTANCE CAN BE EXPIRED
CLIENT SENDS BEAT TO KEEP ITSELF
SERVER SIDE HEALTH CHECK OF INSTANCE
NETFLIX
ALIVE
EUREKA
CONSUL
EPHEMERALTRUE
EPHEMERALFALSE
COREDNS
NACOS.
NACOS.
INSTANCE OF SERVICE
在大中型公司,两种类型一般都会使用,基础的组件如数据库、缓存等往往不能上报心跳,这种类型的服务在注册时就需要作为持计划实例注册。而上层的业务服务,如微服务或Dubbo服务,服务的Provider端支持添加心跳,此时就可以使用临时实例的注册方式。
其配置文件配置如下:
8.Nacos更多总结分析
Nacos.mm(32 KB),如无法访问可链接至:https://kdocs.cn/l/ccGuOOfpPjFv,图片展示如下:
9.总结
本节从Nacos安装、运行到具体规则配置,带领读者们深度参与了Nacos日常使用场景,Nacos作为注册中心可以优雅替换Eureka也离不开SpringCloud Alibaba的开源贡献。作为国内主流的配置、注册中心,Nacos在国内多数微服务公司都有使用,感兴趣的可以阅读一下本节推荐资料,笔者整理归纳在本文第8章节。
Nacos除了能够实现服务注册发现(AP),此外还有个重要特性:配置管理(CP),我们将在下一章节展开学习。
思考问题
●Nacos是什么?解决了什么问题?
●Nacos是如何优雅替换Eureka的?
●Nacos实现的是客户端,还是服务端负载均衡?
●Nacos如何实现注册中心?
10.推荐阅读资料
●Nacos白皮书:
Nacos白皮书.pdf(12.8 MB)