分布式系统技术概要

现在互联网应用,尤其是大型互联网公司的应用已经发展为大规模或超大规模的分布式的,集群化的应用。而中小规模的分布式应用也已广泛出现在各个领域。未来,随着云计算向社会生活的方方面面去渗透,分布式应用将更加地普及。所以,任何一个要从事服务器端应用开发的人员,都有具备对分布式应用的基本认识。

本文将简要介绍分布式应用的各基本领域的相关技术。这些技术在一个分布式应用中都会有或多或少的设计,即便暂时没有涉及到,设计人员也要有所考虑,保证系统有进一步发展的空间。

1. 集群管理

关键字:Apache Zookeeper、Paxos 算法、Etcd、Raft、Apache Curator

在一个分布式系统中,存在着一些和系统运行,以及重要业务紧密相关的数据,如节点相关的数据、应用服务和数据服务相关的数据等,这些数据对集群的正常运行至关重要。

  • 服务器节点相关数据:服务器的地址、状态

  • 服务相关数据:服务的IP、端口、版本、协议、状态、主备节点信息

  • 数据库相关数据:路由规则、分库分表规则

这些重要的数据在分布式系统中存在着多份拷贝,以保证高可用性。但这产生了另外一个问题,就是如何保证这些数据的一致性。因为这些数据是如此重要,不一致的数据会产生严重甚至致命的错误。在一个小规模的分布式系统中,因为可以用一两台服务器去做集群管理,所以数据的一致性容易实现。但是对于一个大规模的分布式系统,一两台集群配置管理服务器无法支撑整个集群所带来的大量并发读写操作,所以要使用几台、十几台,甚至更多的服务器去支撑这些请求。此时,就需要一个保持这些服务器中集群配置数据的一致性的方案了。

这众多方案中,Paxos 算法算是最佳方案之一。关于 Paxos 算法的内容,不在这里详述了。简单描述就是集群中各节点相互以提议的方式通信(对一项数据的修改),提议中带有不断增加的 ID 号,节点永远同意当前 ID 号最大的提议,并拒绝其它提议。当有半数以上节点同意一项提议之后,这个提议便被整个节点所接受并采纳。

1.1. Apache Zookeeper

Paxos 算法的语言表述看上去不难,但是其中的技术难点并不少。好在现在已经有了很多的解决方案,其中最为著名的便是 Apache Zookeeper。Zookeeper 不仅可以用来存储配置数据,还可以用来实现集群 Master 选举、分布式锁等场景。Apache Curator 是 Zookeeper 的客户端,可以简化对 Zookeeper 的使用,实现各式的场景。

Zookeeper 是一个分布式的服务管理框架。Zookeeper 的典型的应用场景包括配置文件的管理、集群管理、分布式锁、Leader 选举、队列管理等。Zookeeper 可工作在集群模式下,zoo.cfg 中记录着集群中所有 Zookeeper 服务器的地址,每个服务器有自己唯一的 ID。同时,每个服务器在自己的 dataDir 目录下还要有一个 myid 文件,以标示自己的 ID。在 Zookeeper 中,数据以树状的结构存储,类似于 LDAP 数据库。

现在类似 Zookeeper 的项目还有使用 go 语言实现的 Etcd。

原文链接

分布式应用的各基本领域及开发技术概要相关推荐

  1. 【音视频开发技术概要】技术背景、学习路线、业界大拿、岗位行业分析

    音视频的知识纷繁复杂,自学非常困难,既需要非常扎实的基础知识,又需要有很多的工程经验:本文就从音视频开发,开源框架,视频,业界大神,书籍推荐,就业方向分析,为广大开发者学习音视频技术提供便利. 首先我 ...

  2. Intel 软件开发技术概要与在开发中的运用(讲解并行计算,多核心优化,以及Intel开发工具)

    英特尔有下列牛逼的开发工具与辅助套件,如何应用到实践中去,让自己的软件变得更加大,软件开发更加容易,软件拥有更多的性能呢 英特尔® 图形性能分析器 3.0 英特尔® Cloud Builder 英特尔 ...

  3. 转_前端开发技术概要

    原文:http://www.2008sc.cn/blog/article.asp?id=82 1.JavaScript 中的内存泄露模式 http://www.ibm.com/developerwor ...

  4. python与php结合开发_PHP结合Python的WEB开发技术

    许多人在纠结WEB快速开发究竟是采用PHP,还是采用Python,二者同样是脚本语言,但特点鲜明: PHP: Web专用开发利器,有10多年的经验积累,但其他领域基本不涉及,扩展性不强,企业应用少. ...

  5. MAD,现代安卓开发技术:Android 领域开发方式的重大变革~

    Android 诞生已久,其开发方式保持着高频更迭,相较于早期的开发方式已大不相同,尤其是近几年 Google 热切推崇的 MAD 开发技术.其实很多开发者已经有意或无意地正在使用这门技术,借着 20 ...

  6. Vista开发之旅:微软开发技术20年回顾

    自Windows 1.0问世到今年11月份,微软Windows操作系统已经走过了它辉煌的二十一年.沧海桑田一瞬间,让我们再次追随Windows的踪迹,了解微软核心技术发展史,评析她当时所处的位置并展望 ...

  7. 山东大学服务开发技术期末复习

    山东大学服务开发技术期末复习 课后习题 section 1 1.1 请简要论述为什么引入软件服务?1.2 简述 W3C 定义的 Web 服务技术栈主要组成.1.3 简述面向服务架构的三个角色和三个操作 ...

  8. Web开发技术的历史发展简介

    讨论Web开发技术的历史,当然要先说说Web的起源.众所周知,Web这个Internet上最热门的应用架构是由Tim Berners-Lee发明的.Web的前身是1980年Tim Berners-Le ...

  9. 美国物理超级计算机,美国科学家在物理学的一个分支领域朝着开发超级计算机迈进了一步。这一分支领域研究的是人眼看不见的粒子。...

    美国科学家在物理学的一个分支领域朝着开发超级计算机迈进了一步.这一分支领域研究的是人眼看不见的粒子. 这些科学家在<自然>杂志上发表文章称,"用量子信息学的语言来说,我们已经制造 ...

最新文章

  1. OPatch cannot find a valid oraInst.loc file to locate Central Inventory
  2. 关于 mysql 在联合查询时,使用 concat 拼接查询条件
  3. Message popover
  4. Multivariate Linear Regression的参数估计
  5. Hadoop hive sqoop zookeeper hbase生产环境日志统计应用案例(hadoop篇)
  6. vue 如何处理两个组件异步问题_Vue异步组件处理路由组件加载状态的解决方案...
  7. ArcGIS API for JavaScript实现分图层显示
  8. 1622: [Usaco2008 Open]Word Power 名字的能量
  9. mysql学生管理系统背景_MySql学习之路1 背景介绍
  10. php抽奖的数字滚动器,JS数字抽奖游戏实现方法
  11. 【编程入门】密码破译
  12. git 无法上传vender目录(其中一个包被当成submodule)
  13. mac系统升级后git使用不了
  14. Design Compiler工具学习笔记(6)
  15. SpringCloud 微服务(一)
  16. 第2章 IoC的基本概念
  17. 龙贝格求积分算法例题_数值分析实习作业之龙贝格求积
  18. practice是什么意思_practice是什么意思|practice的中文翻译 - 医学词典
  19. qLabel 字体大小不受控制
  20. 【C语言】C语言复习笔记

热门文章

  1. cad单位_1分钟带你摸透CAD中的各种比例!这些比例你都搞清楚了吗?
  2. 永顺泰深交所上市:年营收30亿募资8.6亿 市值49亿
  3. PSCAD V4.6电路设计与仿真从入门到精通
  4. 数据结构专题 -- 哈希思想详解
  5. 宜信陈欢:数字普惠金融需避免本末倒置、消费者隐私伤害
  6. “行泊一体”的火爆与现实困境
  7. 房价预测5--Regression--Boosting(AdaBoost / xgboost)
  8. 读《阿里巴巴java开发手册》有感。1.3.0
  9. Page8:对偶原理以及结构分解[Linear System Theory]
  10. vue使用element ui自定义手机验证规则