Observer

Zookeeper面试常见的11个连环炮

核能气质少年 提交于 2021-01-18 22:55:48
面试的时候,面试官只要看到你简历的上写的有Zookeeper(熟悉、掌握)之类,那你至少要准备接下来的11连问。 NO1:说说zookeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现(Chubby是不开源的),它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户 。 Zookeeper一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心,服务生产者将自己提供的服务注册到Zookeeper中心,服务的消费者在进行服务调用的时候先到Zookeeper中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据,简单示例图如下: NO2:了解Zookeeper的系统架构吗? ZooKeeper 的架构图中我们需要了解和掌握的主要有: (1)ZooKeeper分为服务器端(Server) 和客户端(Client),客户端可以连接到整个 ZooKeeper服务的任意服务器上(除非 leaderServes 参数被显式设置, leader 不允许接受客户端连接)。 (2)客户端使用并维护一个 TCP 连接,通过这个连接发送请求、接受响应、获取观察的事件以及发送心跳。如果这个 TCP 连接中断

设计模式-观察者模式

扶醉桌前 提交于 2021-01-17 21:04:14
前言 整个9月份基本是在花式加班中疲劳度过的,工作中进步不少,自学进度却放慢了。十一长假,处理完家里的事情后提前一天来了上海,收拢一下思绪,准备迎接下一阶段的工作、学习。不知不觉,2019年只剩下了不到三个月,来自时间的压迫感无时无刻不在,需要抓紧最后的机会,利用好这三四个月的时间。 闲话少叙,这一次我打算将观察者设计模式梳理一下,从JDK中的设计,到Spring中的应用,都会涉及到。心得以及感悟都是一家之言,如有不恰当之处,还望各位道友指正! 一、结合案例分析java中的观察者模式 首先看一下java中已经定义好了的观察者类(Observer)、被观察者类(Observable)的结构: 1 // 观察者类 2 public interface Observer { 3 // 此方法用于定义观察者观察到变化后发生的行为 4 // 第一个参数是被观察者;第二个参数是一个可变对象,方便动态传递某些信息 5 void update(Observable o, Object arg); 6 } 1 public class Observable { 2 // 变动标识,用于判断被观察者是否有变化 3 private boolean changed = false ; 4 // 存放观察者 5 private Vector<Observer> obs; 6 7 public

微众银行案例|容器化实践在金融行业落地面临的问题和挑战

邮差的信 提交于 2021-01-12 07:48:00
本文整理自 微众银行容器负责人陈广镇和李焕 在 Techo 开发者大会云原生专题的分享内容——微众容器化实践。本文主要和大家介绍微众的容器化实践,具体分为三个部分: 里程碑、实践之路,以及未来的规划 。 微众应用容器化项目始于2018年底,我们的生产环境在私有机房上,由于基础设施的差异,容器管理系统主要走自研路线,基于开源产品定制。 2019年1月,微众上线了第一个版本,主要实现多K8s集群管理、以及适配公司现有的基础架构。 2019年2月,微众系统接入TKE服务,用于快速构建开发测试环境,我们大部分业务都需要独立的测试环境,利用腾讯云强大的伸缩能力可以减少我们很多的环境维护工作。 2019年6月,平台优化了核心的调度逻辑,支持了多业务多DCN共享资源池,提升了私有云资源交付的效率。 2019年12月,微众研发了一套统一的通用的运维服务,这套服务收敛过去各式各样的运维工具,并且增加了金融级的安全管理,优化了K8s执行命令的性能问题。 2020年年初,启动了全量应用容器化项目,现在已经有超过一半的实例跑在了容器上。其中就包括我们的核心金融系统。 2020年年中,平台开始了2.0的迭代,包括定制化Harbor、应用画像、通用Operator API等特性。 未来微众在容器化上小小的积累通过开源的方式贡献给社区。 下面部分我们介绍一下容器化实践中遇到的问题和解决方案。 首先

Vue系列(一)——初识Vue.js

非 Y 不嫁゛ 提交于 2021-01-05 01:52:12
Hello小伙伴们大家好,今天要开始Vue系列咯,那么就让我们一起走进Vue的世界吧~第一天让我们与Vue从相识开始。 01.Vue是什么 要问Vue是什么? 官方的说法就是是一套用于构建用户界面的渐进式框架,只关注视图层, 采用自底向上增量开发的设计,通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 感觉不太容易理解,我觉得翻译一下呢就是,用来写页面的一种框架,这种框架有这很简单的API能够帮助用户快速开发,然后使用MVVM的模式,使逻辑、视图分离的这么一个框架。 要说这框架好不好学,兔妞觉得,框架被编出来就是帮助开发者开发的,要是比原生的JavaScript还恶 心,谁还用它了,你说是不是,所以定是较原生简单的。 Vue最主要的几个特点就是: 1)MVVM模式 2)双向绑定 3)虚拟DOM 02.MVVM模式 这个图就是一个MVVM的模型,View指的就是视图层,主要用于表现DOM节点; Model 就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model ; ViewModel 就是与界面(view)对应的Model。因为,数据库结构往往是不能直接跟界面控件一一对应上的,所以,需要再定义一个数据对象专门对应view上的控件。而ViewModel的职责就是把model对象封装成可以显示和接受输入的界面数据对象, 它是Vue.js的核心

MVVM的KVO属性绑定自定义

て烟熏妆下的殇ゞ 提交于 2021-01-01 03:04:29
我们在使用MVVM设计模式的时候会需要监听数据模型的属性变化,使用RAC是比较简洁好用的,但是如果不想引入RAC这样重量级的框架,那我们该如何编写符合监听需求的框架呢,我们的思路是封装系统的KVO,封装添加和删除监听的代码,改变的值通过block返回。 1、首先我们定义一个单例KVOController来统一管理属性监听,每个监听都有个回调。 typedef void(^ObserverKeyPathDidChange)(id value); @interface KVOController : NSObject + (instancetype)shareInstance; - (void)mj_observeObject:(NSObject *)object forKeyPath:(NSString *)keyPath observerKeyPathDidChange:(ObserverKeyPathDidChange)observerKeyPathDidChange; @end #import "KVOController.h" #import <objc/runtime.h> #import "MJObserver.h" #import "NSObject+OBExtention.h" @interface KVOController () @property

深入浅出 ZooKeeper

半城伤御伤魂 提交于 2020-12-30 17:01:33
ZooKeeper 是一个分布式协调服务 ,由 Apache 进行维护。 ZooKeeper 可以视为一个高可用的文件系统。 ZooKeeper 可以用于发布/订阅、负载均衡、命令服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能 。 一、ZooKeeper 简介 1.1 ZooKeeper 是什么 ZooKeeper 是 Apache 的顶级项目。 ZooKeeper 为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如统一命名服务、配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性方面,ZooKeeper 并没有直接采用 Paxos 算法,而是采用了名为 ZAB 的一致性协议。 ZooKeeper 主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储。但是 ZooKeeper 并不是用来专门存储数据的,它的作用主要是用来 维护和监控存储数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。 很多大名鼎鼎的框架都基于 ZooKeeper 来实现分布式高可用,如:Dubbo、Kafka 等。 1.2 ZooKeeper 的特性 ZooKeeper 具有以下特性: 顺序一致性: 所有客户端看到的服务端数据模型都是一致的;从一个客户端发起的事务请求

深入理解vue

…衆ロ難τιáo~ 提交于 2020-12-29 07:36:32
一  理解vue的核心理念 使用vue会让人感到身心愉悦,它同时具备angular和react的优点,轻量级,api简单,文档齐全,简单强大,麻雀虽小五脏俱全. 倘若用一句话来概括vue,那么我首先想到的便是官方文档中的一句话: Vue.js(读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架。 这句话可能大家并不陌生,但是真正理解这句话的可能并不多,其实,读懂了这句话,也就明白了vue的核心理念. 那么,怎样理解什么是渐进式框架?在这之前,我们首先要理解什么是框架.在最初的前端开发中,为了完成某个功能,我们需要通过js在HTML页面中获得dom节点,随后获得dom节点中的文本内容或者在dom节点上添加事件,进行一系列的程序操作,但是,如果任务量很大的情况下,代码会随着业务的增加而变得臃肿和混乱,在现实的开发中,负责的逻辑和巨大的开发量,是原生js无法完成的. 这个时候,开发人员将js代码分为了三个板块,数据(Model),逻辑控制(*),视图(View),数据板块只负责数据部分,视图板块负责更改样式,逻辑控制负责联系视图板块和数据板块,这样子有很大的好处,当需求发生变动时,只需要修改对应的板块就好 这种开发模式,就是所谓的MV*结构,我们现在了解的MVC,MVP,MVVM都是MV*的衍生物,对比这几种框架模式,我们会总结出来一个本质的特点

zookeeper详解

独自空忆成欢 提交于 2020-12-27 07:53:42
1.zookeeper是什么? zookeeper是应用于集群或者节点组中的一种分布式协调服务,管理集群中的各个节点,并通过稳健的同步技术维护共享数据。 2.zookeeper基本概念介绍 2.1 zookeeper中的角色 (a)leader:负责进行投票的发起和决议,更新系统状态。 (b)follower:用于接受客户端请求并想客户端返回结果,在选主过程中参与投票。 (c)observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度。 2.2 zookeeper中的节点 Znode被分为持久(persistent)节点,顺序(sequential)节点和临时(ephemeral)节点。 (a)持久节点:zookeeper与在创建该特定znode的客户端断开连接后,持久节点仍然存在。 (b)临时节点:客户端活跃时,临时节点就是有效的。当客户端与ZooKeeper集合断开连接时,临时节点会自动删除。 (c)顺序节点: 顺序节点可以是持久的或临时的。 3.zookeeper工作原理 3.1 zookeeper工作原理 zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式

JAVA设计模式详解

∥☆過路亽.° 提交于 2020-12-24 07:44:16
设计模式有两种分类方法,即根据模式的目的来分和根据模式的作用的范围来分。 根据目的来分 根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式 3 种。 创建型模式: 用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。 GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 结构型模式: 用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。 行为型模式: 用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。 GoF 中提供了模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器等 11 种行为型模式。 根据作用范围来分 根据模式是主要用于类上还是主要用于对象上来分,这种方式可分为类模式和对象模式两种。 类模式: 用于处理类与子类之间的关系,这些关系通过继承来建立,是静态的,在编译时刻便确定下来了。 GoF中的工厂方法、(类)适配器、模板方法、解释器属于该模式。 对象模式: 用于处理对象之间的关系,这些关系可以通过组合或聚合来实现,在运行时刻是可以变化的,更具动态性。 GoF 中除了以上 4 种,其他的都是对象模式。 GoF的23种设计模式的功能 前面说明了 GoF 的 23

【java设计模式】-00目录

混江龙づ霸主 提交于 2020-12-18 08:45:00
开篇 【java设计模式】-01设计模式简介 创建型模式: 【java设计模式】-02工厂模式(Factory Pattern) 【java设计模式】-03抽象工厂模式(Abstract Factory Pattern) 【java设计模式】-04单例模式(Singleton Pattern) 【java设计模式】-05建造者模式(Builder Pattern) 【java设计模式】-06原型模式(Prototype Pattern) 结构型模式: 【java设计模式】-07适配器模式(Adapter Pattern) 【java设计模式】-08桥接模式(Bridge Pattern) 【java设计模式】-09组合模式(Composite Pattern) 【java设计模式】-10装饰器模式(Decorator Pattern) 【java设计模式】-11外观模式(Facade Pattern) 【java设计模式】-12享元模式(Flyweight Pattern) 【java设计模式】-13代理模式(Proxy Pattern) 行为型模式: 【java设计模式】-14责任链模式(Chain of Responsibility Pattern) 【java设计模式】-15命令模式(Command Pattern) 【java设计模式】-16解释器模式