SpringCloudAlibaba第一章(Nocas)

SpringCloudAlibaba第一章(Nocas)目录 1 安装 nocas2 什么是 nocas2 1 为什么使用 SpringCloudA 2 什么是 nacos3 案例架构 4 服务提供者使用案例 4 1 提供者 8001 和 8002 的 pom4 2 提供者 8001 和 8002 的 pom 的 controller4 3 提供者 8001 和 8002 的 properties4 4 提供者 8001 和 8002 的 main 方法 4 5 启动查看 5 消费者使用案例 5 1 消费者 8003 的 pom5 2 消费者 8003

目录

 

1:安装nocas

2:什么是nocas

2.1:为什么使用SpringCloudAlibaba

2.2:什么是nacos 

3:案例架构

4:服务提供者使用案例

4.1:提供者8001和8002的pom

4.2: 提供者8001和8002的pom的controller

4.3: 提供者8001和8002的properties

4.4: 提供者8001和8002的main方法

4.5:启动查看

5:消费者使用案例

5.1:消费者8003的pom

5.2:消费者8003的properties

5.3:消费者8003的controller

5.4:消费者8003的mian方法

5.5:启动查看

5.6:调用8003返回不同的端口号,证明8003负载调用了8001和8002

6:动态配置使用

6.1:8003的properties

6.2:服务器新建配置

6.3:controller方法

7:nocas的cap问题(支持AP和CP的切换)

8:nocas的集群和持久化(具体部署请查阅官网)


1:安装nocas

下载:官网https://github.com/alibaba/nacos/releases下载版本

解压:解压到自己的文件夹下边

运行:Linux/Unix/Mac,启动命令(standalone代表着单机模式运行,非集群模式):    sh startup.sh -m standalone

查看:http://localhost:8848/nacos/#/login 账户密码都是nocas

SpringCloudAlibaba第一章(Nocas)

2:什么是nocas

 

2.1:为什么使用SpringCloudAlibaba

1:springcloud官网的Eurake、Feign、Hystrix、Zuul、Config、Bus都已经停止了更新,进入维护阶段。导致后劲乏力

2:国产的SpringCloudAlibaba,兼容性能强,组件少,一个组件能代替springcloud的好几个组件,减少学习成本

3:国产的SpringCloudAlibaba在阿里中,能够应对双十一的压力,证明产品可靠性高

4:国产的SpringCloudAlibaba,学习使用更加简单方便,易于学习,页面管理也很方便。

 

SpringCloudAlibaba第一章(Nocas)

 

2.2:什么是nacos 

nocas是SpringCloudAlibaba的一个组件,主要用来实现服务注册,服务发现,动态配置管理服务发现是微服务体系结构中的关键组件之一。在这样的体系结构中,为每个客户端手动配置服务列表可能是艰巨的任务,并且使动态扩展极为困难。Nacos Discovery帮助您自动将服务注册到Nacos服务器,并且Nacos服务器会跟踪服务并动态刷新服务列表。此外,Nacos Discovery注册服务实例的一些元数据,例如主机,端口,运行状况检查URL,Nacos主页。

nocas=Eurake(服务注册服务发现)+config(配置文件统一管理,但不能统一推送)+Bus(消息队列实现配置文件统一推送)

 

3:案例架构

SpringCloudAlibaba第一章(Nocas)

在案例中8001,8002,8003向nocas注册服务,然后8001、8002作为相同的服务集群,给8003调用

给8003调用负载均衡调用8001和8002,得到服务器的端口号

 

4:服务提供者使用案例

父类项目pom配置

 
    
    
    
      org.springframework.boot 
     
    
      spring-boot-starter-parent 
     
    
      2.1.3.RELEASE 
     
    
    
    
    
      UTF-8 
     
    
      UTF-8 
     
    
      1.8 
     
    
      Greenwich.RELEASE 
     
    
      2.1.0.RELEASE 
     
    
    
    
     
      
      
      
        org.springframework.cloud 
       
      
        spring-cloud-dependencies 
       
      
        ${spring-cloud.version} 
       
      
        pom 
       
      
        import 
       
      
      
      
      
        com.alibaba.cloud 
       
      
        spring-cloud-alibaba-dependencies 
       
      
        ${spring-cloud-alibaba.version} 
       
      
        pom 
       
      
        import 
       
      
     
    

 

4.1:提供者8001和8002的pom

 
    
     
     
     
       com.alibaba.cloud 
      
     
       spring-cloud-starter-alibaba-nacos-discovery 
      
     
     
     
     
       org.springframework.boot 
      
     
       spring-boot-starter-web 
      
     
     
     
     
       org.springframework.boot 
      
     
       spring-boot-starter-actuator 
      
     
    

 

4.2: 提供者8001和8002的pom的controller

该controller只提供一个返回端口的方法,没有业务逻辑,专注与架构

/ * @author :huyiju * @date :2020-05-15 21:03 */ @RestController public class Controller { @Value("${server.port}") String port; @RestController public class add { @GetMapping(value = "/add") public String add() { return "服务端nocas端口号:"+port; } } }

 

4.3: 提供者8001和8002的properties

#服务信息8002 或者8001 server.port=8002 #服务名字需要一致,才是同一个服务下的集群 spring.application.name=huyiju-nacosservice #服务注册的nocas地址 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 management.endpoints.web.exposure.include=* 

 

4.4: 提供者8001和8002的main方法

@SpringBootApplication @EnableDiscoveryClient//nocas服务发现注解 public class Mian8002 { public static void main(String[] args) { SpringApplication.run(Mian8002.class,args); } }

 4.5:启动查看

SpringCloudAlibaba第一章(Nocas)

 

5:消费者使用案例

5.1:消费者8003的pom

 
    
     
     
     
       com.alibaba.cloud 
      
     
       spring-cloud-starter-alibaba-nacos-discovery 
      
     
     
     
     
       com.alibaba.cloud 
      
     
       spring-cloud-starter-alibaba-nacos-config 
      
     
     
     
     
       org.springframework.boot 
      
     
       spring-boot-starter-web 
      
     
     
     
     
       org.springframework.boot 
      
     
       spring-boot-starter-actuator 
      
     
    

 

5.2:消费者8003的properties

 #1:项目初始化配置项目名字 spring.application.name=nacos-8003 server.port=8003 #服务注册到nacos.discovery spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 management.endpoints.web.exposure.include=* #2:配置文件读取地址 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 #文件后缀 spring.cloud.nacos.config.file-extension=yaml #配置不同的环境 spring.profiles.active=info #自定义组文件 spring.cloud.nacos.config.group=huyiju #自定义命名空间 #spring.cloud.nacos.config.namespace=b726e92d-6766-4e05-b35b-a2128c25f00e 

 

5.3:消费者8003的controller

该controller通过resttemple调用服务,得到端口号

@RestController @RefreshScope //动态刷新获取config,config的注解 public class Controller { / * 调用nocas上注册的服务 * 采用restTemplate1+robbin的LoadBalanced注解 * @return */ @Resource private RestTemplate restTemplate1; @RequestMapping(value = "/get") public String add (){ String url="http://huyiju-nacosservice/add"; System.out.println("进入调用"); return restTemplate1.getForObject(url,String.class); } } @Configuration public class RestConfig { @Bean @LoadBalanced public RestTemplate getRestTemplate(){ return new RestTemplate(); } }

5.4:消费者8003的mian方法

@ComponentScan(basePackages = {"com.thit"}) @SpringBootApplication @EnableDiscoveryClient //服务发现注解 public class Mian8003 { public static void main(String[] args) { SpringApplication.run(Mian8003.class,args); } }

 

5.5:启动查看

SpringCloudAlibaba第一章(Nocas)

5.6:调用8003返回不同的端口号,证明8003负载调用了8001和8002

http://localhost:8003/get

 

6:动态配置使用

我们使用8003来获取nocas的动态配置

6.1:8003的properties

 #1:项目初始化配置项目名字 spring.application.name=nacos-8003 server.port=8003 #服务注册到nacos.discovery spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 management.endpoints.web.exposure.include=* #2:配置文件读取地址 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 #文件后缀 spring.cloud.nacos.config.file-extension=yaml #配置不同的环境 spring.profiles.active=info #自定义组文件 spring.cloud.nacos.config.group=huyiju #自定义命名空间 #spring.cloud.nacos.config.namespace=b726e92d-6766-4e05-b35b-a2128c25f00e 

6.2:服务器新建配置

SpringCloudAlibaba第一章(Nocas)

6.3:controller方法

 / * 读取指定名字的yml文件 * nacos-8003-dev.yaml * 项目名字-环境.yaml */ @Value("${aa.bb}") public String aa; @RequestMapping(value = "/dev") public String dev (){ System.out.println("读取dev配置文件"); return aa; } / * 读取指定名字的yml文件 * nacos-8003-test.yaml * 项目名字-环境.yaml */ @Value("${aa.bb}") public String bb; @RequestMapping(value = "/test") public String test (){ System.out.println("读取test配置文件"); return bb; } / * 自定义group获取指定文件 * * */ @Value("${aa.bb}") public String cc; @RequestMapping(value = "/group") public String group (){ System.out.println("读取group配置文件"); return cc; } / * 自定义group获取指定文件和自定义命名空间 * * */ @Value("${aa.bb}") public String ff; @RequestMapping(value = "/namespece") public String namespece (){ System.out.println("读取group分组和自定义命名空间-配置文件"); return ff; } 

 

7:nocas的cap问题(支持AP和CP的切换)

Nacos的AP和CP模式切换
C:是所有节点在同一时间看到的数据是一致,数据一致行
A:是所有请求都会收到响应,Nocas高可用性





何时选用哪种模式?

一般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如Spring Cloud 和 Dubbo服务,都适用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。

如果需要在服务级别编辑或者存储配置信息,那么CP是必须的,K8S服务和DNS服务则适用于CP模式。CP模式下支持注册持久化实例,此时则是以Raft协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。

curl -X PUT `$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP’

 

8:nocas的集群和持久化(具体部署请查阅官网)

官方推荐nocas在生产环境尽量使用集群,3台以上的nocas服务中心,一个mysql数据库用来维持数据一致性。一个niginx代理3台nocas服务,只需访问nignx地址进入nocas服务页面

在这里插入图片描述
 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203268.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午10:12
下一篇 2026年3月19日 下午10:13


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号