• 07.微服务spring cloud alibaba nacos


    1.spring cloud alibaba(微服务一站式解决方案),包含分布式微服务的组件

    只需要少量注解即可实现微服务

     包括 服务治理  nacos=Naming-service注册中心+config-service配置中心
             服务保护  sentinel(熔断器)= sentinel控制台+@SentinelResource
             远程调用 dubbo
             分布式事务  seata = at+tcc+saga+xa
             消息驱动(可搞事务) RocketMQ(java写的)  
             商业化注解(要money) oss(文件存储) sms(发短信)
                                acm  scheduler x(定时任务)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.不能自己搭配版本看github alibaba文档,还要加spring cloud alibaba版本(本来就有个依赖 spring cloud)

    3.语义化版本 1.0.0和1.0.1表示更新小bug ,2.0.0是更新了大版本
    //alibaba稳定版本2.2.7.RELEASE
    //下载网站github的nacos–>tags—>2.0.3点进去,下载zip解压

    4. 使用
          在nacos/conf配置文件:
    
    
    1.需要mysql,建个数据库nacos 字符集utf8mb4
    拖到表执行sql文件,建议5.7版本(!!!我装了8.0直接启动不了)
    2.改nacos文件夹的配置文件 application.properties 
        context是默认的路径
      打开 33 36 39 40 41行的注释打开
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    ### Count of DB:
          	spring.datasource.platform=mysql
    	  	db.num=1
     		db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
     		db.user.0=root
     		db.password.0=root
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    4.打开cmd文件会报错因为会打开集群
         cmd文件是可以打开编辑的,批处理文件()
          set MODE="standalone"
    5.访问 localhost:8848/nacos/
       数据库users查看用户密码
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5.nacos与eureka(服务端版本可以不管)

    1.nacos有登录,eureka没有
    2.eureka的注册中心,两个项目有相同的模块名称(把项目名称改动即可解决)
    nacos 命名空间(隔离,互不影响)
    car—>customer-seriver flower---->customer-seriver
    分组(两个团队同时开发,谁开发得快有奖金,互不影响)
    //选择start.aliyun.com建springboot项目可以选nacos
    web依赖和nacos discovery

         3.写配置文件
            server:
                   port: 8080
            spring:
                   application:
                 name: nacas-client-a
                   cloud:
                            nacos:  #没有指定命名空间注册到public中,没有指定分组就到DEFAULT_GROUP
                                    server-addr: localhost:8848  #注册中心的地址
                                    username: nacos  #注册中心用户名
    	     					    password: nacos  #密码
    	    	  					discovery: 
                                                namespace:  xxid   #在可视化界面创建后的id不是名字
                                                group: A_GROUP   #里面的组名
                                                service: user-service #默认用spring.application的值,这里指定就用这个服务名
         4.主类加注解
            @EnableDiscoveryClient  //开启nacos
         5.写client
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    6.跨组怎么找服务写clientb写controller看能不能拿到服务列表(秒级发现,比eureka快)

        //同一组名可以相互调用
       @Autowired
         public DiscoveryClientClient discoveryClient;
         @GetMapping("aa")
         public String aa(){
              discoveryClient.getInstances("user-service");
          return "ok"
         }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    7.集成openfeign

       //在提供者写controller info方法
    
       //消费者
       @EnableFeignClients
       //写个feign的文件夹写接口
       @FeignClient(value="user-service")  //写nacos的service名字
       public interface TestFeign{
    	@GetMapping("info");
        public String info();
    
       }
    
       //在controller看是否调用成功
        @Autowired
         public TestFeign testFeign;
         
         testFeign.info();//在方法里面调用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    8.集成gateway,要看清楚哪个接口是哪个服务的(加入即可访问)

    //在配置文件写网关配置
    //直接在 服务名称/接口即可访问 localhost/nacos-client-a/test

    server:
        port: 80
    spring:
        application:
            name: gateway
        cloud:
            nacos:
                server-addr: localhost:8848,localhost:8850
                username: nacos
                password: nacos
                discovery:
                    namespace: ce9d7e87-fd23-4622-96a9-3893ed689824
                    group: ac
            gateway:
                discovery:
                    locator:
                        enabled: true  # 开启动态路由
                        lower-case-service-id: true`
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    9.nacos开启健康检查(加入依赖)

    10.nacos的配置项(在nacos图形界面可以改,看文档)

    权重
    元数据: 可以自己写上让其他服务拿到自定义数据

    11.nacos集群(路径不能有中文)(服务之间数据可以相互同步)

       1. application.properties 改成数据库的账号密码
       2. cluster.conf 复制一份去example(每个nacos都加上这个配置)
               #cmd ipconfig,禁用虚拟机,写这个到文件最后一行
                  我的ip:8848
                   我的ip:8849
                     我的ip:8850
                #端口被占用cmd,kill进程
                       netstat -ano |findstr 8849
                        taskkill /f /t /im 28720
        3.java配置文件 server-addr 写上多个注册地址,即可搭建集群
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    12.nacos配置文件中心(一个服务需要部署到多台服务器,相同的配置文件,如果要修改,就需要下架服务重新打包,麻烦)
    1.在nacos图形界面 按+号,增加配置文件

    (改几台也可以,配置文件不放在本地,改了后,配置文件中心去仓库拉取配置文件不用重启!!)
    nacos主页–>配置列表–>+ —> 新建配置—>yaml—>随便写点配置文件
    hero:
    name: 亚索

      2.写个项目加依赖 web和nacos config 写个controller
         @Value("${hero.name}")
          private String name;
         @GetMapping("info")//返回结果
      3.写个文件 bootstrap.yml  //表示可以在云端拉的配置文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    server:
                port: 8081
       spring:
               application:
                         name: nacos-config-a
               cloud:
                    nacos:
                           config:
                                   username: nacos
                                   password: nacos
               	       #namespace: 
                                   #group:
                                   prefix: nacos-config-a #读哪个配置文件 
                                   file-extension: yml #拓展名
                                   server-addr: localhost:8848 #配置文件自动放在数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    据库持久化
    13.改配置文件后不重启刷新配置文件 在entity加

    @RefreshScope,后加入到注入即可(后面配置文件直接可以配置)
    更多—>历史版本//回滚配置文件,默认组 DEFAUT_GROUP

  • 相关阅读:
    使用VSCODE配置GO语言开发环境
    如何简单上手清华AutoGPT并搭建到本地环境
    【编程之路】面试必刷TOP101:动态规划(67-71,Python实现)
    深度学习| 注意力机制
    Redis缓存以及存在的问题--缓存穿透、缓存雪崩、缓存击穿及解决方法
    C++_串口编程_官方示例:监视通信事件
    如何在外部数据库中存储空间化表时使用Mapinfo_mapcatalog
    JAVA计算机毕业设计摄影摄区源码+系统+mysql数据库+lw文档
    Global AI Bootcamp 成都站 圆满结束!
    Ocelot使用与设置路由Routing
  • 原文地址:https://blog.csdn.net/weixin_47039303/article/details/127557190