android系统定制开发【微服务】SpringCloud-Nacos注册中心

🍁博客主页:👉
欢迎关注:👉点赞👍收藏留言
系列专栏:👉
知足上进,不负野心。
🔥android系统定制开发欢迎大佬指正,一起学习!一起加油!

文章目录


🍁android系统定制开发服务注册到

Nacos是SpringCloudAlibaba的组件,而SpringCloudAlibaba也遵循SpringCloudandroid系统定制开发中定义的服务注册、android系统定制开发服务发现规范。因此使用Nacosandroid系统定制开发和使用对于微服务来说,并没有太大区别。

  • 主要差异在于:
    • 依赖不同
    • 服务地址不同

🔥引入依赖

1.在cloud-demo父工程的pom文件中引SpringCloudAlibaba的依赖

<dependency>    <groupId>com.alibaba.cloud</groupId>    <artifactId>spring-cloud-alibaba-dependencies</artifactId>    <version>2.2.6.RELEASE</version>    <type>pom</type>    <scope>import</scope></dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.注释掉order-service和user-service中原有的eureka依赖

 <!--eureka客户端依赖-->       <!-- <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>        </dependency>-->
  • 1
  • 2
  • 3
  • 4
  • 5

3.在user-service&order-service中的application.yml文件注释掉eureka配置

# 注册服务到eureka上#eureka:#  client:#    service-url:#      # eureka的地址信息,注册到 eureka 上#      defaultZone: http://127.0.0.1:8083/eureka
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4.在user-service和order-service中的pom文件中引入nacos-discovery依赖:

<dependency>    <groupId>com.alibaba.cloud</groupId>    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

🔥配置nacos地址

4.在user-service&order-service中的application.yml文件,添加nacos地址

spring:  cloud:    nacos:      server-addr: localhost:8848
  • 1
  • 2
  • 3
  • 4
  • 5

🔥重启

5.重启微服务后,登录nacos管理页面,可以看到微服务信息


还可以点击详情,查看详细信息


访问orderservice,查看日志

🍁服务分级存储模型

Nacos就将同一机房内的实例 划分为一个集群。
user-service是服务,一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型,如图:

互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群。

杭州机房内的order-service应该优先访问同机房的user-service。

  • Nacos服务分级存储模型
    • 一级是服务,例如userservice
    • 二级是集群,例如杭州或上海
    • 三级是实例,例如杭州机房的某台部署了userservice的服务器

🍁设置实例的集群属性

🔥user-service配置集群

1.修改user-service的application.yml文件,添加集群配置:

spring:  cloud:    nacos:      server-addr: localhost:8848      discovery:        cluster-name: HZ # 集群名称
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

重启两个user-service实例在nacos控制台查看结果:


2.再次修改user-service的application.yml文件,添加集群配置:

spring:  cloud:    nacos:      server-addr: localhost:8848      discovery:        cluster-name: SH # 集群名称
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

启动UserApplication,在nacos控制台查看结果:

🍁同集群优先的负载均衡

默认的ZoneAvoidanceRule并不能实现根据同集群优先来实现负载均衡。Nacos中提供了一个NacosRule的实现,可以优先从同集群中挑选实例。

🔥order-service配置集群信息

1.修改order-service的application.yml文件,添加集群配置:

spring:  cloud:    nacos:      server-addr: localhost:8848      discovery:        cluster-name: HZ # 集群名称
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

启动OrderApplication,在nacos控制台查看结果:

🔥修改负载均衡规则

2.修改order-service的application.yml文件,修改负载均衡规则:

userservice:  ribbon:    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则 
  • 1
  • 2
  • 3

重启orderservice服务,三个user-service都有查询实现负载均衡下图所示:



  • NacosRule负载均衡策略
    • 优先选择同集群服务实例列表
    • 本地集群找不到提供者,才去其它集群寻找,并且会
      报警告
    • 确定了可用实例列表后,再采用随机负载均衡挑选实

🍁权重配置

1.在nacos控制台,找到user-service的实例列表,点击编辑,即可修改权重:


2.将端口号8082的权重修改为0.1,权重修改为0,则该实例永远不会被访问


3.修改成功


4.在浏览器访问orderservice服务,访问多次,控制台查看日志该实例就被访问1次。


5.权重修改为0


6.该实例永远不会被访问

  • 实例的权重控制
    • Nacos控制台可以设置实例的权重值,0~1之间
    • 同集群内的多个实例,权重越高被访问的频率越高
    • 权重设置为O则完全不会被访问

🍁环境隔离

Nacos提供了namespace来实现环境隔离功能。
nacos中可以有多个namespace,不同namespace之间相互隔离,不同namespace的服务互相不可见。

  • Nacos环境隔离
    • namespace用来做环境隔离
    • 每个namespace都有唯一id
    • 不同namespace下的服务不可见

🔥创建namespace

1.默认情况下,所有service都在同一个namespace,名为public,点击命名空间,然后点击新建命名空间,添加一个namespace


2.填写表单


3.新的namespace就创建好了


4.点击private查看服务

🔥给微服务配置namespace

1.修改order-service的application.yml文件:

spring:  cloud:    nacos:      server-addr: localhost:8848      discovery:        cluster-name: HZ        namespace: a8fdddb1-7104-4d6b-8a74-e4c5d414405f #命名空间ID
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.重启order-service后,访问控制台


3.访问order-service,因为namespace不同,会导致找不到userservice,控制台会报错


🍁Nacos与Eureka的区别

  • Nacos的服务实例分为两种l类型:

    • 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。
    • 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。
  • 配置一个服务实例为永久实例:

spring:  cloud:    nacos:      discovery:        ephemeral: false # 设置为非临时实例,默认为true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

设置成功:

  • Nacos与eureka的共同点
    • 都支持服务注册和服务拉取
    • 都支持服务提供者心跳方式做健康检测
  • Nacos与Eureka的区别
    • Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
    • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
    • Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
    • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发