分布式开发

Zookeeper简单理解

匿名 (未验证) 提交于 2019-12-03 00:38:01
ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题 1.1 Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务。包含一个简单的原语集,分布式应用程序可以基于她实现同步服务,配置维护和命名服务等。 1.2 为什么使用zookeeper 1)大部分分布式应用需要一个主控、协调或控制器来管理物理分布的子进程(如资源、任务分配等) 2)大部分应用需要开发私有的协调程序,缺乏一个通用的机制。 3)协调程序的反复编写浪费,且难以形成通用伸缩性好的协调器 4)zookeeper 提供通用的分布式锁服务,用以协调分布式应用。 1.3 zookeeper使用 1.4 zookeeper的特性 Zookeeper是简单的 Zookeeper是富有表现力的 Zookeeper具有高可用性 Zookeeper采用松耦合交互方式 Zookeeper是一个资源库 1.6 zookeeper的数据模型 1.7 zookeeper的节点 1.8 zookeeper的角色 文章来源: Zookeeper简单理解

分布式 | Dubbo 架构设计详解

匿名 (未验证) 提交于 2019-12-03 00:37:01
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。 总体架构 Dubbo的总体架构,如图所示: Dubbo框架设计一共划分了10个层,而最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层。图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口, 位于中轴线上的为双方都用到的接口。点击这里可以了解更多架构设计图。 下面,结合Dubbo官方文档,我们分别理解一下框架分层架构中,各个层次的设计要点: 服务接口层(Service):该层是与实际业务逻辑相关的,根据服务提供方和服务消费方的业务设计对应的接口和实现。 配置层(Config):对外配置接口,以ServiceConfig和ReferenceConfig为中心,可以直接new配置类,也可以通过spring解析配置生成配置类。 服务代理层(Proxy):服务接口透明代理,生成服务的客户端Stub和服务器端Skeleton

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

匿名 (未验证) 提交于 2019-12-03 00:30:01
Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。不过,略有遗憾的是,据说在淘宝内部,dubbo由于跟淘宝另一个类似的框架HSF(非开源)有竞争关系,导致dubbo团队已经解散(参见 http://www.oschina.net/news/55059/druid-1-0-9 Motan是新浪微博开源的一个Java 框架。它诞生的比较晚,起于2013年,2016年5月开源。Motan 在微博平台中已经广泛应用,每天为数百个服务完成近千亿次的调用。 rpcx是Go语言生态圈的Dubbo, 比Dubbo更轻量,实现了Dubbo的许多特性,借助于Go语言优秀的并发特性和简洁语法,可以使用较少的代码实现分布式的RPC服务。 gRPC是Google开发的高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。本身它不是分布式的,所以要实现上面的框架的功能需要进一步的开发。 thrift是Apache的一个跨语言的高性能的服务框架,也得到了广泛的应用。 后续还会增加更多的 RPC 框架的比较,敬请收藏本文网址 以下是它们的功能比较: 对于RPC的考察,

Spring Cloud,分布式,高并发,kafka,数据结构。海量电子书免费获取。

匿名 (未验证) 提交于 2019-12-03 00:30:01
《微服务分布式构架开发实战》 《Elasticsearch大数据搜索引擎》 《ZooKeeper:分布式过程协同技术详解》 《Kafka权威指南》 《图解数据结构-使用Java》 《大数据架构商业之路从业务需求到技术方案 《循序渐进学Docker》 -----------------------------关注公众号免费获取海量学习视频及电子书--------------------------- 文章来源: Spring Cloud,分布式,高并发,kafka,数据结构。海量电子书免费获取。

作为一名区块链架构师,需要从哪几个纬度去做技术选型?

匿名 (未验证) 提交于 2019-12-03 00:27:02
近年来,美国在 FinTech 领域不断实现技术突破和创新,特别是区块链方向,传统 IT 巨头、金融企业纷纷涉足其中,先后创建了 Hyperledger、R3、EEA 等著名区块链技术与应用联盟,积极地开展开源项目孵化,并在多个应用领域。 为了更好地发展区块链技术,防范技术高速发展所孕育的潜在风险,行业标准刻不容缓。在此背景下,工信部中国电子技术标准化研究院牵头组织中国区块链技术和产业发展论坛主要成员,开展了《信息技术区块链和分布式账本技术参考架构》标准的研制工作。 1. 参考架构的定位 (1)使用通俗的语言来描述区块链和分布式账本技术 (2)区块链或分布式账本技术的理想原型结构 (3)描述适用于区块链技术的标准范围 2. 参考架构的视角 可以从业务、法律或技术视角来看待区块链技术 a)从业务角度来看,区块链是一个在相互认同的参与者之间,促进价值、资产或其他实体转移的交换网络 b)从法律角度来看,区块链账本上的交易是经过验证、不可否认且无法篡改的,它不需要中介或第三方参与。 c)从技术角度来看,区块链是一个引用其他数据存储作为账本数据、全局复制的分布式账本。 3. 参考架构的设计理念 首先,从分布式应用架构师和开发人员角度来设计一种区块链平台参考架构,如下图: 它包含了 6 个层次:1)基础设施 2)安全 3)数据 4)账本 5)开发 6)分布式应用 ,我们一一对照解读一下。 (1

最新后端架构师技术图谱

匿名 (未验证) 提交于 2019-12-03 00:21:02
最新后端架构师技术图谱 深呼吸,慢慢学 ,技术长路漫漫… 数据结构 二叉树 完全二叉树 平衡二叉树 二叉查找树(BST) 红黑树 B-,B+,B*树 LSM 树 队列 集合 链表、数组 字典、关联数组 树 BitSet 常用算法 KPM 算法 选择排序 冒泡排序 插入排序 快速排序 归并排序 希尔排序 堆排序 计数排序 桶排序 基数排序 二分查找 Java 中的排序工具 排序、查找算法 布隆过滤器 字符串比较 深度优先、广度优先 贪心算法 回溯算法 剪枝算法 动态规划 朴素贝叶斯 推荐算法 最小生成树算法 最短路径算法 并发 Java中的锁和同步类 公平锁 & 非公平锁 悲观锁 & 乐观锁 & CAS ABA 问题 CopyOnWrite容器 RingBuffer 可重入锁 & 不可重入锁 互斥锁 & 共享锁 死锁 事务 ACID 特性 事务的隔离级别 多线程 线程安全 一致性、事务 锁 操作系统 计算机原理 进程 线程 协程 Linux 设计模式 康威定律 设计模式的六大原则 23种常见设计模式 应用场景 单例模式 责任链模式 MVC IOC AOP UML 微服务思想 运维 & 统计 & 技术支持 OpenStack Docker KVM Xen OpenVZ TDD 理论 单元测试 压力测试 全链路压测 A/B Test Ansible puppet chef Jenkins

分布式配置中心Apollo――QuickStart

匿名 (未验证) 提交于 2019-12-02 23:56:01
剥离配置文件,实现动态修改,自动更新。 【假设没有分布式配置中心,修改配置文件后都需要重启服务,对于数量庞多的微服务开发来说,就会非常繁琐】 disconf(依赖zookeeper) zookeeper diamond (阿里巴巴) Apollo Redis xxl-job Apollo除了功能完备之外,在国内的普及度也相当广泛,也就意味着国内Apollo的生态非常活跃。虽然中国式过马路的行为并不提倡,但群众的眼睛有时还是雪亮的。 ʵս 环境准备: 阿里云CentOS7.6 jdk1.8 yum search jdk yum install java-1.8.0-openjdk.x86_64(可选) java -version 配置yum源 wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm yum localinstall mysql57-community-release-el7-8.noarch.rpm 安装mysql yum install mysql-community-server 启动mysql systemctl start mysqld systemctl restart mysqld 查看启动状态: systemctl status mysqld 设置开机自启

面试官们“爱不释手”的分布式系统架构到底是个什么鬼?

匿名 (未验证) 提交于 2019-12-02 23:42:01
目录: 一、什么是分布式系统? 二、为什么要走分布式系统架构? 三、系统如何进行拆分? 四、分布式之后带来的技术挑战? 一、什么是分布式系统? 在谈分布式系统架构前,我们先来看看,什么是分布式系统? 假设原来我们有一个系统,代码量30多万行。现在拆分成20个小系统,每个小系统1万多行代码。 原本代码之间都是直接基于Spring框架走JVM内存调用,现在拆开来,将20个小系统部署在不同的机器上,然后基于分布式服务框架(比如dubbo)搞一个rpc调用,接口与接口之间通过网络通信来进行请求和响应。 所以分布式系统很重要的特点就是服务间要跨网络进行调用,我们来看下面的图: 此外,分布式系统可以大概可以分成两类。 1. 底层的分布式系统。 比如hadoop hdfs(分布式存储系统)、spark(分布式计算系统)、storm(分布式流式计算系统)、elasticsearch(分布式搜索系统)、kafka(分布式发布订阅消息系统)等。 2. 分布式业务系统 分布式业务系统,把原来用java开发的一个大块系统,给拆分成多个子系统,多个子系统之间互相调用,形成一个大系统的整体。 举个例子,假设原来你做了一个OA系统,里面包含了权限模块、员工模块、请假模块、财务模块,一个工程,里面包含了一堆模块,模块与模块之间会互相去调用,1台机器部署。 现在如果你把他这个系统给拆开,权限系统,员工系统,请假系统

Git、GitHub、GitLab三者之间的联系以及区别

こ雲淡風輕ζ 提交于 2019-12-02 23:39:45
在讲区别以及联系之前先简要的介绍一下,这三者都是什么(本篇文章适合刚入门的新手,大佬请出门左转) 1.什么是 Git? Git 是一个版本控制系统。 版本控制是一种用于记录一个或多个文件内容变化,方便我们查阅特定版本修订情况的系统。 以前在没有使用版本控制的时候,我们通常在我们的项目根目录下这样命名项目: project_v1、project_v1.1、project_v2等等,通过这种方式记录我们项目的不同版本的修改, 有的时候我们还会在不同版本的文件中写一个说明,记录此版本项目新增、修改,删除等操作。 这样的操作是很繁杂的,有的时候还可能因为一些非人为因素导致文件丢失这样的事故。 有了版本控制系统,我们就不用再手动进行一些繁杂的操作,并且对于文件丢失这种事故我们也不 用再担心,你可以随便回到历史记录的某个时刻。 早期出现的版本控制系统有:SVN、CVS等,它们是集中式版本控制系统,都有一个单一的集中管理 的服务器,保存所有文件的修订版本,而协同合作的开发人员都通过客户端连接到这台服务器,取出 最新的文件或者提交更新。 从网上找了一张图,展示一下它们的原理: 而我们的主角 Git 是分布式版本控制系统。Git 已经成为越来越多开发者的青睐,因为分布式的优势是很显著的。 2.说一下集中式和分布式版本控制系统的区别: 集中式版本控制系统,版本库是集中存放在中央服务器的,工作的时候

设计一个分布式RPC框架

匿名 (未验证) 提交于 2019-12-02 23:05:13
提前先祝大家春节快乐!好了,先简单聊聊。 我从事的是大数据开发相关的工作,主要负责的是大数据计算这块的内容。最近Hive集群跑任务总是会出现Thrift连接HS2相关问题,研究了解了下内部原理,突然来了兴趣,就想着自己也实现一个RPC框架,这样可以让自己在设计与实现RPC框架过程中,也能从中了解和解决一些问题,进而让自己能够更好的发展(哈哈,会不会说我有些剑走偏锋?不去解决问题,居然研究RPC。别急,这类问题已经解决了,后续我也会发文章详述的)。 原理图上我已经标出来流程序号,我们来走一遍: ① Client以本地调用的方式调用服务 ② Client Stub接收到调用后,把服务调用相关信息组装成需要网络传输的消息体,并找到服务地址(host:port),对消息进行 编码 后交给Connector进行发送 ③ Connector通过网络通道发送消息给Acceptor ④ Acceptor接收到消息后交给Server Stub ⑤ Server Stub对消息进行 解码 ,并根据解码的结果通过 反射 调用本地服务 ⑥ Server执行本地服务并返回结果给Server Stub ⑦ Server Stub对返回结果组装打包并 编码 后交给Acceptor进行发送 ⑧ Acceptor通过网络通道发送消息给Connector ⑨ Connector接收到消息后交给Client Stub