- 博客(114)
- 资源 (10)
- 收藏
- 关注
原创 网络协议学习:虚拟路由冗余协议 VRRP
虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,是一种用于提高网络可靠性的容错协议。通过VRRP,可以在主机的下一跳设备出现故障时,及时将业务切换到备份设备,从而保障网络通信的连续性和可靠性。...
2022-08-15 14:35:33
1282
8
原创 分布式事务:两阶段提交与三阶段提交
满足ACID(原子性、一致性、隔离性、持久性)的一组操作,可以被称为一个事务。随着计算机系统的发展,越来越多的采用分布式的架构来对外提供服务,但是,不同的机器的处理性能、存储性能、网络状态等各有不同,让分布式集群始终对外提供可用的一致性服务一直是需要处理的问题。为了保证数据变更请求在整个分布式环境下正确地执行,不会导致部分服务器暂时崩溃导致整个集群提供的服务和数据不再相同,在整个分布式系统处理数据变更请求的过程中,需要引入分布式事务的概念。...
2022-07-05 17:12:46
5864
1
原创 ZooKeeper 8:请求处理逻辑与源码分析
当客户端需要和 ZooKeeper 服务端进行相互协调通信时,首先要建立该客户端与服务端的连接会话,在会话成功创建后,ZooKeeper 服务端就可以接收来自客户端的请求操作了。ZooKeeper集群在收到事务性会话请求后,主要依次进行四个部分的处理逻辑:预处理阶段、事务处理阶段、事务执行阶段、响应客户端。这种处理就像流水线一样,也是责任链模式的一种实现。...
2022-06-30 15:28:57
662
原创 ZooKeeper 7:数据读写——原子广播协议ZAB
ZAB(ZooKeeper Atomic Brocadcast)协议,ZooKeeper原子广播协议,是一个分布式一致性算法,让ZooKeeper拥有了崩溃恢复和原子广播的能力,保证集群中的数据一致性。
2022-06-29 17:54:38
796
原创 ZooKeeper 6:分布式系统及相关理论
分布式计算机系统(Distributed Computer System),是指由多台分散的计算机,经互连网络的联接而形成的系统,系统的处理和控制功能分布在各个计算机上。分布式计算机系统又简称为分布式系统。换个方式说,在一组物理上不相连的机器上提供服务,但是对于用户来说就像一台机器在工作一样,就是一个分布式系统...
2022-06-29 15:32:55
374
原创 ZooKeeper 5:集群模式
ZooKeeper作为目前开源技术体系的无可替代的基础组件,首先要保证自身的高可用,也就是对于部分服务下线要有一定的容忍能力,不能说ZooKeeper突然挂了所有的服务都跟着寄了。为保证高可用,ZooKeeper提供了集群模式,或者说是Master/Slave架构,防止单点故障影响整个服务。......
2022-06-28 18:39:30
648
原创 远程过程调用RPC 5:Dubbo路由
Dubbo在服务治理方面提供了路由功能,主要是决定一次Dubbo服务调用时调用的目标服务器。dubbo主要支持三种路由方式:条件路由、脚本路由、标签路由、扩展SPI实现自定义路由。
2022-06-24 15:37:52
1005
原创 网络协议学习:通用网络虚拟化封装GENEVE
GENEVE(Generic Network Virtualization Encapsulation,通用网络虚拟化封装),是一种虚拟化隧道通信技术,定义于RFC 8926,相比于之前类似的技术,GENEVE的一点重大区别在于:协议的元数据本身是可扩展的。GENEVE提供了可扩展的GENEVE header,让业务更加灵活。...
2022-06-17 17:01:27
5457
原创 网络协议学习:等价多路径路由ECMP
ECMP是指,到达一个目的地有多条相同度量值的路由项(路由路径),这样就可以使用不超过3条这样的路径来转发流量。
2022-06-17 14:58:02
5712
1
原创 ZooKeeper 4:会话处理与其源码分析
ZooKeeper是一个**服务器-客户端**结构的应用,客户端与服务器之间需要建立一个连接,而这个连接就是一个会话。客户端与服务端的交互操作中都离不开会话的相关的操作。
2022-06-16 17:24:23
330
原创 ZooKeeper 1:简介与安装
ZooKeeper 是分布式应用程序的分布式的开源的协调服务。它公开了一组简单的原语,分布式应用程序可以在这些原语的基础上实现更高级别的同步、配置维护、组和命名服务。它被设计为易于编程,并使用一种数据模型,该模型以熟悉的文件系统目录树结构为样式。......
2022-06-10 11:07:28
376
原创 概念区分:灰度发布、蓝绿发布、滚动发布
线上的项目最容易出现问题的时候就是发布的过程中。如果将某变化较大的版本一次全部线上发布给用户,遇到生产事故对用户的影响会非常大,甚至有时需要紧急回滚到前一版本。因此在发布的时候可以采取一些措施来防止问题的扩散。常见的发布方案有:蓝绿发布、滚动发布、灰度发布...
2022-06-09 17:16:03
13161
3
原创 设计模式9 代理模式
为另一个对象提供一个替身或占位符以控制对这个对象的访问,是代理模式的定义代理模式可以分为静态代理和动态代理。静态代理:由程序员创建或特定工具自动生成源代码,在对其编译。在程序员运行之前,代理类.class文件就已经被创建了动态代理:在程序运行时通过反射机制动态创建...
2022-06-09 14:58:11
145
原创 网络技术学习:虚拟专用网络
虚拟专用网(Virtual Private Network,VPN)通常是指在公共网络上,利用隧道等技术,建立一个临时的、安全的、逻辑上的专用网络。
2022-06-09 11:45:35
1438
原创 Spock测试框架
Spock是一个测试框架,基于BDD(行为驱动开发)思想实现。它结合Groovy动态语言的特点,提供了各种标签,并采用简单、通用、结构化的描述语言,让编写测试代码更加简洁、高效。常用的测试框架Junit、JMock、mockito各有所长,但是各种框架在开发过程中写出的测试风格各异,难以阅读,使得测试变成了一个门槛越来越高,越来越难以实现的模块。直观的来说,Spock是一种有标签化属性的一种语言,通过给出的多种标签(given、when、then、where)去描述代码应该实现什么功能。Spock自带M
2022-06-08 18:02:28
1367
原创 概念区分:API SPI SDK
Application Programming Interface,Service Provider Interface,Software Development Kit
2022-06-07 17:27:22
1046
原创 远程过程调用RPC 4:RPC服务框架Dubbo
作为一个RPC框架,Dubbo提供了**RPC通信**与**微服务治理**两大关键能力。这意味着,使用Dubbo开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用Dubbo提供的丰富服务治理能力,可以实现诸如**服务发现**、**负载均衡**、**流量调度**等服务治理诉求。同时Dubbo是**高度可扩展**的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。......
2022-06-06 15:27:35
337
原创 远程过程调用RPC 3:高性能的RPC框架
一个高性能的RPC框架应该拥有在一些模块实现一些基本功能并提升自己的性能,可以是:- 服务发现与注册- 线程调度模型- I/O调度模型- 序列化框架- 负载均衡策略- 网络传输
2022-06-02 17:56:46
763
原创 网络协议学习:虚拟可扩展局域网VxLAN
简介VxLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网),是一种虚拟化隧道通信技术。它是一种 Overlay技术。隧道技术:类似于之前写过的GRE隧道技术,VxLAN也是一种隧道技术。相当于在底层物理网络上,借助UDP层构建逻辑网络Overlay技术:覆盖网络技术,VxLAN是数据中心三大Overlay技术之一Overlay技术简介Overlay技术是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现
2022-05-31 14:31:35
1199
原创 网络协议学习:通用路由封装协议GRE
隧道技术 Tunneling网络隧道技术(Tunneling)指的是利用一种网络协议来传输另一种网络协议,它主要利用网络隧道协议来实现这种功能。简单来说,使用隧道技术可以理解为,在一些网络链路中使用汽车运输载荷,在一些网络链路中使用渡轮运输载荷,汽车无法行驶在水上,但是可以把整个汽车封装在轮渡中进行运输。例如如上图所示,某网络拓扑分布在北京Region和上海Region,可以使用隧道技术将物理上不连续的子网连接起来。Tunnel是一个虚拟的点对点的连接,在实际中可以看成仅支持点对点连接的虚拟接
2022-05-30 17:23:08
2466
原创 高级Linux系统 常用命令与知识点
第一章 基本背景Linux系统特点开放性,多用户,多任务,良好的用户界面,设备独立性,丰富的网络功能,可靠的系统安全,良好的可移植性Linux系统组成内核、Shell、文件系统、应用程序Linux系统版本点分隔的3段数字组成,r.x.y ,比如3.10.0-327。r:目前发布的内核主版本x:偶数表示稳定版本;奇数表示开发版本y:错误修补的次数第二章 系统安装硬盘分区命名:格式/dev/xxyN/dev:Linux系统中所有设备文件所在的目录名xx:分区名的前两个字母表示分区所在
2022-01-06 21:59:30
3393
1
原创 k8s平台微服务部署
涉及的微服务涉及三个微服务的demo:服务注册与发现:eureka-server管理服务:admin-service用户服务:user-service管理服务和用户服务会注册到eureka上,当访问 Admin 服务的 add user api,Admin 服务会调用 User 服务的 add user api,写入到 mysql数据库上。生成docker镜像通过dockerfile构建maven项目。在Docker 17.05多阶段构建推出之后,我们只需要维护一个Dockerfile文件
2021-12-28 12:52:22
6253
2
原创 设计模式8 命令模式
定义命令模式(Command Pattern)将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志。以及支持可撤销的操作。 ——《HEAD First 设计模式》命令模式将发出请求的责任和执行请求的责任分割开。采用的方式是就是将请求封装为一个对象,这样请求的发出者和执行者通过命令对象进行沟通。也可以对命令对象进行储存、传递、调用、增加与管理等额外的功能。主要角色抽象命令类(Command):声明执行命令的接口。ConcreteCommand(具体命令类
2021-12-22 23:41:28
368
原创 大数据理论与实践9 分布式数据仓库Inceptor
简介定位:分布式通用SQL引擎:支持Hyperbase、Search、ArgoDB、StellarDB和Slipstream等核心数据库和计算引擎。分布式关系型数仓:基于Hive和Spark,主要用于离线分析。原理系统架构InceptorServerconnector:为BI、ETL工具提供标准JDBC、ODBC接口。SQL Compiler包括:SQL语法解析器、规则和代价优化器、代码生成器。PL/SQL Compiler包括:存储过程解析器、控制流优化器、并行优化器。Transac
2021-12-14 00:12:34
5466
原创 大数据理论与实践11 实时流处理引擎Slipstream
背景介绍批处理与流处理:批处理是进行批量处理从图上可以看出,它具有调度延时和处理延时。流处理是进行流式处理它更能满足低延时的需求。场景的批处理框架有MapReduce、Spark Core、Inceptor(Nucleon)、Flink Dataset 等。流式计算框架包括:基于事件驱动(Event-driven)的Storm Core(攒一小批处理)、Flink DataStream、Slipstream,基于微型批处理(Micro-batch)的:Storm Trident、Spar
2021-11-26 15:30:43
2457
原创 大数据理论与实践10 分布式NewSQL数据库Hyperbase
一个重量级的组件,原生HBase不支持SQL(NoSQL),星环Hyperbase提供SQL的支持。简介概念高可靠、可伸缩、高并发、实时(实时随机读写)、面向列(存储和优化以列为单位)的分布式NewSQL数据库。基于Hbase(Hadoop Database,是Google Bigtable的开源实现)实现。NewSQL数据库:NoSQL+RDBMS。Key-Value数据库:主要通过Key实现数据的增删改查,以及扫库操作。列式存储:按列族存储,可以自由添加列,对Schema限制较少,用于存
2021-11-26 14:41:08
1312
原创 大数据理论与实践 源码分析 YARN资源调度策略
YARN资源调度策略调度流程容量调度器概述源码分析FIFO调度器源码分析公平调度器简述源码阅读参考对于YARN的介绍,可以参考之前的文章:大数据理论与实践4 分布式资源管理系统YARN根据官方文档,YARN支持了三种资源调度策略,分别是:FIFO调度器 FIFO Scheduler容量调度器 Capacity Scheduler公平调度器 Fair Scheduler下面分别来看看这几个调度器是如何具体实现的。源码来自Hadoop3.3.1调度流程图源:【Yarn源码分析】FairS
2021-11-22 23:49:11
1297
原创 大数据理论与实践 源码分析 YARN高可用机制
对于YARN的介绍,可以参考之前的文章:大数据理论与实践4 分布式资源管理系统YARNRM高可用ResourceManager (RM) 负责跟踪集群中的资源,并调度应用程序
2021-11-21 22:36:20
1431
原创 设计模式7 适配器模式与外观模式
适配器模式定义适配器模式(Adapter Pattern)将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 ——《HEAD First设计模式》适配器模式分为类结构型模式和对象结构型模式两种。主要角色目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。客户想使用的那个类或接口。可以理解为出国旅行使用的那个充电子插头。适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。是实际上工作的那个类。可以理解为出国旅行,酒店
2021-11-15 23:50:16
415
原创 大数据理论与实践8 分布式消息队列Kafka
Kafka简介Kafka是一个基于发布/订阅的分布式消息系统。可以理解成一个小存储,我们可以往上发东西,回头会有人去那里读出来。特性消息持久化:采用时间复杂度O(1)的磁盘存储结构,即使TB级以上数据也能保证常数时间的访问速度高吞吐:即使在廉价的商用机器上,也能达到单机每秒10万条消息的传输高容错:多分区多副本易扩展:新增机器,集群无需停机,自动感知同时支持实时和离线数据处理(更多用在实时)原理基本概念角色:Broker(代理)Kafka的一个实例或节点,一个或多个Broke
2021-11-05 15:41:19
1156
原创 设计模式6 工厂模式
定义"工厂模式"分为三类:简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)简单工厂模式可以帮助开发人员创建不同类型的对象,将对象创建交给专门的工厂类处理,而不是直接将对象实例化。工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化哪一个。工厂方法模式把实例化推迟到子类中。抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。例子均来自《HEAD First设计模式》
2021-11-03 16:47:22
127
原创 大数据理论与实践6 分布式ETL工具Sqoop
ETL是指数据收集层,指的是数据抽取(Extract)、转换(Transform)、加载(Load),在真正的大数据工作中,很大的工作量都在做这一块的内容。Sqoop简介只要用于在Hadoop和关系数据库之间进行批量数据迁移的工具。Hadoop:HDFS、Hive/Inceptor、HBase/Hyperbase基于MapReduce实现面向大数据集的批量导入导出,将输入数据集分为N个切片,然后启动N个Map任务并行传输(Sqoop 1不进行Reduce)。提供多种Sqoop连接器:内置的有经过优
2021-10-29 20:50:01
953
原创 大数据理论与实践7 分布式数据采集工具Flume
FlumeFlume简介原理基本概念组件Source组件Channel组件Sink组件数据流Flume架构单层架构多层架构使用安装Agent配置Flume运行参考Flume简介Flume是一个分布式海量数据采集、聚合和传输系统。可以看做一个管道系统,从数据源到数据目的地。数据源可以是文件、日志、传感器等,目的地可以是HDFS、NoSQL等等。数据流模型:Source → Channel(暂存) → Sink(取数据并交给目的地)。套件组配很灵活,随意组配。在Channel这块,支持事务,支持重读重写
2021-10-29 17:54:01
1139
原创 大数据理论与实践5 分布式计算框架MapReduce和Spark
MapReduce简介MapReduce是一个面向离线批处理的分布式计算框架。离线:对时间不敏感,慢慢算批处理:数据攒一批,处理一批(相对于流处理)分布式编程模型:MapReduce程序被分为Map(映射)阶段和Reduce(化简)阶段特点:计算跟着数据走良好的扩展性:计算能力随着节点数增加,近似线性增长高容错状态监控适合海量数据的离线批处理降低了分布式编程的门槛使用场景:对时间不敏感,非流式数据(不适用OLAP、流计算、DAG计算)原理示例WordCount示例实际上
2021-10-29 17:52:56
1966
原创 设计模式5 单例模式
定义单例模式(Singleton Pattern)确保一个类只有一个实例,并提供一个全局访问点。——《HEAD First 设计模式》主要角色一个只能有一个实例的类:Singleton类定义了一个getInstance操作,允许客户端访问它的唯一实例,getInstance是一个静态方法,主要负责创建和返回自己的唯一实例。而构造函数是private的,其他类无法访问到。例子源自《HEAD First 设计模式》的巧克力工厂。巧克力工厂里面只有一个锅炉进行工作,不能创建其他锅炉实例。pu
2021-10-26 15:04:13
204
原创 设计模式4 装饰者模式
定义装饰模式(Decorator Pattern)是动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。——《HEAD First 设计模式》主要角色抽象被装饰者Component:最原始的对象,需要被装饰的。具体被装饰者ConretetComponent:抽象装饰者 Decorator:一个抽象类,在其属性里必然有一个private变量指向Component抽象构件。具体装饰者。...
2021-10-25 23:25:17
133
Java哈夫曼编码实现压缩文本文件
2019-07-25
Java学生选课系统
2019-07-25
智能车自动寻径ZY10A现成代码
2018-11-13
机票预订系统C++
2018-10-14
Qt及Qt Quick开发实战精解
2018-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人