搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > 一个程序猿的生活 > 分布式架构试水-zookeeper+dubbo+springboot

分布式架构试水-zookeeper+dubbo+springboot

一个程序猿的生活 2018-07-08
举报

 

分布式架构试水-zookeeper+dubbo+springboot

随着互联网的发展,应用系统变得越来越庞大,单体应用由于存在着「修改一点全部都需部署」的问题,让开发和测试做了好多重复的工作,苦不堪言。我们需要引入「微服务」的理念,对项目根据业务进行模块化拆分。

比如,一个商城系统可以拆分为产品product服务、订单order服务、用户user服务。服务之间的通讯(比如用户服务需要查看某一用户的订单数据)就需要用到RPC(远程过程调用),需要服务提供者将服务发布到注册中心(zookeeper)中,然后服务消费者来调用自己需要的服务。注册中心就相当于服务的中介起到牵线搭桥的作用。


一、技术简介

1、Zookeeper

Zookeeper是一个分布式的、开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

Zookeeper主要用来做注册中心,下面会使用docker安装启动Zookeeper。

①下载zookeeper镜像。使用docker中国的镜像加速。

 docker pull registry.docker-cn.com/library/zookeeper

②启动zookeeper,使用镜像的ID启动。


docker run --name zk01 -p 2181:2181 --restart always -d 397be0d8fa45

2、Dubbo

Dubbo是阿里巴巴开源的分布式服务框架,最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度的松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是需求方消费服务,所以基于这一点可以抽象出服务提供方(provider)和服务消费方(consumer)两个角色

使用dubbo来作为rpc框架来保证服务的调用。

下图是dubbo的架构图,中文文档http://dubbo.apache.org/books/dubbo-dev-book/design.html


 1.Provider: 暴露服务的服务提供方.

  1. Consumer: 调用远程服务的服务消费方。

  2. Registry: 服务注册与发现的注册中心。

  3. Monitor: 统计服务的调用次调和调用时间的监控中心。

  4. Container: 服务运行容器。

  • 调用关系说明:

  1. 服务容器负责启动,加载,运行服务提供者。

  1. 服务提供者在启动时,向注册中心注册自己提供的服务。

  2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

  3. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

3、创建服务提供者和消费者两个工程

提供者:

①服务提供者,引入bubbo的Springboot的starter

<dependency>
   <groupId>com.alibaba.boot</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>0.2.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>

②配置application配置文件

dubbo.application.name=provider-do
#注册中心地址
dubbo.register.address=zookeeper://172.20.10.8:2181
#dubbo的扫描包
dubbo.scan.base-packages=com.pcx.providerdo.service

③在服务的类中添加dubbo的@service启动application即可.


package com.pcx.providerdo.service;

import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

@Component
@Service
public class DoserviceImpl implements DoService {

   @Override
   public String doThing() {
       return "我在做事-----------------";
   }
}

for dubbo config bean [name : 1] has been registered.成功发布

消费者:

①引入依赖


dubbo.application.id=consumer

dubbo.register.address=zookeeper://172.20.10.8:2181

③使用:


package com.pcx.consumer.service;

import com.alibaba.dubbo.config.annotation.Reference;
import com.pcx.service.DoService;
import org.springframework.stereotype.Service;

@Service
public class GoService {

   @Reference
   DoService doService;

   public void hello(){
       String s = doService.doThing();
       System.out.println("你在干啥"+s);
   }
}

控制台打印「你在干啥我在做事---------------」

即可。


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《分布式架构试水-zookeeper+dubbo+springboot》的版权归原作者「一个程序猿的生活」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注一个程序猿的生活微信公众号

一个程序猿的生活微信公众号:pcxcz123

一个程序猿的生活

手机扫描上方二维码即可关注一个程序猿的生活微信公众号

一个程序猿的生活最新文章

精品公众号随机推荐

举报