目录
1、在未设置namespace时,所有服务都默认在public
3、将order-service的namespace更改为dev
一、服务注册到Nacos
1、将以下代码复制到父工程的pom文件下
<!-- nacos依赖-->
<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、将以下代码复制到子工程的pom文件下
<!-- nacos客户端依赖包 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3、更改子工程的yml文件,在spring下增加nacos的服务地址
4、启动服务
5、查看nacos,发现服务注册成功
二、nacos服务分级存储模型
1、作用
- 服务调用尽可能选择本地集群的服务,跨集群调用延迟较高
- 本地集群不可访问时,再去访问其它集群
当服务被注册时,它会有默认的集群,为default
2、划分集群
(1)我们现在有如下三个实例
(2)我们要将1,2划分到HZ集群,首先就要在yml文件中增加如下代码
discovery:
cluster-name: HZ
(3)然后启动服务1,2
(4)接下来讲服务3划分到SH集群,首先修改yml文件
(5)启动服务3,并在Nacos中查看
(6)将order也划分进入HZ集群,并且清空服务1,2,3的日志
(7)使用get请求访问服务并查看
我们发现它并没有优先访问同集群的实例
所以,我们要在order的yml文件中修改负载均衡规则
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
(8)重启order服务,并发送get请求
为此,我们可以看到服务1,2有访问,而服务3未被访问,所以优先访问了同集群的服务
(9)关闭服务1,2;并发送get请求
发现这次是服务3处理了这次请求,且有跨域访问的警告
3、根据权重负载均衡
(1)每个服务都有自己的权重
(2)当我将某一机器的权重调整为0.1时,它的被访问量就是其它服务的十分之一
(3)若权重设置为0,则该服务不能接收请求,这样就可以在用户无感知的情况下去做服务升级了
三、环境隔离
1、在未设置namespace时,所有服务都默认在public
2、新建namespace
生成了一个id
3、将order-service的namespace更改为dev
(1)首先复制id
(2)找到order的yml文件,并添加如下内容
(3)重启order
(4)查看dev空间的服务
(5)且order以无法访问
(6)所以,要让服务可以访问,就必须放在相同的环境下
4、总结
- 每个namespace都有唯一id
- 服务设置namespace时要写id而不是名称
- 不同namespace下的服务互相不可见