nacos分级模型:一级是服务;二级是集群;三级是实例。
一个服务通常有多个实例(配置多个端口号)。为了防止这些实例全放一个地方时,该地方出现问题,导致所有实例都无法使用。我们就会把这些实例根据地域的不同分散开。每一个地域的多个实例的集合被叫做集群。一个集群中多个不同服务的多个不同端口号实例。
在微服务调动的时候会尽可能的调用本地集群的服务,跨集群调用延迟较高。本地集群不可访问时才会去访问其他集群。
配集群依旧是在application.yml文件中进行配置:
server:
port: 8088
spring:
datasource:
url: jdbc:mysql://localhost:3306/cloud?useSSL=false&allowPublicKeyRetrieval=true
username: root
password: quwenhao
driver-class-name: com.mysql.jdbc.Driver
application:
name: orderservice
cloud:
nacos:
server-addr: 127.0.0.1:8848 # nacos服务地址
discovery:
# 集群名称,优先调用本地集群的实例
cluster-name: HZ
启动该服务后,可以去nacos中心去查看:点击该服务详细信息,
如果没有配置集群信息的话,默认是default。
我们都知道在服务消费者调用服务提供者的服务时,如果服务提供者的服务有多个实例的话,我们只需要调用其中一个实例就可以了。这时nacos会帮我们实现负载均衡来获取多个实例中的一个来帮助我们实现服务。
nacos中心还提供配置不同实例的权重的功能,就是调整每个实例被负载均衡调用的概率。
我们在点击服务的详细信息后,可以对其中的一个实例进行编辑
点击编辑。
编辑页面:
其中有个权重的设置。权重值为0到1之间,权重值越大被访问的概率就越高,权重为0时就不会被访问。
环境隔离namespace:
nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层的隔离,是对服务做隔离。用于隔离统一地域相同服务的不同开发环境,比如开发环境、生产环境、测试环境等等。被环境隔离的俩个服务之间不能发送请求获取消息。
下面让我们来创建一个新的环境:
查看命名空间,发现其中已经有了一个public(保留空间),这是nacos自动默认帮我们创建的,我们前面的所有nacos上的服务都是在该环境下进行的。
点击右上角的 新建命名空间
其中命名空间ID选填(可不填),命名空间名和描述必须填。然后点击确定后就创建好了。
我们可以发现已经创建好了,并且生成了命名空间ID。复制该ID。
修改application.yml配置,添加namespace配置。
cloud:
nacos:
server-addr: 127.0.0.1:8848 # nacos服务地址
discovery:
# 集群名称,优先调用本地集群的实例
cluster-name: HZ
namespace: abba1007-5c2b-4a8b-ba1d-2e121c48e576 # dev环境
这样在启动项目时就可以注册到nacos的dev环境下了。
去nacos查看:
出现了与public环境并列的环境了。