暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

springCloud服务注册中心nacos的使用

752

nacos可以作为服务的注册中心,需要在一台主机上启动启动nacos服务端程序,客户端程序(即各种微服务模块)才可以将自己的信息注册到nacos注册中心才可以使用。

如何在后台启动nacos服务端的方法

1、下载nacos-server的jar包

2、通过命令行启动即可

    解压安装包
    进⼊bin⽬录
    启动 sh startup.sh -m standalone
    访问 localhost:8848/nacos
    默认登陆nacos账号密码 nacos/nacos

    启动以后的nacos注册中心如下:

    3、开启微服务的nacos客户端发现

        3.1在需要nacos注册的微服务中引入nacos客户端依赖

      <!--添加nacos客户端-->
      <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      </dependency>

          3.2在需要注册到nacos的微服务的配置文件中配置nacos地址

        server:
        port: 9000
        spring:
        application:
        name: xdclass-video-service
        cloud:
        nacos:
        discovery:
        server-addr: 127.0.0.1:8848

               3.3微服务的启动类上增加服务发现注解@EnableDiscoveryClient

          @SpringBootApplication
          @MapperScan("org.example.dao")
          @EnableDiscoveryClient
          public class VideoApplication {
          public static void main(String[] args) {
          SpringApplication.run(VideoApplication.class,args);
          }
          }

              开启了微服务客户端服务发现以后,当启动相应的微服务后,注册中心nacos的服务列表如下:

          4、实现在Order微服务中拉取注册中心nacos上的Video微服务信息

            4.1 Order订单服务中配置RestTemplate的实例,并交由spring ioc容器管理

            @Configuration
            public class RestTemplateConfig {
            @Bean
            public RestTemplate getRestTemplate(){
            return new RestTemplate();
            }
            }

                4.2 通过discoveryClient拉取注册中心的服务,获取去ip和port以后再交由 restTemplate发起http请求

              @RestController
              @RequestMapping("api/v1/order")
              public class OrderController {


              @Autowired
              private RestTemplate restTemplate;
              /**
              * 用于拉取nacos注册中心上的服务
              */
              @Autowired
              private DiscoveryClient discoveryClient;


              @GetMapping("save")
              public VideoOrder save(@RequestParam("id") int id){
              //从注册中心拉取Video服务列表集群
              List<ServiceInstance> serviceInstanceList = discoveryClient.getInstances("xdclass-video-service");
              //随机选择Video集群中的一个节点,目的是负载均衡
              int idx = new Random().nextInt(serviceInstanceList.size());
              ServiceInstance serviceInstance = serviceInstanceList.get(idx);
              String url = "http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+"/api/v1/video/find_by_id/"+id;

              //通过restTemplate发起http请求收到相应结果
              Video video = restTemplate.getForObject(url,Video.class);


              VideoOrder videoOrder =new VideoOrder();
              videoOrder.setVideoId(video.getId());
              videoOrder.setVideoImg(video.getCoverImg());
              videoOrder.setVideoTitle(video.getTitle());
              videoOrder.setOutTradeNo("port = "+serviceInstance.getPort());
              return videoOrder;
              }
              }


              nacos注册中心的微服务列表


              关于leetcode算法训练营:

                  加我微信号私聊参加训练营,尤其是想进入大厂工作的同学,算法是绕不过去的坎,我自己花了三年时间刷算法,总结思路,刷各种数据结构课程,加入我的训练营,我手把手以在线直播课的形式带你理思路,手把手带你写代码,让你真正体会算法之美~,同时遇到不明白的地方可以直接课上和我沟通,彻底解决你的代码困难症~

              本人用c++刷了800道左右的算法,java语言刷了600道左右的算法题,并对这些题做了详细的个人总结。本科期间系统学习了数据结构与算法课程,同时考研过程中写完了率辉主编的《2020年数据结构高分笔记》和《数据结构1000题》,看完的视频包括《mooc浙大数据结构国家精品课程》和《王道考研408数据结构课程》,《王道2019年算法题讲解视频》,最终以初试专业第三名进入了北理工软件工程专业。熟悉并掌握常见的数据结构,比如链表、数组、树、图、队列、堆栈等等,精通数据结构教材中的所有算法,比如常见的遍历算法、动态规划,递归,回溯,剪枝,并查集,最短路径,拓扑排序等,所以快加入训练营吧,我们一起进步

              奔跑的小梁,公众号:梁霖编程工具库我决定了,算法文档开源!!


              文章转载自梁霖编程工具库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论