分布式个人理解概述和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事务等分布式事务)
随机推荐
- 潜移默化学会WPF(难点控件treeview)--改造TreeView(CheckBox多选择版本),递归绑定数据
原文:潜移默化学会WPF(难点控件treeview)--改造TreeView(CheckBox多选择版本),递归绑定数据 目前自己对treeview的感慨很多 今天先讲 面对这种 表结构的数据 的其中 ...
- Alamofire - 优雅的处理 Swift 中的网络操作
网络处理,应该是我们平时开发的时候最常用到的操作.比如读取 JSON 数据,下载图片,这些操作都要和网络打交道,一个高效稳定的网络操作库对于提升我们日常的开发效率有着非常关键的作用.Alamofire ...
- WPF 绑定到集合
<Window x:Class="CollectionBinding.MainWindow" xmlns="http://schemas.micros ...
- MyBatis 模板
mybatis-config.xml: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE co ...
- C# 事件详解
1.事件的本质是什么 答:事件是委托的包装器,就像属性是字段的包装器一样 2.为什么有了委托还有有事件 委托可以被访问就可以被执行,事件则只能在类的内部执行 3.事件要怎么声明 a.明一个委托 //委 ...
- Qt中事件处理的顺序
本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息.原文链接.原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途. 谢谢合作.原文链接:Qt中事件处理的顺序 文章内容主要来自 ...
- 零元学Expression Blend 4 - Chapter 4元件重复运用的观念
原文:零元学Expression Blend 4 - Chapter 4元件重复运用的观念 本章将教大家Blend元件重复运用的观念,这在Silverlight设计中是非常重要的,另外加码赠送渐层工具 ...
- 解决手机提示TF卡受损需要格式化问题
昨晚因为上QQ FOR PAD后.关机.结果又杯具了.上次无意看到一个SD卡修复命令,收藏起来了.一试,还真管用.现把它写出来.分享给大家.以后出现SD卡受损,千万不要再格式化内存卡了.修复过程:1. ...
- SQL Server Update 所有表的某一列(列名相同,类型相同)数值
); WITH T AS (SELECT SchemaName = c.TABLE_SCHEMA, TableName = c.TABLE_NAME, ColumnName = c.COLUMN_NA ...
- 使用MinGW编译Boost
1.下载Boost(http://www.boost.org) 我目前用的是1.61.0版本 2.将MinGW下的bin目录完整路径设置到系统环境变量Path中,保证cmd命令行能找到gcc,g++等 ...