分布式个人理解概述和dubbo实现简述
什么是分布式?为什么使用分布式?
个人有一些浅薄的理解希望可以批评指正,从概念和应用 两个方面概述:
一、概念:分布式也叫分布式服务,也就是说 他是 一种面向服务思想的程序设计和架构风格,典型的特点是模块化的开发方式。对业务拆分,程序解耦,以应对我们网站或者平台 日渐复杂和庞大的实际业务场景。这样有几个个非常实际的好处是:
第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实现简述的更多相关文章
- 弹性分布式数据集RDD概述
[Spark]弹性分布式数据集RDD概述 弹性分布数据集RDD RDD(Resilient Distributed Dataset)是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作 ...
- 分布式技术-Zookeeper概述
概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目 在大数据技术生态圈中,zookeeper(动物管理员),Hadoop(大象),Hive(蜜蜂),Pig(猪) ...
- Celery异步的分布式任务调度理解
什么是Celery呢? Celery是一个用Python开发的异步的分布式任务调度模块. Celery本身不包含消息服务,使用第三方消息服务,也就是Broker,来传递任务,目前支持的有Rebbimq ...
- 分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较
Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成.不过,略有遗憾的是,据说在淘宝内部,dub ...
- SpringCloud分布式开发理解
谈到SpringCloud最新接触到的可能就是那五大"神兽",之前最先接触分布式开发是通过dubbo的RPC远程过程调用,而dubbo给我得感觉就是:虽然所有的主机物理上分布了,但 ...
- 分布式特点理解-Zookeeper准备
分布式环境特点 分布性 地域,区域,机房,服务器不同导致分布性 并发性 程序运行中,并发性操作很常见,比如同一个分布式系统中的多个节点,同时访问一个共享资源(数据库,分布式存储) 无序性 进程之间的消 ...
- Java RPC 分布式框架性能大比拼,Dubbo排老几?
来源:http://985.so/aXe2 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成 ...
- git分布式的理解----简单服务端搭建
Git是分布式的,并没有服务端跟客户端之分,所谓的服务端安装的其实也是git.Git支持四种协议,file,ssh,git,http.ssh是使用较多的,下面使用ssh搭建一个免密码登录的服务端. 1 ...
- 分布式事物(同样适用于dubbo事务等分布式事务)
随机推荐
- C#实现下载的几种方式举例
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...
- redis zincrby zadd 遇到的问题
在维护代理池时 报错1: zincrby(REDIS_KEY,proxy,-1)redis.exceptions.ResponseError: value is not a valid float 查 ...
- IT回忆录-1
作为80后,差不多算是最开始一批接触互联网的人了.从用56K的猫拨号上网开始,不断地见证计算机和互联网的变化. 哥哥中考没考上,后来就去跟老师学计算机了.等他学完以后,我们家有了第一台电脑. 那个电脑 ...
- mysql 配置 explicit_defaults_for_timestamp
在之前的配置中,除了目录之外,唯独添加了这一项配置,为什么? 因为mysql中timestamp类型和其他的类型不一样: 在之前先了解一下current timestamp和on update cur ...
- winform子容器随父容器的变化设置
在设计winform窗体时,因为会很少去调整窗体的大小,这时子控件就会出很尴尬的情况, 通过查看空间的属性,发现有这样两个属性,dock和anchor.这里主要说anchor,官方 解释没太看懂,我的 ...
- 解决win10开机出现recovery there was a problem with a device connected to your pc
问题描述: 开机无限重启并提示 recovery there was a problem with a device connected to your PC An unexpected I/O er ...
- C++的 RTTI 观念和用途(非常详细)
自从1993年Bjarne Stroustrup [注1 ]提出有关C++ 的RTTI功能之建议﹐以及C++的异常处理(exception handling)需要RTTI:最近新推出的C++ 或多或少 ...
- WebBrowser中获得脚本中的变量值
//项目中添加Micrsoft.mshtml引用 --c:/temp/temp.htm-- <html> <script language="JavaScript" ...
- Java实现Qt的SIGNAL-SLOT机制(保存到Map中,从而将它们关联起来,收到信号进行解析,最后反射调用)
SIGNAL-SLOT是Qt的一大特色,使用起来十分方便.在传统的AWT和Swing编程中,我们都是为要在 监听的对象上添加Listener监听器.被监听对象中保存有Listener的列表,当相关事件 ...
- QT在linux环境下读取和设置系统时间(通过system来直接调用Linux命令,注意权限问题)
QT在Linux环境下读取和设置系统时间 本文博客链接:http://blog.csdn.NET/jdh99,作者:jdh,转载请注明. 环境: 主机:Fedora12 开发软件:QT 读取系统时间 ...