分布式服务协调框架ZooKeeper

分布式服务协调框架ZooKeeper

閱讀本文約花費: 13 (分鐘) 文章重点介绍了ZooKeeper数据模型,ZooKeeper典型的应用场景以及Zookeeper service网络结构,希望对大家有帮助。 。 ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务框架,它可以实现同步服务,配置维护、命名服务、分布式锁等分布式基础服务。 ZooKeeper数据模型 Zookeeper提供基于类似于文件系统的目录节点树方式的数据存储,但是Zookeeper并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。 数据模型 Zookeeper会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统,如图: 与Linux文件系统不同的是,Zookeeper的数据节点称为znode,znode是Zookeeper中数据的最小单元,每个znode都可以保存数据,同时还可以挂载子节点,因此构成了一个层次化的命名空间,称为树。 znode结构 每个znode节点既像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。每个znode由3部分组成: stat:状态信息, 描述该Znode的版本, 权限等信息 data:与该znode关联的数据 children:该znode下的子…

Read More Read More

Zookeeper典型应用场景介绍

Zookeeper典型应用场景介绍

閱讀本文約花費: 13 (分鐘) 本文主要通过几个例子来具体的说明Zookeeper在特定场景下的使用方式 ,希望对您的学习有所帮助。 1.前言 之前自己写了一些关于Zookeeper的基础知识,Zookeeper作为一种协调分布式应用高性能的调度服务,实际的应用场景也非常的广泛,这里主要通过几个例子来具体的说明Zookeeper在特定场景下的使用方式(下面的这些功能估计consul和etcd也能实现,以后学到了再说吧)。 2.具体应用 2.1.一致性配置管理 我们在开发的时候,有时候需要获取一些公共的配置,比如数据库连接信息等,并且偶然可能需要更新配置。如果我们的服务器有N多台的话,那修改起来会特别的麻烦,并且还需要重新启动。这里Zookeeper就可以很方便的实现类似的功能。 2.1.1.思路 将公共的配置存放在Zookeeper的节点中 应用程序可以连接到Zookeeper中并对Zookeeper中配置节点进行读取或者修改(对于写操作可以进行权限验证设置),下面是具体的流程图: 2.1.2.事例 数据库配置信息一致性的维护 配置类: public class CommonConfig implements Serializable{// 数据库连接配置private String dbUrl;private String username;private String pas…

Read More Read More

Erlang (programming language)

Erlang (programming language)

閱讀本文約花費: 1 (分鐘)Erlang (programming language) From Wikipedia, the free encyclopediaJump to navigationJump to search Paradigms Multi-paradigm: concurrent, functional Designed by Joe ArmstrongRobert VirdingMike Williams Developer Ericsson First appeared 1986; 34 years ago Stable release 23[1] / 13 May 2020; 43 days ago Typing discipline Dynamic, strong License Apache License 2.0 Filename extensions .erl, .hrl Website www.erlang.org Major implementations Erlang Influenced by Lisp, PLEX,[2] Prolog, Smalltalk Influenced Akka, Cloj…

Read More Read More

ZooKeeper实际应用案例-开发实战

ZooKeeper实际应用案例-开发实战

閱讀本文約花費: 12 (分鐘) 本文主要介绍通过实际工作中的一个例子,讲解zookeeper是如何帮我解决分布式问题,以此引导大家发现自己系统中可以应用zookeeper的场景。 项目背景介绍 首先给大家介绍一下本文描述项目的情况。这是一个检索网站,它让你能在几千万份复杂文档数据中检索出你所需要的文档数据。为了加快检索速度,项目的数据分布在100台机器的内存里,我们称之为数据服务器。除了数据,这100台机器上均部署着检索程序。这些server之外,还有数台给前端提供接口的搜索server,这些机器属一个集群,我们称之为检索服务器。当搜索请求过来时,他们负责把搜索请求转发到那100台机器,待所有机器返回结果后进行合并,最终返回给前端页面。结构如下图: 面临问题 网站上线之初,由于数据只有几百万,所以数据服务器只有10多台。是一个规模比较小的分布式系统,当时没有做分布式系统的协调,也能正常工作,偶尔出问题,马上解决。但是到了近期,机器增长到100台,网站几乎每天都会出现问题,导致整个分布式系统挂掉。问题原因如下: 数据服务器之前没有做分布式协调。对于检索服务器来说,并不知道哪些数据服务器还存活,所以检索服务器每次检索,都会等待100台机器返回结果。但假如100台数据服务中某一台死掉了,检索服务器也会长时间等待他的返回。这导致了检索服务器积累了大量的请求,最终被压垮。当所有的检索服务器…

Read More Read More

分布式服务框架Zookeeper介绍、原理及应用

分布式服务框架Zookeeper介绍、原理及应用

閱讀本文約花費: 18 (分鐘) 文章主要介绍了Zookeeper基础 、Zookeeper设计目的、Zookeeper工作原理以及相关的应用。 Zookeeper简介 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等等。 Zookeeper基本概念 zk角色 Zookeeper中的角色主要有以下三类,如下表所示:zookeeper角色 zk service网络结构 Zookeeper的工作集群可以简单分成两类,一个是Leader,唯一一个,其余的都是follower,如何确定Leader是通过内部选举确定的。 Leader和各个follower是互相通信的,对于zk系统的数据都是保存在内存里面的,同样也会备份一份在磁盘上。 对于每个zk节点而言,可以看做每个zk节点的命名空间是一样的,也就是有同样的数据。(可查看下面的树结构) 如果Leader挂了,zk集群会重新选举,在毫秒级别就会重新选举出一个Leaer。 集群中除非有一半以上的zk节点挂了,zk service才不可用。 zk命名空间结构 Zookeeper的命名空间就是zk应用的文件系统,它和linux的文件系统很像,也是树状,这样就可以确定每个路径都是唯一的,对于命名空…

Read More Read More

分布式服务框架 Zookeeper入门学习

分布式服务框架 Zookeeper入门学习

閱讀本文約花費: 17 (分鐘) 本文主要讲解了ZooKeeper是什么,它的角色及架构,ZooKeeper数据模型Znode,ZooKeeper服务中操作,Zookeeper下载安装与配置和命令相关。 ZooKeeper介绍 ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务,是Google的Chubby一个开源的实现。 提供功能: 命名服务 配置管理 集群管理 分布式锁 队列管理 特性: 顺序一致性:从同一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到ZooKeeper中。 原子性:所有事务请求的结果在集群中所有机器上的应用情况是一致的,也就是说要么整个集群所有集群都成功应用了某一个事务,要么都没有应用,一定不会出现集群中部分机器应用了该事务,而另外一部分没有应用的情况。 单一视图:无论客户端连接的是哪个ZooKeeper服务器,其看到的服务端数据模型都是一致的。 可靠性:一旦服务端成功地应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会被一直保留下来,除非有另一个事务又对其进行了变更。 实时性:通常人们看到实时性的第一反应是,一旦一个事务被成功应用,那么客户端能够立即从服务端上读取到这个事务变更后的最新数据状态。这里需要注意的是,ZooKeeper仅仅保证在一定的时间段内,客户端最终一定能够从服务端上读取到最新的…

Read More Read More

从心出发,我想说……

从心出发,我想说……

閱讀本文約花費: 6 (分鐘)2013年与大部分朋友结缘于天涯,至今已经7年有余,有悲有喜,总体而言,我的粉丝群体我一直都认为是素质最高的群体之一,7年前初涉网络,总觉得自己应该保持神秘感,但7年下来,结识了很多很多的朋友,比如熟知的歌姐,比如微博里面的花花大将,小脸猫痴大头鱼等等等等。人生如此多惦记的朋友,岂不快哉? 2018年因为二胎没有做好足够的准备和对孩子的过分保护,导致精神高度紧张,抑郁了一年有余,期间把自己藏起来,曾一度认为一生也就如此黯淡收场,随着娃长大后,逐渐恢复往日的阳光和乐观,且更加珍惜所拥有的一切,经历过低谷走出来的人,我觉得越发珍惜生活,热爱生活,越发承认自己的平凡,也越发更有斗志的去规划和实现自己设立的目标。 2020年,在公众号写了近100篇文章,所思所想都通过文字表述出来,总体而言我认为对诸位还是有所帮助的。 今天我想告诉大家,我正式开始进入职业化投资了,发行的私募产品5月底通过了基金业协会的备案并开始运行,我也正式成为一个阳光私募基金经理。 发行产品基于两点考虑 1、我认为已经到了把自己推出去的时候了 之前写了很多的理论知识,但是效果如何呢?很多人想知道,事实上我也想知道。再就是我认为每一个阶段,都应该有一个规划,7年前,我有一个自己的电商公司,效益还不错,而7年后,我自认为有一套还不错的投资体系,因此我想试试看,也确实到了把自己推销出去的时候了。 …

Read More Read More

个推微服务网关架构实践

个推微服务网关架构实践

閱讀本文約花費: 9 (分鐘) 文章主要介绍了个推微服务体系的架构,以及个推微服务网关提供的主要功能等,希望能对您有所帮助。 在微服务架构中,不同的微服务可以有不同的网络地址,各个微服务之间通过互相调用完成用户请求,客户端可能通过调用N个微服务的接口完成一个用户请求。因此,在客户端和服务端之间增加一个API网关成为多数微服务架构的必然选择。 在个推的微服务实践中,API网关也起着至关重要的作用。一方面, API网关是个推微服务体系对外的唯一入口 ;另一方面, API网关中实现了很多后端服务的共性需求,避免了重复建设 。 个推微服务网关的设计与实现 个推微服务主要是基于Docker和Kubernetes进行实践的。 在整个微服务架构中,最底层的是个推私有部署的Kubernetes集群,在集群之上,部署了应用服务。 个推的应用服务体系共分为三层,最上一层是网关层,接着是业务层,最下面是基础层服务。 在部署应用服务时,我们使用了Kubernetes的命名空间对不同产品线的产品进行隔离。除了应用服务外, Kubernetes集群上还部署了Consul来实现配置的管理、Kube-DNS实现服务注册与发现,以及一些辅助系统来进行应用和集群的管理。 下图是个推微服务体系的架构图。 个推对API网关的功能需求主要有以下几方面: 1. 要支持配置多个产品,为不同的产品提供不同的端口; 2. 动态路由…

Read More Read More

SpringCloud-Zuul服务网关[介绍及入门案例]

SpringCloud-Zuul服务网关[介绍及入门案例]

閱讀本文約花費: 4 (分鐘) 文章介绍了什么是Zuul,入门案例、修改pom文件,修改配置,启动类,希望对大家的学习有所帮助。 一、什么是Zuul zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用。 Zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。 zuul的例子可以参考netflix在github上的 simple webapp,可以按照netflix 在github wiki 上文档说明来进行使用。 二、解决了什么问题 三、入门案例 1.创建项目 创建一个SpringBoot项目 2.修改pom文件 注意添加zuul的依赖 <dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Dalston.SR5</version><type>pom</type…

Read More Read More

微服务网关

微服务网关

閱讀本文約花費: 14 (分鐘) 本文阐述微服务的API网关的一些主要功能,并例举了几种常用的网关,最后结合spring cloud微服务框架对网关做一些简要的论述。 一、前言 随着微服务的兴起,基于其业务耦合性低、负载能力强、服务边界清晰等优点,大家纷纷使用微服务架构来实现新系统或进行老系统的改造。微服务在带来诸多好处的同时,也有一些问题需要解决,比如:如何做到有效拆分、减少服务间调用,如何统一管理所有服务的接口,如何进行自动化部署等。本文阐述微服务的API网关的一些主要功能,并例举了几种常用的网关,最后结合spring cloud微服务框架对网关做一些简要的论述。 二、API网关简介 API网关,顾名思义,是统一管理API的一个网络关口、通道,是整个微服务平台所有请求的唯一入口,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。下图为微服务架构的简单示意图,网关起到的作用一目了然。 三、API网关的作用 为微服务云平台提供统一的入口是API网关最主要的用途,除此之外,网关还可承担认证授权、访问控制、路由、负载均衡、缓存、日志、限流限额、转换、映射、过滤、熔断、注册、服务编排、API管理、监控、统计分析等等非业务性的功能。 所以实现或者选择一个好的API网关,是建设容器云和微服务体系中一个至关重要的事项。这也决定了API网关的部署,要尽可能的减少接触面…

Read More Read More