为什么要使用分布式系统?

  容错

  减少延迟/提高性能

  可用性

  负载均衡

  总而言之,其实目的只有一个,”用户体验“。

什么是分布式系统?

  分布式系统是由使用分发中间件连接的自治计算机组成的网络。它们有助于共享不同的资源和功能,为用户提供单一且集成的连贯网络。

搭建一个简单的分布式系统

  1)在服务器(虚拟机)上安装Zookeeper(我这里使用Docker安装)。

    (1)去docker-cn.com获取镜像加速地址

    (2)使用docker pull registry.docker-cn.com/library/zookeeper命令下载Zookeeper

    (3)使用docker run --name zk01 -p 2181 --restart always -d zookeeper命令安装zookeeper

    (4)使用docker ps命令查看进程,至此zookeeper已安装完成,具体的安装文档请参照https://hub.docker.com/_/zookeeper

  2)创建服务提供者,服务消费者(我使用的开发工具是IDEA)。

    (1)New Project 选择 Empty Project

    (2)创建一个子工程作为服务提供者。

        2.1  new Model 选择Spring Initalizr为了测试方便引入web模块。

        2.2   创建一个service

package com.example.ticket.Service;

public interface TicketService {

    public String getTicket();

}

          2.3  创建serviceimpl,注意引入的包

package com.example.ticket.Service;

import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component; @Component
@Service //将服务发布出去
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "《厉害了,我的国》";
}
}

         2.4 引入dubbo和zklient相关依赖

        <!--引入dubbo-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
<!--引入zookeeper-->
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>

         2.5  配置dubbo的扫描包和注册中心地址

#当前应用的名称
dubbo.application.name=provider-ticket
#注册中心的地址
dubbo.registry.address=zookeeper://地址:2181
#扫描哪些包(发布什么内容)
dubbo.scan.base-packages=com.example.ticket.Service

    (3)子工程作为服务消费者。

      3.1  new Model 选择Spring Initalizr为了测试方便引入web模块。

      3.2  创建一个UserService

      3.3 引入dubbo和zklient相关依赖

        <!--引入dubbo-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
<!--引入zookeeper-->
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>

      3.4  配置dubbo的注册中心地址

#应用名称
dubbo.application.name=consumer-user
#注册中心的地址
dubbo.registry.address=zookeeper://地址:2181

      3.5 将所需服务提供者工程的service copy过来(一定要全类名相同),之后的目录结构如下图

      3.6  编写UserService

package com.example.user.Service;

import com.alibaba.dubbo.config.annotation.Reference;
import com.example.ticket.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);
} }

    至此,一个简单的分布式系统就搭建完毕。

  

SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用的更多相关文章

  1. Springboot+dubbo+zookeeper整合

    本想自己搭建一个Spring+dubbo+zookeeper整合好的框架,想寻找个最佳实现但是遇到各种各样的问题,只好自己看看dubbo starter的源码 整理如下: 通过打上断点来看配置的对不对 ...

  2. SpringBoot + Dubbo + zookeeper 搭建简单分布式服务

    SpringBoot + Dubbo + zookeeper 搭建简单分布式服务 详细操作及源码见: https://github.com/BillyYangOne/dubbo-springboot

  3. 搭建SpringBoot+dubbo+zookeeper+maven框架(二)

    上一篇文章是关于搭建SpringBoot+dubbo+zookeeper+maven框架的,但是里面的功能还不够完善,今天就日志管理方面做一些改善. 下了demo的网友可能会发现项目在启动时会有警告: ...

  4. 搭建SpringBoot+dubbo+zookeeper+maven框架(一)

    这几天项目还没来,所以就自己试着参考网上的一些资料,搭建了一个SpringBoot+dubbo+zookeeper+maven框架,网上参考的很多资料照着他们一步一步搭建,最后很多都运行不通,很是郁闷 ...

  5. springboot+dubbo+zookeeper+mybatis

    参考地址:https://www.cnblogs.com/gaopengfirst/p/9555240.html 首先创建一个maven项目: 再在该父项目中创建3个module,分别是:provid ...

  6. SpringBoot&Dubbo&Zookeeper远程调用项目搭建

    序言 Dubbo一款分布式服务框架,作为阿里巴巴SOA服务化治理方案的核心框架,通过高性能和透明化的RPC实现服务的远程调用,对服务的负载均衡以及项目的耦合性提供很强的解决方式;具体Dubbo的介绍和 ...

  7. 分布式应用开发 | SpringBoot+dubbo+zookeeper实现服务注册发现 | 远程服务调用

    前言 通过新建两个独立服务--提供者.消费者,模拟两个独立分布的应用,通过使用dubbo+zookeeper来实现远程服务调用. 目录 项目搭建 provider-server consumer-se ...

  8. 用dubbo+zookeeper+spring搭建一个简单的http接口程序

    dubbo是一个分布式服务框架,是阿里巴巴开发的一个解决RPC远程调用优化的核心框架,包含负载均衡算法,能提高分布式系统的性能. zookeeper是hadoop的一个子项目,主要用来解决分布式系统的 ...

  9. 关于Maven+Springmvc+Dubbo+Zookeeper整合

    为什么要用dubbo?   还是让官方来解释吧: http://dubbo.io/User+Guide-zh.htm   http://dubbo.io/   一般 nginx+tomcat  | - ...

随机推荐

  1. 隐马尔可夫模型(HMM)总结

    摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项(算法过程,调参等注意事项) 5.实现和具体例子 6.适用场合 内容: 1.算法概述 隐马尔科夫模型(Hidden Markov ...

  2. 分布式系统关注点(17)——先写DB还是「缓存」?

    如果第二次看到我的文章,欢迎右侧扫码订阅我哟~ 

  3. Emmagee--APP性能测试工具的基本使用

    一.Emmagee介绍 Emmagee是监控指定被测应用在使用过程中占用机器的CPU.内存.流量资源的性能测试小工具.该工具的优势在于如同windows系统性能监视器类似,它提供的是数据采集的功能,而 ...

  4. JVM 第一次学习总结(2019年4月)

    1.内存模型 起源:在计算机系统,加入了一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存和处理器之间的缓冲. 问题:缓存一致性.在多处理器系统中,每个处理器都有自己的高速缓存(抽象为工作内存) ...

  5. 带你了解SDL

    SDL(英语:Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相似的代码就可 ...

  6. [转载]学习Javascript闭包(Closure)

    学习Javascript闭包(Closure)     源地址: http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures ...

  7. Hyperledger Fabric、Corda和以太坊对比

     Hyperledger Fabric . Corda 和以太坊的对比 三种不同的框架 我们从 Hyperledger Fabric.R3 Corda和以太坊的白皮书中可以看到,三种框架在可能的应用领 ...

  8. 我敢说你不一定完全理解try 块,catch块,finally 块中return的执行顺序

    大家好,今天我们来讲一个笔试和面试偶尔都会问到的问题,并且在工作中不知道原理,也会造成滥用. 大家可能都知道,try 块用来捕获异常,catch块是处理try块捕获的异常,finally 块是用来关闭 ...

  9. 我们为什么要搞长沙.NET技术社区(二)

    我们为什么要搞长沙.NET技术社区(二) 某种意义上讲,长沙和中国大部分内地城市一样,都是互联网时代的灯下黑.没有真正意义上的互联网公司,例如最近发布的中国互联网企业一百强中没有一家湖南或者长沙的公司 ...

  10. MobileForm控件的使用方式-用.NET(C#)开发APP的学习日志

    今天继续Smobiler开发APP的学习日志,这次是做一个title.toolbar.侧边栏三种效果 样式一 一.          Toolbar 1.       目标样式 我们要实现上图中的效果 ...