zoukankan      html  css  js  c++  java
  • springboot05-分布式系统理念

    分布式系统理念

    RPC

    RPC(Remote Procedure Call)远程过程调用;是一种进程间通信方式,也是一种思想,而不是规范。允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数。

    推荐阅读文章:https://www.jianshu.com/p/2accc2840a1b

    RPC的两个核心:通讯、序列化

    序列化:将数据进行转换

    dubbo

    dubbo就是高可用,高性能的RPC框架,采用全是 Spring 配置方式,

    提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。

    参考官网:http://dubbo.apache.org/en-us/

    服务注册实战

    前提:zookeeper服务已开启

    1.提供者提供服务

    ​ 1)导入依赖

    <dependency>
       <groupId>com.alibaba.boot</groupId>
       <artifactId>dubbo-spring-boot-starter</artifactId>
       <version>0.1.0</version>
    </dependency>
    
    <!--引入zookeeper的客户端工具-->
    <!--引入zookeeper的客户端工具-->
    <dependency>
       <groupId>com.github.sgroschupf</groupId>
       <artifactId>zkclient</artifactId>
       <version>0.1</version>
    </dependency>
    

    ​ 2)配置注册中心的地址,以及服务发现名,和要扫描的包

    dubbo.application.name=privide-ticket
    dubbo.registry.address=zookeeper://192.168.1.10:2181
    dubbo.scan.base-packages=com.mjh.privideticket.service
    

    ​ 3)在想要被注册的服务上面增加一个注解@Service(Dubbo的)

    service层和Impl层

    package com.mjh.privideticket.service;
    
    
    public interface TicketService {
        public String  getTicket();
    
    }
    
    package com.mjh.privideticket.service;
    
    
    import org.springframework.stereotype.Component;
    import org.springframework.stereotype.Service;
    
    @Component
    @Service//将服务发布出去
    public class TicketServiceImpl implements TicketService {
    
        @Override
        public String getTicket() {
            return "《厉害了,我的国》";
        }
    }
    
    package com.mjh.privideticket;
    
    import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
    import com.alibaba.dubbo.config.spring.context.annotation.EnableDubboConfig;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    /**
     * 将服务提供者注册到注册中心
     *    1.引入dubbo和zkclient相关服务依赖
     *    2.配置dubbo的扫描包和注册中心地址
     *    3.使用@Service发布服务
     */
    @EnableDubboConfig
    @SpringBootApplication
    
    public class PrivideTicketApplication {
    
       public static void main(String[] args) {
          SpringApplication.run(PrivideTicketApplication.class, args);
       }
    
    }
    

    2.消费者如何消费

    ​ 1)导入依赖

    <dependency>
       <groupId>com.alibaba.boot</groupId>
       <artifactId>dubbo-spring-boot-starter</artifactId>
       <version>0.1.0</version>
    </dependency>
    
    <!--引入zookeeper的客户端工具-->
    <dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
    </dependency>
    

    ​ 2)配置注册中心的地址,配置自己的服务名

    dubbo.application.name=privide-user
    dubbo.registry.address=zookeeper://192.168.1.10:2181
    

    ​ 3)从远程注入服务 @Reference

    (要使用远程的服务,就要跟远程的服务接口一致)

    package com.mjh.privideticket.service;
    
    
    public interface TicketService {
        public String  getTicket();
    
    }
    

    自己的service层

    package com.mjh.privideuser.service;
    
    import com.alibaba.dubbo.config.annotation.Reference;
    import com.mjh.privideticket.service.TicketService;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserService {
    
        @Reference//远程引用
        TicketService ticketService;
    
        public void hello(){
            String ticket = ticketService.getTicket();
            System.out.println("买到票了:"+ticket);
        }
    }
    
    package com.mjh.privideuser;
    
    import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
    import com.alibaba.dubbo.config.spring.context.annotation.EnableDubboConfig;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    /**
     * 引入依赖
     * 配置dubbo的注册中心地址
     * 引用服务
     */
    @EnableDubboConfig
    @SpringBootApplication
    public class PrivideUserApplication {
    
       public static void main(String[] args) {
          SpringApplication.run(PrivideUserApplication.class, args);
       }
    
    }
    
  • 相关阅读:
    nginx配置文件语法高亮显示方法
    GitLab服务器搭建及配置
    Git服务器搭建及配置
    SVN-Server搭建及配置
    python之subprocess
    jenkins配置从节点
    jenkins邮箱配置以及结合ansible进行批量构建
    tomcat+svn+maven+jenkins实现自动构建
    tomcat结合memcached构建session服务器
    基于tomcat集群做session共享
  • 原文地址:https://www.cnblogs.com/mjjh/p/13295798.html
Copyright © 2011-2022 走看看