分布式天花板?阿里百万架构师的ZK+Dubbo笔记,颠覆认知
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式锁服务、集群管理、生成分布式唯一ID等。
Apache Dubbo 是一款高性能、轻量级的开源Java RPC框架,提供面向接口代理的高性能RPC调用、智能负载均衡、服务自动注册和发现、运行期流量调度、可视化服务治理和运维等功能。
作为架构师必须掌握的分布式架构技术, 你的我(雷锋)在这个星期费心费力给大家着重收集并整理了这份关于ZooKeeper+Dubbo技术栈的源码+笔记+项目实战的资料。
以上就是资料包含的内容,下面我会展示目录和详细内容截图,有需要完整版源码+笔记的朋友,只有点赞+关注,然后在我的主页私信分布式即可免费领取!!
一:Zookeeper篇
1分布式概述
2ZK概述
3分布式CAP
4一致性实现
5ZK单机&集群搭建
6ZK快速入门
7ZK源码解析
8ZK应用场景
9分布式锁和队列
二:Dubbo篇
1RPC核心
2手写RPC
3Dubbo高可用
4Dubbo IO模型
5Dubbo 架构
6源码解析
第一部分Nginx能帮我们做什么
第二部分如何编写> 没有影响的,甚至序列化可以自己自定义实现,跟jdk版本没关系。 顺便分享下资料。 37套精品Java架构师高并发高性能高可用分布式集群电商缓存
先说说我们团队要做的项目框架,很简单重在实现基于zookeeper的dubbo注册。
框架:springmvc+spring+zookeeper+dubbo
项目分三层,model存放数据,view页面展示、controller下面具体逻辑实现。通过dubbo消费方和供应方注册,供应方给消费方暴露接口,供消费方调用。
工程部署需要配置文件有:
applicationContext-dubboxml
{--
<--
消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样
-->
<--
使用zookeeper注册中心暴露服务地址
-->
<--
生成远程服务代理,可以像使用本地bean一样使用demoService
-->
<dubbo:reference
id="demoService"
interface="comunjdubbotestproviderDemoService"
/>
--}
dubboproperties
{--
<--基于ZooKeeper的Dubbo注册中心直接部署tomcat,修改WEB-INF下文件-->
dubboregistryaddress=zookeeper://127001:2181
dubboadminrootpassword=root
dubboadminguestpassword=guest
--}
zoo_samplecfg
{--
zookeeper/conf/下,修改zoo_samplecfg为zoocfg,启动bin/下zkServercmd
--}
因为引入dubbo,摒弃了原有Web
Service项目的wdls暴露,由于项目依赖关系严重,项目使用maven构建,通过Maven
pomxml三维坐标引入jar包,调用dubbo暴露接口开发。
性能测试工具:LoadRunner、jmeter
接口测试工具:LoadRunner、jmeter、soapUI、Spotlight
安全测试工具:NStalker-Web、AppScan、TamperIESetup
自动化工具
:BadboyInstaller、QTP
/
@author
wonter
<b>描述:</b>
一天学一个模式
更新中,请关注我的博客!
<b>博客:</b>
>Dubbo有很长一段时间的发展史,2018年的时候不知道为什么阿里暂更了一年,之后又重新开始更新。之前一直是阿里在维护,后面阿里把它捐给了Apache基金会,由Apache来维护,26x之前,maven中的包名都是alibaba,270之后包名改成了apache,其中整合入系统中有一些差异;发展史:
Dubbo的原理什么的以及它的组成这里就不扯了,直接说说dubbo的项目结构吧。
基本的Dubbo项目组成分为三个部分:
接口层这里自定义了接口,实现部分由服务提供层来实现。建议将model也放在接口层中,接口层中对dubbo没有相关依赖,在这里pom就不提供了。目前比较多的解决方案有几个:
一、结合MQ消息中间件实现的可靠消息最终一致性
二、TCC补偿性事务解决方案
三、最大努力通知型方案
第一种方案:可靠消息最终一致性,需要业务系统结合MQ消息中间件实现,在实现过程中需要保证消息的成功发送及成功消费。即需要通过业务系统控制MQ的消息状态
第二种方案:TCC补偿性,分为三个阶段TRYING-CONFIRMING-CANCELING。每个阶段做不同的处理。
TRYING阶段主要是对业务系统进行检测及资源预留
CONFIRMING阶段是做业务提交,通过TRYING阶段执行成功后,再执行该阶段。默认如果TRYING阶段执行成功,CONFIRMING就一定能成功。
CANCELING阶段是回对业务做回滚,在TRYING阶段中,如果存在分支事务TRYING失败,则需要调用CANCELING将已预留的资源进行释放。
第三种方案:最大努力通知xing型,这种方案主要用在与第三方系统通讯时,比如:调用微信或支付宝支付后的支付结果通知。这种方案也是结合MQ进行实现,例如:通过MQ发送>
0条评论