• 【SpringBoot与分布式 04】


    一、分布式主要的思想:常用Dubbo/Zookeeper、而SpringBoot推荐使用全栈的Spring,SpringBoot+SpringCloud

    随着互联网应用的增加,业务会越来越多,如果修改一个模块就会整个应用重新部署,比如:

     RPC远程调用服务

    为了解决这个问题:可以用到zookeeper+Dubbo  或者SpringBoot+SpringCloud来解决

    1、先已zookeeper+Dubbo来解决

    zookeeper先把订单模块注册进入,然后user模块去zk里面就找对应的订单,这样就解决了上面的问题

    -----dubbo原理图-----

     Containerdobbo的服务容器,在启动时Provider(服务提供者)将服务信息注册到zk(1.register),服务消费者通过消息的订阅(2.subscribe)zk的消息,然后zk把消息推送(3.notify)给consumer,

    服务如果有变更,zk也会通过长连接的方式推送给comsumer,这就意味着comsumer实时掌握着一份服务信息。如果消费者要调用,就会通过手持的这些服务者名单中通过负载均衡机制(4.invoke)

    找到对应的服务,如果调用失败可以在地址列表中继续调用,知道调用成功,dubbo还有监控机制(5.count)调用的次数,时间都会给监控中心发送

    #案例

    1、docker先拉取zookeeper镜像

     docker pull zookeeper:latest

    2、运行zookeeper

    docker run --name zk01 -p 2181:2181 --restart always -d ab3f783cf9c4
    
    ab3f783cf9c4是imageID

    3、创建一个服务project工程,包含两个module,创建服务提供者和消费者

    ticket(服务提供者)和user(消费者)之间的关系:ticket把信息注册到zk,user订阅zk的消息,user调用ticket的消息也是通过dubbo来完成的

    4、整个dubbo -->在provider的pom文件中引入

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

    5、配置provider的application.properties属性

    dubbo.application.name=provider-ticket
    #zk地址
    dubbo.registry.address=zookeeper://172.16.203.130:2181
    #扫描service下的服务发布出去
    dubbo.scan.base-packagess=com.wufq.providerticket.service

    6、如何发布服务-->在对应的service包下需要发布的服务类加上

    @Component  //加入到spring容器中
    @Service //将服务发布出去
    public class TicketServiceImpl implements TicketService {
        @Override
        public String getTicket() {
            return "《长津湖》";
        }
    }

    7、启动provider的服务

    8、消费者测试-consumer的步骤

     1)引入依赖 --和provider引入的依赖一样

     2)配置dubbo的注册中心地址 --和provider的application.properties配置的一样

    dubbo.application.name=consumer-user
    #zk地址
    dubbo.registry.address=zookeeper://172.16.203.130:2181

       3)引用服务

     consumer中把provider的service包拷贝进入  ---》注意com.wufq的包,consumer和provider必须是一样的

    测试消费者是否消费了服务者提供的服务

  • 相关阅读:
    html 底部虚线
    C# 写入二进制文件
    js document 触发按键事件
    python之工作举例:通过复制NC文件来造数据
    python之多线程举例
    python之发送HTML内容的邮件
    python之打印日志logging
    python之查询指定目录下的最新文件
    python之datetime类
    python之Counter类:计算序列中出现次数最多的元素
  • 原文地址:https://www.cnblogs.com/frankruby/p/15439307.html
Copyright © 2020-2023  润新知