一、构建注册nacos服务
1.父工程导入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
2。子工程导入依赖
<!-- nacos客户端依赖包 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3.修改yml
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/cloud-user?useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
application:
name: userservice #user服务名称
cloud:
nacos:
server-addr: localhost:8848
mybatis:
type-aliases-package: cn.itcast.user.pojo
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.itcast: debug
pattern:
dateformat: MM-dd HH:mm:ss:SSS
#eureka:
# client:
# service-url: #eureka地址信息
# defaultZone: http://localhost:10086/eureka
二、nacos服务分级存储模型
如何配置集群
1.修改所在集群
2.配置优先选择同一集群进行负载均衡访问
修改ribbon(NacosRule在同一集群中使用random策略,没有同一集群的服务就访问其他集群)
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/cloud-order?useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
application:
name: orderservice #eureka服务名称
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: SH #集群名称
mybatis:
type-aliases-package: cn.itcast.user.pojo
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.itcast: debug
pattern:
dateformat: MM-dd HH:mm:ss:SSS
#eureka:
# client:
# service-url: #eureka地址信息
# defaultZone: http://localhost:10086/eureka
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则
ribbon:
eager-load:
enabled: true
clients: userservice
3.根据权重负载均衡
权重为0的话他不会被访问,比如想要升级一个服务,可以把这个服务的权重设为0,逐渐扩大权重如果有问题也只有小部分知道
4.命名空间
不同命名空间内的服务相互隔离,即如果orderservice和userservice不在同一namespace则无法相互访问,如图namespace内有很多个group,这些group内的service可能是因为隶属于同一功能模块所以放在同一group,service以下就是集群,集群下就是实例
新建命名空间
改变某个service的命名空间
5.临时实例与非临时实例
临时实例:每隔一定时间做心跳
非临时实例:nacos主动询问服务,服务不需要向nacos发送心跳,且nacos不会剔除非健康状态的服务,而仅仅将其标记为非健康状态
eureka采用pull,而nacos采用pull+push(如果nacos发现有实例挂掉会立即向服务消费者发送消息)
6.nacos集群默认采用AP模式,当集群中存在非临时实例时变更为CP模式,eureka只支持AP模式