栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

第三章 AlibabaCloud核心组件服务治理Nacos

第三章 AlibabaCloud核心组件服务治理Nacos

1. 什么是微服务的注册中心

微服务架构图


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

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

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

2.AlibabaCloud注册中心Nacos实战

1) 注册中心Nacos介绍
官网:https://nacos.io/zh-cn/

2) 安装JDK
官网: https://www.oracle.com/java/technologies/downloads/
将下载好的的压缩包解压到/home/edric/Tools
修改etc/profile文件末尾追加

export JAVA_HOME=/home/edric/Tools/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

执行 source /etc/profile
执行java -version查看

3)安装Maven
官网:https://maven.apache.org/download.cgi
下载完成后解压文件到/home/edric/Tools
修改etc/profile文件末尾追加

export PATH=$PATH:/home/edric/Tools/maven/bin

执行 source /etc/profile
执行 mvn -version
4)安装nacos
git地址:https://github.com/alibaba/nacos/releases


解压安装包
进入bin目录
启动 sh startup.sh -m standalone
访问 localhost:8848/nacos
默认账号密码 nacos/nacos
注意:
浏览器无法访问git网站,检查浏览器是否设置了代理,更改为不使用代理
本地主机无法访问虚拟机中的nacos,解决方法如下,关闭centos防火墙

#关闭
systemctl stop firewalld service
#开机禁用
systemctl disable firewalld
3.基于Nacos实现订单-视频服务之间的调用

1)视频服务集成Nacos
添加依赖

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

配置Nacos地址

server:
  port: 8000

spring:
  application:
    name: xdclass-video-service
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.3.104:8848

启动类增加注解

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

2)订单服务集成Nacos
3)用户服务集成Nacos
4)启动服务
5)服务之间的调用

//OrderController 
@RestController
@RequestMapping("api/v1/video_order")
public class OrderController {
    @Autowired
    private RestTemplate restTemplate;
    @Autowired
    private DiscoveryClient discoveryClient;
    @RequestMapping("/save")
    public Object save(int videoId){
        //Video video = restTemplate.getForObject("http://localhost:9000/api/v1/video/find_by_id?videoId="+videoId, Video.class);
        List list =  discoveryClient.getInstances("xdclass-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 videoOrder = new VideoOrder();
        videoOrder.setVideoId(video.getId());
        videoOrder.setVideoTitle(video.getTitle());
        videoOrder.setCreateTime(new Date());
        return videoOrder;
    }
}

//OrderApplication 
@SpringBootApplication
@EnableDiscoveryClient
public class OrderApplication {

    public static void main(String [] args){

        SpringApplication.run(OrderApplication.class,args);
    }
    
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
    
}

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

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

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