栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

nacos使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

nacos使用

spring cloud alibaba 是 对 springcloud的标准实现,以微服务为核心的整体解决方案

版本适配

https://github.com/alibaba/spring-cloud-alibaba/wiki

对应的springboot版本

环境搭建

创建一个父maven项目,修改package


maven不用利用parent形成继承关系

  
        

            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.2.5.RELEASE
                pom
                import
            


            
                org.springframework.boot
                spring-boot-starter-parent
                2.3.11.RELEASE
                pom
                import
            


            
                org.springframework.cloud
                spring-cloud-dependencies
                Hoxton.SR8
                pom
                import
            
        
    
springboot初始化阿里云

https://start.aliyun.com

Nacos

一个更易于构建云原生应用的动态服务发现(Nacos Discovery),服务配置(Nacos Config)和服务管理平台

注册中心 + 配置中心 + 服务管理平台

服务发现和服务健康监测动态配置服务动态DNS服务服务及其元数据管理

心跳机制

我们的服务会在本地维护一个定时任务,比如说没5s发送一个心跳到注册中心,注册中心一但超过了5s没有收到心跳,就认为当前服务已经挂掉了,并把当前状态修改为down(已下线)。。如果超过了30s,都没有获取到服务的心跳的话,就会把这个服务从注册表中剔除掉。。。心跳机制,就能将已经宕机的服务剔除出去。。
如果这个服务停止了,会调用这个注销接口,把这个服务从注册表中剔除出去
在调用的时候,也会有一个定时任务 ,实时的去调用这个服务获取接口,并实时的拉取到最新的服务列表,拉取的时候只会获取到健康状态的服务。。获取到了之后会用缓存保存起来(每次都去获取性能不好),
。。。
负载均衡器 —》 负载均衡

Nacos部署
    下载Nacos 。。根据上面的版本适配下载对应的版本
    https://github.com/alibaba/nacos/releases/tag/1.4.1

设置成单机之后启动

用户名:nacos
密码: nacos

代码实现

创建两个子模块 order 和 stock
依赖

 
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
    

配置文件

server:
  port: 8010
spring:
  application:
    name: order-service # 服务的名字
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848  # nacos 服务地址
      discovery:
        username: nacos # 登录到 nacos 平台上的用户名称,,默认nacos
        password: nacos
        namespace: public # 服务存在命名空间    隔离不同的服务实例  dev开发环境  或  pro生产环境。。默认public

订单

@RestController
@RequestMapping("/order")
public class OrderController {
    @Autowired
    RestTemplate restTemplate;

    @RequestMapping("/add")
    public String add(){
        String msg = restTemplate.getForObject("http://stock-service/stock/reduce", String.class);
        return "hello world+  "+msg;
    }
}
@SpringBootApplication
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class,args);
    }


    @Bean
    @LoadBalanced // nacos 本身是没有办法去解析服务名称对应的服务地址,他需要依靠负载均衡去解析服务器名称,调用对应地址
    RestTemplate restTemplate(RestTemplateBuilder builder){
        // 构造器模式  可以设置读取超时时间,连接超时时间
        RestTemplate restTemplate = builder.build();
        return restTemplate;
    }
}

库存

@RestController
@RequestMapping("/stock")
public class StockController {

    @Value("${server.port}")
    String port;

    @RequestMapping("/reduce")
    public String reduce(){
        return "库存减少  "+port;
    }
}


克隆相同的服务:


名词

服务注册
服务心跳: 定时任务往注册中心发送心跳
服务同步: 服务集群的时候会自动同步????Nacos Server集群之间会相互同步服务实例,用来保证服务信息的一致性
服务发现
服务健康检查
CAP C一致性 A可用性 P分区容错性

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756194.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号