AlibabaCloud核心组件服务治理Nacos(一)

目录

一、 什么是注册中心(服务治理)

二、为什么要用注册中心

三、主流的注册中心

 四、Linux安装nacos

 五、nacos的使用,添加nacos依赖

六、服务之间的调用


一、 什么是注册中心(服务治理)

    服务注册:服务提供者provider,启动的时候向注册中心上报自己的网络信息
    服务发现:服务消费者consumer,启动的时候向注册中心上报自己的网络信息,拉取provider的相关网络信息
    核心:服务管理,是有个服务注册表,心跳机制动态维护,服务实例在启动时注册到服务注册表,并在关闭时注销。

二、为什么要用注册中心

微服务应用和机器越来越多,调用方需要知道接口的网络地址,如果靠配置文件的方式去控制网络地址,对于动态新增机器,维护带来很大问题

三、主流的注册中心

主流的注册中心:zookeeper、Eureka、consul、etcd、Nacos
AlibabaCloud搭配最好的是Nacos,且服务的注册发现之外,还支持动态配置服务

nacos图片 ,参考官网

 四、Linux安装nacos

解压安装包 nacos-server-2.0.2.zip unzip nacos-server-2.0.2.zip 
进入bin目录
启动 sh startup.sh -m standalone
访问 localhost:8848/nacos
默认账号密码 nacos/nacos

 五、nacos的使用,添加nacos依赖

pom.xml

<!--锁定版本-->
<dependencyManagement>
    <dependencies>
        <!--https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies/2.3.3.RELEASE-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.3.3.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <!--https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies/Hoxton.SR8-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR8</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <!--https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies/2.2.1.RELEASE-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<!--添加nacos客户端-->
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置nacos的地址:

server:
  port: 9000
​spring:
  application:
    name: wnn-user-service
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

启动类增加注解:

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
//开启服务发现
@EnableDiscoveryClient

六、服务之间的调用

使用nacos做服务间的调用,首先把相关服务按第五步骤的配置配好

订单服务中,根据id 请求视频服务的接口

    @Autowired
    private DiscoveryClient discoveryClient;
​
    @Autowired
    private RestTemplate restTemplate;
​
    @RequestMapping("query")
    public VideoOrder query(int videoId){
​
        VideoOrder videoOrder = new VideoOrder();
        videoOrder.setVideoId(videoId);
​
        List<ServiceInstance> list = discoveryClient.getInstances("wnn-video-service");
​
        ServiceInstance serviceInstance = list.get(0);
​
        Video video = restTemplate.getForObject("http://"+serviceInstance.getHost()+":"+serviceInstance.getPort()+
                "/api/v1/video/find_by_id?videoId="+videoId,Video.class);
​
        videoOrder.setVideoTitle(video.getTitle());
        videoOrder.setVideoId(video.getId());
        return videoOrder;
​
    }

注册到nacos的2个服务

 使用这种方法带来的问题:无法做负载均衡 。比如无法按照节点轮询/weight 权重配置/固定分发等来根据业务需求调用相应接口

解决方法:

引入Ribbon 或者 Feign

https://blog.csdn.net/wnn654321/article/details/122290206

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值