什么是分布式?为什么使用分布式?

个人有一些浅薄的理解希望可以批评指正,从概念和应用 两个方面概述:
      一、概念:分布式也叫分布式服务,也就是说 他是 一种面向服务思想的程序设计和架构风格,典型的特点是模块化的开发方式。对业务拆分,程序解耦,以应对我们网站或者平台 日渐复杂和庞大的实际业务场景。这样有几个个非常实际的好处是:
第1,服务之间解耦,相对独立,提高了程序的 伸缩性 利于我们 针对业务扩展 的实际场景的开发需求。
2. 通过分布式的独立部署 大大缓解维护工作 与 数据库访问的 压力,
3. 模块化开发可以 把 我们 都能用到的资源 剥离出来 提高资源的 高复用性。
好比如,流水线的生产方式,将一件复杂繁琐的工程 细分成 简单而高效的小任务。说道这里,我们就的考虑几个问题,就是应用方面的,比如 分布式服务的管理通信就是 相对独立的服务与服务之间怎么调用 与合作的,分布式事务的具体实现。
       二、分布式的具体应用
      在分布式的服务治理这块,我们选择使用的是alibaba的 dubbo框架 实现,因为dubbo比较简单高效,除了可以提供服务还能实现软负载均衡,当然也有别的比如apche的xcf框架,wso2, mule等企业应用轻量级的框架,可惜我个人经历有限,了解的不多,以后再探讨。

一般 我们 选择 dubbo+zookeeper  第三方插件实现分布式
dubbo的实现原理是:服务在容器中启动时,生产者/service提供方 会暴露自己的服务端口地址 也就是在注册中心--zookeeper 注册自己的服务,消费者如果需要调用服务就到注册中心去找,拿到地址通过反射调用到对应的服务。监控中心会每分钟进行统计。
注册中心:官方推荐zookeeper,当然,也有其他的注册中心可以使用,比如Redis、Multicast、Simple,这里只说zookeeper,其他的以后再整理 详说

Zookeeper:
它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。如果从功能简单理解就是 提供分布式的 的树形目录地址服务
建议使用dubbo-2.3.3以上版本的zookeeper注册中心客户端
zk工作流程:生产者/服务提供方 启动时,向dubbo对应的生产者目录写下自己的URL地址(企业一般是 ip+端口)
消费者/服务调用方 启动时,向dubbo订阅生产者地址也就是从zk获取生产者地址,并写下消费者的url
监控中心记录下所有的URL
zk支持的功能:1.当生产者挂掉时,自动删除生产者信息
2.重启时自动恢复注册数据和订阅请求数据
3.会话过期时也会 自动恢复注册和订阅 数据
具体的使用:
当设置<dubbo:registry check="false" />时,记录失败注册和订阅请求,后台定时重试。
可通过<dubbo:registry username="admin" password="1234" />设置zookeeper登录信息。
可通过<dubbo:registry group="dubbo" />设置zookeeper的根节点,不设置将使用无根树。
支持*号通配符<dubbo:reference group="*" version="*" />,可订阅服务的所有分组和所有版本的提供者。
从2.2.0版本开始缺省为zkclient实现,以提升zookeeper客户端的健状性。
缺省配置:
<dubbo:registry ... client="zkclient" />
或:
dubbo.registry.client=zkclient
或:
zookeeper://10.20.153.10:2181?client=zkclient

Curator Zookeeper Registry

从2.3.0版本开始支持可选curator实现。
如果需要改为curator实现,请配置:
<dubbo:registry ... client="curator" />
或:
dubbo.registry.client=curator
或:
zookeeper://10.20.153.10:2181?client=curator

Zookeeper单机配置:
<dubbo:registry address="zookeeper://10.20.153.10:2181" />
Or:
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181" />
Zookeeper集群配置:
<dubbo:registry address="zookeeper://10.20.153.10:2181?backup=10.20.153.11:2181,10.20.153.12:2181" />
Or:
<dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" />
同一Zookeeper,分成多组注册中心:
<dubbo:registry id="chinaRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="china" />
<dubbo:registry id="intlRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="intl" />

zookeeper工作原理图:

分布式个人理解概述和dubbo实现简述的更多相关文章

  1. 弹性分布式数据集RDD概述

      [Spark]弹性分布式数据集RDD概述 弹性分布数据集RDD RDD(Resilient Distributed Dataset)是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作 ...

  2. 分布式技术-Zookeeper概述

    概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目 在大数据技术生态圈中,zookeeper(动物管理员),Hadoop(大象),Hive(蜜蜂),Pig(猪) ...

  3. Celery异步的分布式任务调度理解

    什么是Celery呢? Celery是一个用Python开发的异步的分布式任务调度模块. Celery本身不包含消息服务,使用第三方消息服务,也就是Broker,来传递任务,目前支持的有Rebbimq ...

  4. 分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较

    Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成.不过,略有遗憾的是,据说在淘宝内部,dub ...

  5. SpringCloud分布式开发理解

    谈到SpringCloud最新接触到的可能就是那五大"神兽",之前最先接触分布式开发是通过dubbo的RPC远程过程调用,而dubbo给我得感觉就是:虽然所有的主机物理上分布了,但 ...

  6. 分布式特点理解-Zookeeper准备

    分布式环境特点 分布性 地域,区域,机房,服务器不同导致分布性 并发性 程序运行中,并发性操作很常见,比如同一个分布式系统中的多个节点,同时访问一个共享资源(数据库,分布式存储) 无序性 进程之间的消 ...

  7. Java RPC 分布式框架性能大比拼,Dubbo排老几?

    来源:http://985.so/aXe2 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成 ...

  8. git分布式的理解----简单服务端搭建

    Git是分布式的,并没有服务端跟客户端之分,所谓的服务端安装的其实也是git.Git支持四种协议,file,ssh,git,http.ssh是使用较多的,下面使用ssh搭建一个免密码登录的服务端. 1 ...

  9. 分布式事物(同样适用于dubbo事务等分布式事务)

随机推荐

  1. js 动态生成button 并设置click事件

    <div id="MyDiv"></div> <script> function AddButton() { var MyDiv =docume ...

  2. MVC基架生成的 Details视图

    @model MyMusicStore.Models.Album @{     ViewBag.Title = "Details"; } <h2>Details< ...

  3. 运行control userpasswords2实现winXP自动登录

    原文:运行control userpasswords2实现winXP自动登录 如果你的计算机只是自己一人在用,且每次都用同一个用户名(或者你根本没在意过什么是用户名),而每次都要输入密码,是否太麻烦了 ...

  4. rdlc水晶报表在wpf里的使用

    1引用程序集 Microsoft.ReportViewer.WinForms 2 xaml 命名空间 xmlns:rv="clr-namespace:Microsoft.Reporting. ...

  5. 图像滤镜艺术---Oilpaint油画滤镜

    原文:图像滤镜艺术---Oilpaint油画滤镜  Oilpaint油画滤镜     图像油画效果实际上是将图像边缘产生一种朦胧,雾化的效果,同时,将一定的边缘模糊化,这样图像整体上看去像素与像素之间 ...

  6. 图像Stride求取

    原文:图像Stride求取 做这个日志也许你会觉得多余,但是,如果只给你了图像的流文件,和图像的Width,让你还原原始图像,那么你会发现一个问题,就是Stride未知的问题,这时就需要根据图像的Wi ...

  7. C#程序以管理员的身份运行

    在一些特定的情况下我们需要能够有管理员的权限,这样我们的很多执行,或者写入就不会报错了. 1.解决方案资源管理器---->项目(右键)--->属性-->安全性 2.勾选“启用Clic ...

  8. 在Visual Studio2015中使用单元测试

    所谓的单元测试(Unit Test),就是对软件的一些模块进行测试以检查其正确性和可靠性,这些模块可以是一个类或者是一个方法等.在Visual studio中,这十分容易实现. 打开Visual st ...

  9. Ptypes一个开源轻量级的c++库,包括对一些I/O操作、网络通信、多线程和异常处理的封装

    C++开源项目入门级:Ptypes    Ptypes一个开源轻量级的c++库,包括对一些I/O操作.网络通信.多线程和异常处理的封装.虽然代码有限,包括的内容不少,麻雀虽小,五脏俱全.    提高: ...

  10. OpenSSL的命令行用法,以及参数大全

    c:\openssl\bin>opensslOpenSSL> versionOpenSSL 1.0.2j 26 Sep 2016OpenSSL> https://wiki.opens ...